[delphi-br] POO em 3 camadas

2010-07-20 Por tôpico Pedro de Souza
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

2010-06-15 Por tôpico Pedro de Souza
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

2010-06-13 Por tôpico Pedro de Souza
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

2010-06-12 Por tôpico Pedro de Souza
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]