Esse artigo faz parte da revista Clube Delphi edição 32. Clique aqui para ler todos os artigos desta edição



Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML.

Sistema Datacar

Criação de um sistema completo com Delphi/Kylix

Parte IV – Veículo adquiridos, procuras e tratamento de erros

 

Dando continuidade ao nosso projeto Datacar, finalizaremos os módulos de cadastros construindo o formulário de Veículo     Adquirido, que é muito semelhante ao cadastro de Veículo Atual. Faremos o tratamento dos erros de chaves estrangeiras impostas pelo SGBDR, construiremos nossa própria validação do lado do servidor e faremos uma procura personalizada.

 

Dados de veículos adquiridos

A tabela de Veículos Adquiridos guarda informações sobre os modelos de veículos comprados na revenda por determinado cliente. Este veículo adquirido obrigatoriamente deve pertencer a outro cliente (pois estamos desenvolvendo um controle de revendas), portanto há um relacionamento com o Veículo Atual. O cliente poderia já estar pretendendo tal modelo, de forma que também há um relacionamento com a tabela de Veículo Pretendido.

Para construir o cadastro, primeiro coloque no Data Module (DM) um componente SQLDataSet e dê a ele o nome de dst_veiculo_adquirido. Aponte a propriedade SQLConnection para SQLConnect. Na sua propriedade CommandText digite:

 

select VAD.*, M.NOME_MODELO, C.NOME_CLIENTE

from VEICULO_ADQUIRIDO VAD

  inner join VEICULO_ATUAL VAT on

     VAD.COD_VEICULO_ATUAL = VAT.COD_VEICULO_ATUAL

  inner join CLIENTES C on

     VAT.COD_CLIENTE = C.COD_CLIENTE

  inner join MODELOS M on

     M.COD_MODELO = VAT.COD_MODELO

where VAD.COD_VEICULO_ADQUIRIDO =:COD_VEICULO_ADQUIRIDO

 

Vá até a propriedade Params do SQLDataSet e configure DataType do único parâmetro como sendo do tipo ftInteger. Dê um duplo clique no SQLDataSet e pressione CTRL+F para adicionar os TFields.

Selecione todos os TFields (menos COD_VEICULO_ADQUIRIDO) e configure a propriedade ProviderFlags.pfInWhere como False. Selecione apenas o campo COD_VEICULO_ADQUIRIDO e configure seu ProvidersFlags.pfInkey para True. Selecione agora os         campos NOME_MODELO e NOME_CLIENTE, configurando ProviderFlags.pfInUpdate para False (estes campos não pertencem à tabela em questão, são apenas utilizados para visualização, sem a necessidade de se fazer um lookup).

Coloque no DM um DataSetProvider com o nome de dsp_veiculo_adquirido, configurando suas propriedades UpdateMode para upWhereKeyOnly e DataSet para dst_veiculo_adquirido.

Coloque no DM um componente ClientDataSet com o nome de cds_veiculo_adquirido, configurando sua propriedade ProviderName para dsp_veiculo_adquirido. Dê um duplo clique neste ClientDataSet e no editor de campos aperte CTRL+F. Configure a propriedade DisplayLabel de cada componente TField adequadamente. Selecione o campo chave COD_VEICULO_ADQUIRIDO e configure sua propriedade Required para False (o valor para este campo é dado pelo sistema). Para o campo COD_VEICULO_ATUAL                  configure Required como True (um veículo adquirido deve        pertencer a alguém).

No evento OnNewRecord do ClientDataSet digite:

 

cds_veiculo_adquiridoCOD_CLIENTE.Value:=

     cds_clientesCOD_CLIENTE.Value;

 

E no evento BeforePost do ClientDataSet:

 

Incrementa(‘VEICULO_ADQUIRIDO’,

   cds_veiculo_adquiridoCOD_VEICULO_ADQUIRIDO);

 

Lista de veículos adquiridos

No DM, acrescente um SQLClientDataSet (chame-o de cds_lista_veiculo_adquirido) para trazer a lista de veículos que o cliente adquiriu. Configure sua propriedade DBConnection e coloque o seguinte CommandText:

 

select M.NOME_MODELO, VAD.COD_VEICULO_ADQUIRIDO,

  VAD.DATA_AQUISICAO, VAD.VALOR_DE_AQUISICAO

from VEICULO_ADQUIRIDO VAD

  inner join VEICULO_ATUAL VAT on

     VAD.COD_VEICULO_ATUAL = VAT.COD_VEICULO_ATUAL

  inner join MODELOS M on

     M.COD_MODELO = VAT.COD_MODELO

where VAD.COD_CLIENTE =:COD_CLIENTE

 

Configure o parâmetro COD_CLIENTE como ftInteger na propriedade Params do SQLClientDataSet. Adicione todos os campos no Field Editor, configurando a propriedade ...

Quer ler esse conteúdo completo? Tenha acesso completo