Cadastro funcional postado no forum para possiveis melhorias
19/07/2008
0
Pessoal tive uma idéia e resolvi deixar um modelo de cadastro que utilizo totalmente funcional aqui no fórum para que todos pudessem melhorá-los.
Foi utilizado conexão dbexpress, banco firebird com o trio de componentes:
sqldataset, datasetprovider e clientdataset.
No caso é um cadastro de funcionários e o sql utilizado é:
O evento NewRecord do ClientDataSet é:
A rotina de auto incremento é:
E o código do cadastro é:
Espero que seja de grande valia e todos colaborem para melhorar o código.
Foi utilizado conexão dbexpress, banco firebird com o trio de componentes:
sqldataset, datasetprovider e clientdataset.
No caso é um cadastro de funcionários e o sql utilizado é:
SELECT * FROM FUNCIONARIOS WHERE IDFUNCIONARIO=:IDFUNCIONARIO
O evento NewRecord do ClientDataSet é:
begin cdsfUNCIONARIOS.FieldByName(´IDFUNCIONARIO´).asinteger:=0; CdsFuncionarios.FieldByName(´DATACADASTRO´).AsDateTime:=date; cdsFuncionarios.FieldByName(´CEP´).AsString:=DmEmpresa.CdsEmpresaCEP.asstring; cdsFuncionarios.FieldByName(´CIDADE´).AsString:=DmEmpresa.CdsEmpresaCidade.AsString; cdsFuncionarios.FieldByName(´UF´).AsString:=DmEmpresa.CdsEmpresaUF.asstring; CdsFuncionarios.FieldByName(´SITUACAO´).AsString:=´SIM´; end;
A rotina de auto incremento é:
procedure TDmFuncionarios.CdsFuncionariosBeforePost(DataSet: TDataSet); begin if DataSet.State=dsInsert then CdsFuncionarios.FieldByName(´IDFUNCIONARIO´).AsInteger:=DMTABELAS.GetNewID(´GEN_FUNCIONARIOS_ID´); end;
E o código do cadastro é:
unit UFuncionarios; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ExtCtrls, StdCtrls, DBCtrls, DB, Mask, Buttons, jpeg, DBClient, BmsXPTopBar; type TFrmFuncionarios = class(TForm) bar1: TStatusBar; Panel1: TPanel; pgc1: TPageControl; TabSheet1: TTabSheet; Panel2: TPanel; pnlPrincipal: TPanel; Label1: TLabel; DataSource1: TDataSource; Label2: TLabel; dbPrimeiro: TDBEdit; GroupBox1: TGroupBox; Label9: TLabel; DBEdit8: TDBEdit; Label11: TLabel; DBEdit10: TDBEdit; Label13: TLabel; DBEdit12: TDBEdit; Label14: TLabel; DBEdit13: TDBEdit; Label15: TLabel; DBEdit14: TDBEdit; Label16: TLabel; dbCPF: TDBEdit; Label17: TLabel; DBEdit16: TDBEdit; Label18: TLabel; DBEdit17: TDBEdit; GroupBox2: TGroupBox; Label3: TLabel; DBEdit3: TDBEdit; DBEdit4: TDBEdit; Label4: TLabel; Label5: TLabel; DBEdit5: TDBEdit; Label6: TLabel; DBEdit6: TDBEdit; Label7: TLabel; DBComboBox1: TDBComboBox; Label8: TLabel; DBEdit7: TDBEdit; btnInserir: TBitBtn; btnSalvar: TBitBtn; btnCancelar: TBitBtn; btnPesquisar: TBitBtn; btnExcluir: TBitBtn; Label10: TLabel; DBEdit9: TDBEdit; Label12: TLabel; DBEdit11: TDBEdit; Label19: TLabel; DBEdit18: TDBEdit; Label20: TLabel; DBEdit19: TDBEdit; Label21: TLabel; DBEdit20: TDBEdit; Label22: TLabel; DBCheckBox1: TDBCheckBox; Label23: TLabel; DBEdit21: TDBEdit; DBText1: TDBText; Label24: TLabel; DBEdit22: TDBEdit; Label25: TLabel; DBEdit23: TDBEdit; DBText2: TDBText; BmsXPTopBar1: TBmsXPTopBar; procedure btnInserirClick(Sender: TObject); procedure btnSalvarClick(Sender: TObject); procedure btnCancelarClick(Sender: TObject); procedure DataSource1StateChange(Sender: TObject); procedure btnExcluirClick(Sender: TObject); procedure btnPesquisarClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure dbCPFExit(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: Char); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private FDataSet: TClientDataSet; procedure Inserir; procedure Salvar; procedure Cancelar; procedure Pesquisar; procedure Excluir; procedure ControlarTela(filtro: integer); public property DataSet: TClientDataSet read FDataSet write FDataSet; end; var FrmFuncionarios: TFrmFuncionarios; implementation uses UDmTabelas, UProcurar, UProcurarFuncionarios, UFuncoes, UDmFuncionarios; {$R *.dfm} procedure TFrmFuncionarios.FormShow(Sender: TObject); begin DataSet := DmFuncionarios.CdsFuncionarios; ControlarTela(1); end; //=============INSERIR========================================================== procedure TFrmFuncionarios.btnInserirClick(Sender: TObject); begin Inserir; end; //==============SALVAR========================================================== procedure TFrmFuncionarios.btnSalvarClick(Sender: TObject); begin Salvar; end; //======================= CANCELAR ============================================= procedure TFrmFuncionarios.btnCancelarClick(Sender: TObject); begin Cancelar; end; //====================== PESQUISAR============================================== procedure TFrmFuncionarios.btnPesquisarClick(Sender: TObject); begin Pesquisar; end; //======================= EXCLUIR ============================================== procedure TFrmFuncionarios.btnExcluirClick(Sender: TObject); begin Excluir; end; //======CONTROLAR ESTADO DOS BOTÕES============================================= procedure TFrmFuncionarios.DataSource1StateChange(Sender: TObject); const estados: array[TDataSetState] of string = (´Fechado´, ´Consultando´, ´Alterando´, ´Inserindo´, ´´, ´´, ´´, ´´, ´´, ´´, ´´, ´´, ´´); begin btnInserir.Enabled := datasource1.State in [dsBrowse, dsInactive]; btnSalvar.Enabled := datasource1.State in [dsinsert, dsedit]; btnCancelar.Enabled := datasource1.State in [dsinsert, dsedit]; btnExcluir.Enabled := datasource1.State in [dsBrowse]; btnPesquisar.Enabled := datasource1.State in [dsBrowse, dsInactive]; bar1.Panels[0].text := Estados[Datasource1.state]; end; //====VALIDAR CPF=============================================================== procedure TFrmFuncionarios.dbCPFExit(Sender: TObject); begin if (tbIsCPF(DataSet.FieldByName(´CPF´).AsString) = false) and (DataSource1.State in [dsinsert, dsedit, dsBrowse]) then begin ShowMessage(´CPF inválido´); DataSet.FieldByName(´CPF´).AsString := ´´; end; end; //============================================================================== procedure TFrmFuncionarios.FormKeyPress(Sender: TObject; var Key: Char); begin //======Troca TAB por ENTER===================================================== if key = 13 then begin Key := 0; Perform(Wm_NextDlgCtl, 0, 0); end; //=======Fecha Janelas ao apertar ESC=========================================== if key = 27 then close; end; //============================================================================== procedure TFrmFuncionarios.ControlarTela(filtro: integer); begin pgc1.ActivePageIndex := 0; //pgc é um pagecontrol if pgc1.Pages[0].CanFocus then pgc1.Pages[0].SetFocus; if filtro = 0 then if dbPrimeiro.CanFocus then dbPrimeiro.SetFocus else if filtro = 1 then if btnInserir.CanFocus then btnInserir.SetFocus; end; //============================================================================== procedure TFrmFuncionarios.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin //se a tecla apertada for enter, botao gravar recebe o foco e o click if key = VK_END then begin if btnSalvar.CanFocus then btnSalvar.SetFocus; btnSalvar.Click; end; end; procedure TFrmFuncionarios.Cancelar; begin with DataSet do begin if MessageDlg(´Deseja realmente cancelar?´, mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin Cancel; CancelUpdates; Close; if btnInserir.CanFocus then btnInserir.SetFocus; ControlarTela(1); end else ControlarTela(0); end; end; procedure TFrmFuncionarios.Excluir; begin with DataSet do begin if MessageDlg(´Deseja realmente excluir este registro?´, mtConfirmation, [mbyes, mbno], 0) = mryes then begin delete; if ApplyUpdates(0) <> 0 then begin CancelUpdates; ShowMessage(´Não é possível excluir este registro, ´ + ´verifique se existem relacionamentos!´); end; //fim do if end; Close; ControlarTela(1); end; //fim do with end; procedure TFrmFuncionarios.Inserir; begin with DataSet do begin if not active then open; Append; end; //fim do with Controlartela(0); end; procedure TFrmFuncionarios.Pesquisar; begin FrmProcurarFuncionarios := TFrmProcurarFuncionarios.create(self); try if FrmProcurarFuncionarios.ShowModal = mrOk then begin with DataSet do begin Close; Params[0].AsInteger := DmFuncionarios.CdsProcuraFuncionarioIDFuncionario.AsInteger; Open; ControlarTela(0); end; // fim do with end; // fim do if finally DmFuncionarios.CdsProcuraFuncionario.close; FrmProcurarFuncionarios.Free; end; end; procedure TFrmFuncionarios.Salvar; begin with DataSet do begin post; if ApplyUpdates(0) <> 0 then begin CancelUpdates; MessageDlg(´Erro na Gravação!´, mtError, [mbok], 0); end else MessageDlg(´Registro salvo com sucesso!´, mtInformation, [mbok], 0); Close; end; // fim do with ControlarTela(1); end; procedure TFrmFuncionarios.FormClose(Sender: TObject; var Action: TCloseAction); begin DataSet.Close; DmTabelas.CdsListaFuncionarios.close; end; end.
Espero que seja de grande valia e todos colaborem para melhorar o código.
Frostlost
Curtir tópico
+ 0
Responder
Posts
19/07/2008
Altingon
Obrigado por compartilhar com a galera amigo....parabéns....se tivesse umas telas do cadastro ajudaria bastante tambem...
Responder
19/07/2008
Frostlost
Se precisar da tela posso enviar no seu e-mail. Entre em contato por frostlost@yahoo.com.br solicitando a mesma.
Abraços
Claudio Stein Junior
Abraços
Claudio Stein Junior
Obrigado por compartilhar com a galera amigo....parabéns....se tivesse umas telas do cadastro ajudaria bastante tambem...
[/img]
Responder
Clique aqui para fazer login e interagir na Comunidade :)