Sie sind auf Seite 1von 45

Deisymar Botega Tavares II CONCIEX - 2003

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

MEU PRIMEIRO PROGRAMA

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

CONSTRUINDO O BANCO DE DADOS


CONTROLE DE VENDA N da Venda: ____________ Data:____________ Cliente:______________________________________________________ Endereo:____________________________________________________ Cidade: _____________________________________________________

Produto ______________ ______________ ______________ ______________ ______________

Qtd _________ _________ _________ _________ _________

ITENS DA VENDA Valor _______ _______ _______ _______ _______

Subtotal ___________ ___________ ___________ ___________ ___________ Total Final: ________

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

CONSTRUINDO O BANCO DE DADOS


Deste formulrio de vendas, seguindo as regras de normalizao de dados podemos extrair as seguintes tabelas:

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

CONSTRUINDO O BANCO DE DADOS


Crie um banco de dados no Access Crie as tabelas definidas anteriormente

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

CONSTRUINDO O BANCO DE DADOS


Resultado da criao das tabelas

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

CONSTRUINDO O BANCO DE DADOS


Resultado da criao das tabelas

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

CONSTRUINDO O BANCO DE DADOS


CRIANDO OS RELACIONAMENTOS

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

Comunicao entre Access e Delphi

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

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

Conhecendo o BDE Explorer

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

Construindo a aplicao em Delphi


Abra o Delphi e crie uma nova aplicao. Ative o boto Save all e salve a Unit1 como UntPrincipal.pas e o project1 como ControleVendas.dpr. Propriedade Name do formulrio dever ser frmPrincipal.

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

Construindo a aplicao em Delphi


menu: Utilizando o componente MainMenu A Barra de Ferramentas: Vamos criar uma barra de ferramentas para o nosso sistema. Para isso vamos adicionar os componentes ImageList e ToolBar ambos da palheta Win32 ToolBar: Para adicionar os botes proceda da seguinte forma: click com o boto direito do mouse e pea um New Button (novo boto). Para distanciar um boto do outro como na figura, logo aps o boto desejado dever adicionar um New Separator.
Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

Construindo a aplicao em Delphi


As imagens: Para adicionarmos as imagens a cada boto iremos usar o componente Imagelist . Selecione este componente e d dois cliques . Adcionando a 1 imagen: Clique no boto ADD escolha o seguinte diretrio: c:\arquivos de programa\arquivos comuns\borland shared\images\buttons\. Clique em abrir. Apague a imagem cinza criada. Passando as figuras para os botes: Para relacionarmos estas figuras com cada boto desejado configure a propriedade Images do ToolBar Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

Construindo a aplicao em Delphi


Ttulo colocado na propriedade Caption do Formulrio

Componente Panel com a propriedade caption vazia, a propriedade align alClient, e Border Style bsSingle

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

CRIANDO UM DATAMODULE

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

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

Construindo um formulrio para cadastro de dados

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

Construindo um formulrio para cadastro de dados


Adicionar um novo formulrio. Salvar a unit com o nome de UntCadCliente e o nome do formulrio dever ser frmCadClientes. DtbText para o cdigo do cliente. Propriedades as serem configuradas:
DataSource: dever conter o datasource correspondente tabela em questo. Neste caso DtsClientes DataField: dever conter o campo da tabela que este componente estar representando. Neste caso: CdCliente

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

Construindo um formulrio para cadastro de dados


DbEdit o nome, o endereo e o telefone do cliente. Propriedades a serem preenchidas: idem ao anterior. DbNavigator - Para conseguirmos adicionar, alterar, excluir e salvar dados na tabela iremos utilizar o componente DbNavigator. Propriedade a ser alterada: DataSource. BitBtn: boto para sair do formulrio. Propriedades a serem alteradas: Caption ( fechar ), Name ( btnfechar ) e glyph ( figura desejada). Panel: para uma melhor interface. Propriedades: veja do formulrio principal.
Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

Construindo um formulrio para cadastro de dados


DbLookupCombox: para a cidade do cliente O campo CdCidade faz referncia a uma outra tabela, a de Cidades. Propriedades a alterar
DataSource - DTSClientes (Tabela principal - Onde est o campo CdCidade) DataField - CdCidade (Campo que ser preenchido na tabela principal) ListSource - DTSCidades (Tabela de origem dos dados a serem pesquisados) ListField - NmCidade;SgEstado (Os campos que sero exibidos no ComboBox. Pode-se usar mltiplas colunas, bastando para isto utilizar o ponto e vrgula para separar os campos) KeyField - CdCidade (Campo que far Botega o relacionamento entre Minicurso_Delphi Conciexii26-05 - Deisymar Tavares as tabelas)

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.

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

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

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

Formulrio Mestre Detalhe para o controle das Vendas

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

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

Abrindo e Fechando Tabelas


Abrindo e fechando as tabelas. No Evento OnActvate do formulrio de Controle de Venda adicione o seguinte cdigo: frmDados.TblVendas.Open; frmDados.TblItensVendas.Open; frmDados.TblClientes.Open; frmDados.TblProdutos.Open;

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

Abrindo e Fechando Tabelas


Lembre-se que devemos fechar estas tabelas quando sairmos deste formulrio. Ento adicione o cdigo abaixo no evento OnClose do formulrio de vendas. with frmDados do begin TblVendas.close; TblItensVendas.Close; TblClientes.Close; TblProdutos.Close; Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares end;

Cdigo para os Botes


Cdigo do Evento OnClick do boto btnInserir: frmDados.TblVendas.Append; //abre um registro em branco na tabela Cdigo do Evento OnClick do boto btnAlterar: frmDados.TblVendas..Edit; // abre o registro para edio (alterao) Cdigo do Evento OnClick do boto btnExcluir: frmDados.TblVendas.Delete; // exclui o registro ativo isto , s dados que esto aparecendo. Cdigo do Evento OnClick do boto btnCancelar: frmDados.TblVendas.Cancel; // cancela a ltima operao que no tenha sido salva Cdigo do Evento OnClick do boto btnSalvar: frmDados.TblVendas.Post; // salva as alteraes
Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

Gerando um formulrio Mestre Detalhe


v ao table TBLItensVenda e configure as propriedades MasterSource e MasterFields. Para a primeira propriedade coloque o datasource da tabela de vendas pois a essa tabela que o TBLItensVenda deve se relacionar. Para a propriedade MasterFields ligue os campos CdVendas com o CdVendas

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

Habilitando e desabilitando botes


procedure TfrmDados.DtsVendasStateChange(Sender: TObject); begin with FrmVendas do begin BtnInserir.Enabled:= (TBLVendas.State=dsBrowse); BtnAlterar.Enabled:= (TBLVendas.State=dsBrowse); BtnFechar.Enabled:= (TBLVendas.State=dsBrowse); BtnCancelar.Enabled:=(TBLVendas.State in [dsInsert,dsEdit,dsSetKey]); BtnSalvar.Enabled:=(TBLVendas.State in [dsInsert,dsEdit,dsSetKey]); BtnExcluir.Enabled:=(TBLVendas.State in [dsInsert,dsEdit,dsbrowse]); Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares end;

Calculando o SubTotal e o Total da Venda


No formulrio frmDados adicione um componente TQuery e configure-o: Name: QryPrecoProd DataBaseName: BdVendas SQL: select Preco from Produtos as P , ItensVendas as I where P.CdProduto=I.CdProduto and P.cdProduto= :Pprod Params: informar o tipo do parmetro Pprod: ftInteger
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

CLCULO DO TOTAL FINAL


Toda vez que um registro for salvo na tabela de Itens da venda for salvo teremos que recalcular o total. Para isso utilizaremos o evento AfterPost do componente table TblItensVendas. Este evento acontece toda vez que alguma informao foi salva na tabela. Precisaremos utilizar novamente um componente de consulta Query. No formulrio frmDados adicione um componente TQuery e configure-o: Name: QryTotalVenda DataBaseName: BdVendas SQL: SELECT CdVenda, sum(SubTotal) as Total FROM ItensVendas WHERE (CdVenda = :PCdVenda) GROUP BY CdVenda Params: informar o tipo do parmetro PCdVenda: ftInteger Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

CLCULO DO TOTAL FINAL


procedure TfrmDados.TblItensVendasAfterPost(DataSet: TDataSet); begin with QryTotalVenda do begin close; params[0].AsInteger:= TblVendasCdVenda.AsInteger; open; end; if TblVendas.State = dsBrowse then TblVendas.Edit; TblVendasTotal.Value:= QryTotalVendaTotal.Value; Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares end;

Construindo consultas

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

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;

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

Relatrios

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

Das könnte Ihnen auch gefallen