[delphi-br] POO em 3 camadas
Boa noite pessoal, programei por vários anos em VB6 e depois de um tempo sem programar estou voltando a ativa com o D2010. Aprendi rápido o básico como a sintaxe e os componentes, mais estou tendo problemas com POO em 3 camadas. Estou fazendo um cadastro simples onde tenho o seguinte cenário: 1 DataModule : TSQLConnection, TSQLTable, TSQLStoredProc 1 Form: DataSetprovider, ClientDataSet, DataSource, DBNavigator, os campos das tabelas DBEdit, TDBComboBox e os botões de ação incluir, excluir, etc... 1 Unit: que é a minha classe. Consigo navegar pelos regiostros mais quando tento fazer o cadastro recebo a seguinte mensagem: Access violation at address 0060680C in module 'Cadastro.exe' Write of address 0004. Pesquisando percebi que a referência da minha classe está como nil quanto chamo o método incluir, mais como carregar a classe corretamente? Me corrijam se eu estiver errado. Segue abaixo o código que estou usando: A parte em negrito no form é onde acontece o erro. Coloquei um if para tratar o erro mais como corrigir? Desde já agradeço a ajuda de vocês. DATAMODULE: unit DMAnoLetivo; interface uses SysUtils, Classes, DSConnect, DBClient, SConnect, DB, MConnect, WideStrings, DBXOracle, SqlExpr, FMTBcd, CLCadAnoLetivo, Dialogs; type TDTMAnoLetivo = class(TDataModule) ConnR110ANO: TSQLConnection; TableR110ANO: TSQLTable; SpR110ANO: TSQLStoredProc; TableR110ANOCODANO: TFMTBCDField; TableR110ANOANOLET: TFMTBCDField; TableR110ANOINIANO: TSQLTimeStampField; TableR110ANOFINANO: TSQLTimeStampField; TableR110ANOSITANO: TWideStringField; private { Private declarations } public { Public declarations } function Incluir(FCodAno :TAnoLetivo):Boolean; end; var dtmAnoLetivo: TDTMAnoLetivo; implementation {$R *.dfm} {TDTMAnoLetivo} function TDTMAnoLetivo.Incluir(FCodAno :TAnoLetivo):Boolean; begin result := false; try if not ConnR110ANO.Connected then ConnR110ANO.Open; if spR110ANO.Active then spR110ANO.Close; spR110ANO.ClearFields; spR110ANO.StoredProcName := 'spCadAnoLetivo'; spR110ANO.Params.ParamByName('p_CodAno').Value := FCodAno.CodAno; spR110ANO.Params.ParamByName('p_AnoLet').Value := FCodAno.AnoLet; spR110ANO.Params.ParamByName('p_IniAno').Value := FCodAno.IniAno; spR110ANO.Params.ParamByName('p_FinAno').Value := FCodAno.FinAno; spR110ANO.Params.ParamByName('p_SitAno').Value := FCodAno.SitAno; spR110ANO.ExecProc; result := true; except on e:exception do ShowMessage('Houve um problema de comunicação com o banco de dados!'); end; end; end. FORM: unit frmCadAnoLetivoUnit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, RzBckgnd, RzBorder, ExtCtrls, DBCtrls, Buttons, Mask, DB, DBClient, Provider; type TfrmCadAnoLetivo = class(TForm) Label2: TLabel; Label1: TLabel; RzBorder: TRzBorder; RzSeparator: TRzSeparator; StatusBar: TStatusBar; Label3: TLabel; Label4: TLabel; DBNavigator: TDBNavigator; btAlterar: TBitBtn; btCancelar: TBitBtn; btExcluir: TBitBtn; btAjuda: TBitBtn; btFechar: TBitBtn; btPesquisar: TBitBtn; btIncluir: TBitBtn; Label5: TLabel; cboSituacao: TDBComboBox; txtDataFim: TDBEdit; txtDataInicio: TDBEdit; txtAnoLetivo: TDBEdit; cboCodAnoLetivo: TDBComboBox; DataSetProvider: TDataSetProvider; ClientDataSet: TClientDataSet; ClientDataSetCODANO: TFMTBCDField; ClientDataSetANOLET: TFMTBCDField; ClientDataSetINIANO: TSQLTimeStampField; ClientDataSetFINANO: TSQLTimeStampField; ClientDataSetSITANO: TWideStringField; DataSource: TDataSource; tdbAnoLetivo: TDBText; procedure btFecharClick(Sender: TObject); procedure btIncluirClick(Sender: TObject); procedure btCancelarClick(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } procedure LimparCampos; function ValidarCampos :boolean; public { Public declarations } end; var frmCadAnoLetivo: TfrmCadAnoLetivo; implementation {$R *.dfm} uses CLCadAnoLetivo, DMAnoLetivo; var FAnoLetivo : TAnoLetivo; {Procedimentos de iniialização e rotinas de limpeza de campos} procedure TfrmCadAnoLetivo.LimparCampos; begin cboCodAnoLetivo.Clear; txtAnoLetivo.Clear; txtDataInicio.Clear; txtDataFim.Clear; cboSituacao.Clear; end; {Proedimentos de validação de campo} function TfrmCadAnoLetivo.ValidarCampos:boolean; begin ValidarCampos := true; if txtAnoLetivo.Text = '' then begin Application.MessageBox('O campo ano letivo não pode estar vazio!', 'Alerta', MB_ICONEXCLAMATION); ValidarCampos := false; txtAnoLetivo.SetFocus; exit; end; if txtDataInicio.Text = '' then begin Application.MessageBox('O campo data inícial não pode estar vazio!', 'Alerta', MB_ICONEXCLAMATION); ValidarCampos := false;
Re: Res: [delphi-br] desenvolver um gerador de relatório para mi nha aplicação
HEHEHEH realmente vejo que é bem complicado desenvolver um gerador de relatório. Isso pq eu queria desenvolver algo de nível básico para o usuário. rsrsrs Vou continuar pesquisando, derrepente ter os relatórios já gerador seja a melhor forma por enquanto e no futuro pode até ser viável criar um. Muito obrigado a opinião de todos vocês. Abs, Pedro - Original Message - From: Berdam To: delphi-br@yahoogrupos.com.br Sent: Monday, June 14, 2010 3:30 PM Subject: Res: Res: [delphi-br] desenvolver um gerador de relatório para minha aplicação pedro , o link está fora, existe outro ?.. Eu estava tentando fazer algum gerador em rave, mas o acesso as classes dele são meio complicadas, gostaria de criar as bandas em tempo de execução, mas por enquanto sem sucesso, alguém sabe algum projeto com rave ?? -- Uberdam Cavaletti Programador Delphi Formado em Tecnologia da Informação Pós-graduado em desenvolvimento Java. Professor Tópicos Especias em BD - Unoesc Xanxerê Professor Estruturas de Dados - Unoesc Xanxerê http://buscatextual.cnpq.br/buscatextual/visualizacv.jsp?id=K4251629Y0 -- De: Vagner Gois vjbgg...@yahoo.com.br Para: delphi-br@yahoogrupos.com.br Enviadas: Segunda-feira, 14 de Junho de 2010 9:32:58 Assunto: Res: [delphi-br] desenvolver um gerador de relatório para minha aplicação Ola Pedro Eu desenvolvi um gerador assim, com base no QuickReport. Não foi facil, mas o resultado foi extremamente satisfatório. Naturalmente que não da pra comparar com um Crystal da vida... rsrsrsrsrs Mas deu pra suprir as necessidades que eu precisava. Eu utilizo ele como um EXE chamado por aplicações Cobol e tambem embutido num pequeno ERP em Delphi que eu desenvolvo. Se vc quiser dar uma olhada na interface, acesse snt.50webs.org.br Se tiver interesse em adquiri-lo, entre em contato comigo. sds Vagner SNT | IFX [DB, MK, DBS, PLAYER] :: SRB :: SCR :: SBI web :: http://snt.50webs.org msn :: vagner.g...@hotmail.com skype :: vagner.gois De: Pedro de Souza pedros...@yahoo.com.br Para: DelphiBr delphi-br@yahoogrupos.com.br Enviadas: Sábado, 12 de Junho de 2010 0:17:45 Assunto: [delphi-br] desenvolver um gerador de relatório para minha aplicação Boa noite pessoal, eu tenho uma aplicação e gostaria de integrar nela um gerador de relatório. Andei pesquisando na net, mais gostaria de uma luz para desenvolver um. A idéia é que os usuários finais possam gerar seus próprios relatórios. Alguém poderia me dizer pode onde começar a desenolver este projeto? Agradeço a ajuda. Pedro [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Nenhum vírus encontrado nessa mensagem recebida. Verificado por AVG - www.avgbrasil.com.br Versão: 9.0.829 / Banco de dados de vírus: 271.1.1/2938 - Data de Lançamento: 06/14/10 15:35:00 [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] desenvolver um gerador de relatório para minha aplicação
Dirlei, Paulo primeiramente obrigado pela ajuda. Entendo a complexidade desse criar um gerador de relatório mais essa é uma necessidade que vi que poderia ajudar e muito valorizar meu projeto já que é uma funcionalidade que vemos em grandes sistemas. Vi inicialmente o projeto MKR e achei muito interessante, para inicio seria algo como ele. Vou dar uma pesquisada sobre o ReportBuilder e o FastReport e direi a você qual a conclusão qu terei. Abs, Pedro - Original Message - From: Paulo Coutinho To: delphi-br@yahoogrupos.com.br Sent: Saturday, June 12, 2010 3:21 PM Subject: Re: [delphi-br] desenvolver um gerador de relatório para minha aplicação O FastReport permite a você exibir o report designer dele para que você crie/edite relatórios. Tudo apartir do próprio componente. -- Atenciosamente, Paulo Coutinho. Blog: www.prsolucoes.com/blog Site: www.prsolucoes.com Msn: pa...@prsolucoes.com Skype: paulo.prsolucoes Consultor Certificado Bindows Em 12 de junho de 2010 12:35, Dirlei Dionísio dir...@gmail.com escreveu: Pedro, Criar um gerador de relatórios é uma tarefa árdua. É preciso criar um editor de relatórios, um renderizador para visualizar os relatórios em tela e outro para gerar as páginas para impressão, isso tudo respeitando as configurações de página que podem variar para cada impressora. É possível fazer um, mas a menos que você pretenda comercializar esse gerador, é inviável repassar o custo dessa implementação para seu cliente. Já consegui o que você deseja (permitir aos usuários editar seus próprios relatórios), mas usando algum gerador que já possua essa funcionalidade. Na época, usei o ReportBuilder - um gerador de relatórios pago. Não sei se o Rave ou algum outro gratuito possui essa funcionalidade. Talvez alguém do grupo conheça. Um abraço, -- Dirlei Dionísio Novo artigo: O estágio House do bom programador http://MaisQueBomCodigo.blogspot.com Em 12 de junho de 2010 00:17, Pedro de Souza pedros...@yahoo.com.br escreveu: Boa noite pessoal, eu tenho uma aplicação e gostaria de integrar nela um gerador de relatório. Andei pesquisando na net, mais gostaria de uma luz para desenvolver um. A idéia é que os usuários finais possam gerar seus próprios relatórios. Alguém poderia me dizer pode onde começar a desenolver este projeto? Agradeço a ajuda. Pedro [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM [As partes desta mensagem que não continham texto foram removidas] -- Nenhum vírus encontrado nessa mensagem recebida. Verificado por AVG - www.avgbrasil.com.br Versão: 9.0.829 / Banco de dados de vírus: 271.1.1/2932 - Data de Lançamento: 06/11/10 15:35:00 [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] desenvolver um gerador de relatório para minha aplic ação
Boa noite pessoal, eu tenho uma aplicação e gostaria de integrar nela um gerador de relatório. Andei pesquisando na net, mais gostaria de uma luz para desenvolver um. A idéia é que os usuários finais possam gerar seus próprios relatórios. Alguém poderia me dizer pode onde começar a desenolver este projeto? Agradeço a ajuda. Pedro [As partes desta mensagem que não continham texto foram removidas]