Fórum Cadastro funcional postado no forum para possiveis melhorias #361368
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
Gostei + 0
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)