Beruflich Dokumente
Kultur Dokumente
Clientes { CdCliente, NmCliente, Endereco, CdCidade, Telefone} Cidades { CdCidade, NmCidade, SgEstado} Vendas{CdVenda, CdCliente, DtVenda, Total} ItensVendas { CdVenda, CdProduto, Qtd, VlUnit, SubTotal} Produtos {CdProduto, NmProduto, Preco}
Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares
Configurando o DBE
.V na palheta Configuration e percorra a seguinte rvore: configuration/drives/native . Acesse o drive MSACCESS e veja nas configuraes que aparecem direita se o campo DLL32 est com a DLL IDDA3532.DLL, caso no esteja faa a alterao. .Vamos agora criar o ALIAS. V at a palheta DataBases, e escolha a opo New no menu Object. Outra forma via boto direito do mouse. Escolha como Nome do Drive do Banco de Dados o MSACCESS .
Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares
Configurando o DBE
D ao Alias o nome de BDVENDA. Configure o campo DataBase Name com o caminho no qual voc salvou seu banco de dados BDVENDA.mdb
Componente Panel com a propriedade caption vazia, a propriedade align alClient, e Border Style bsSingle
CRIANDO UM DATAMODULE
CRIANDO UM DATAMODULE
Adicione neste DATAMODULE um table e um datasource para as tabelas de cidade e clientes. Para isso selecione a guia DataAccess da paleta de componentes e insira um componente Table em qualquer parte do formulrio. Altere as seguintes propriedades: DataBaseName: nome do Alias criado no BDE Name: TBLClientes nome dado ao componente TableName: CLIENTES. Tabela do banco de dados que este componente estar Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares representando
CRIANDO UM DATAMODULE
Adicione neste DATAMODULE um table e um datasource para as tabelas de cidade e clientes. Para isso selecione a guia DataAccess da paleta de componentes e insira um componente Table em qualquer parte do formulrio. Altere as seguintes propriedades: DataBaseName: nome do Alias criado no BDE Name: TBLClientes nome dado ao componente TableName: CLIENTES. Tabela do banco de dados que este componente estar Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares representando
CRIANDO UM DATAMODULE
V novamente a pgina Data Access e insira o objeto DataSource. Este componente tem a finalidade de estabelecer a comunicao entre o componente Table e os componentes de controle de dados ( componentes onde os usurios entraro como os dados a serem cadastrados ). Altere as seguintes propriedades:
DataSet: TBLClientes, Name: DtsClientes,
Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares
Adicionando Mscara
MSCARA - usar o Fields Editor. Para acess-lo d um duplo clique sobre o componente table de Clientes (TBLClientes) Em seguida d um clique com o boto direito do mouse sobre esta janela e escolha a opo Add All Fields. A janela com os campos ficar tal qual a figura ao lado. Os campos do tipo TStringField possuem a
propriedade EditMask para a criao da mscara desses.
Eventos
Evento Cdigo OnActivate ( do dtmDados.TblClientes.Open; frmCadClientes ) dtmDados.TblCidades.Open; OnClose ( do frmCadClientes ) dtmDados.TblClientes.Close; dtmDados.TblCidades.Close; OnClick ( do boto btnfechar ) Close; OnClick ( do menu frmCadCliente.ShowModal; Cadastrar/Cliente) Objetivo Abrir as tabelas a serem usadas Fechar as tabelas usadas Para fechar o formulrio Exibir o formulrio de cliente
Campo Lookup
Criando o campo Lookup: no Fields Editor do table TblItensVend a click com o boto direito do mouse e pea : NEW FIELD.
Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares
Cuidados!!
procedure TfrmVendas.DBGrid1Enter(Sender: TObject); begin If frmDados.TblVendas.State in [dsEdit,dsInsert]then {A propriedade State=dsEdit indica que a tabela est em modo de edio e dsInsert em modo de insero, assim voc poder gravar alteraes.} frmdados.TblVendas.post; //O metodo Post grava o registro corrente da tabela de Vendas. end;
Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares
Calculando o SubTotal e o
Selecione o campo CdProduto no Fields Editor do table TblItensVendas e insira o cdigo abaixo no evento OnChange.
procedure TfrmDados.TblItensVendasCdProdutoChange(Sender: TField); begin with QryPrecoProd do begin close; params[0].AsInteger:= TblItensVendasCdProduto.AsInteger; open; end; if TblItensVendas.State = dsBrowse then TblItensVendas.Edit; TblItensVendasVlunit.value:=TblProdutosPreco.value; end;
Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares
Calculando o SubTotal e o
calcular o SubTotal assim que o usurio informar a quantidade adquirida. Para isso iremos utilizar o evento
OnChange do campo Qtd da Tabela ItensVenda. procedure TfrmDados.TblItensVendasQtdChange(Sender: TField); begin TblItensVendasSubTotal.Value:=TblItensVendasQtd.Value*T blItensVendasVlUnit.Value; end;
Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares
Construindo consultas
Construindo consultas
Considere a seguinte consulta a ser realizada neste formulrio: Exibir o nome e telefone de todos os clientes que moram em uma determinada cidade SQL: select C.NmCliente, C.Telefone from Clientes C, Cidades Cid where C.CdCidade=Cid.CdCidade and Cid.NmCidade like : PNmCid No se esquea de configurar as propriedades: Name, DataBaseName, Sql e Params do componente Query.
Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares
Construindo consultas
procedure TForm1.Button1Click(Sender: TObject); begin with QryClienteCid do begin close; params[0].value:= edtCidade.text; open; end end;
Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares
Validao de Dados
procedure TfrmVendas.BtnSalvarClick(Sender: TObject); begin Try if AnalisaCamposObrigatorios()then frmDados.TblVendas.Post ; Except On EDBEngineError do begin ShowMessage('J existe uma venda com este cdigo.'); DBEdtCodigo.SetFocus ; end; end; end;
Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares
Validao de Dados
function TfrmVendas.AnalisaCamposObrigatorios():boolean; begin result:=true; if (frmVendas.DBEdtCodigo.Text='0') then begin ShowMessage('Faltando o cdigo da venda'); frmVendas.DBEdtCodigo.Setfocus; result:=false; end else if (DBLkNmcliente.Text='') then begin ShowMessage('Faltando o nome do cliente'); frmVendas.DBLkNmcliente.Setfocus; result:=false; end
end;
Relatrios