delphi passo a passo pesquisa cliente 2
TRANSCRIPT
1.20 inserir dois btBtn da paleta additional
Propriedade 1:
KIND: bkOk
NAME: btnOk
CAPTION: Ok
Propriedade 2:
KIND: bkCancel
NAME: btnCancelar
CAPTION: Cancelar
1.21 clique duplo no botão localizar no formulário frmLocCliente
A atualização do ClienteDataSet é muito simples, ou seja, ele recebe o valor do
Edit e manda para a query, ela faz a comparação com o parâmetro, e retorna o
resultado.
1.22 clique duplo no botão localizar no formulário frmCadCliente
1.23 configurando parâmetro
Criar uma procedure Localizado no frmLocCliente
Estamos alimentando o ClienteDataSet através do parâmetro.
Selecione o GRID e no evento OndblClick com clique duplo.
Clique duplo no botão OK
Clique duplo no botão Cancelar
2 Evento OnReconcileError
Selecione o evento OnReconcileError do cdsCadCliente
Na cláusula Uses coloque a Unit Dialogs
Assim quando ocorrer algum erro no clientDataSet será emitida uma mensagem
de erro, ficando fácil tratar o erro.
3 Campo auto incremento.
O firebird não possui auto incremento por isso utilizamos generator. Abra
o IbExpert clique com o botão direito do mouse e escolha New Generator.
Name: GEN_CLICODIGO
Value: 1000
Depois dê um commit utilizando o botão com um raio.
È preciso criar um tabela que contenha apena um registro:
Tabela: código
Campo: id = 1
Volte Ao Delphi e insira um componente SqlQuery da paleta DbExpress
no dmCliente.
Propriedade:
Name: sqyPedCod
sqlConnection: dmPrincipa.sqlConSisComercial
SQL:
Cada vez que executamos um select, teremos um novo número em ordem
crescente, a função GEN_ID está incrementando o valor e retornando ao select.
Agora precisamos de um evento para buscar o generator na query e gravá-lo no
banco de dado, o evento mais adequado é BeforeUpdateRecord do Provider, ele é
chamado no momento que o registro está preste a ser enviado ao banco de dado.
Precisamos definir um valor para chave primária, já que alimentamos o campo
somente no evento.
O que vamos fazer e preencher o campo chave com um valor negativo, já que
não teremos clientes com código negativo.
3.1 Declare na seção private do dmCliente:
No evento OnCreate do dmCliente inicie a variável vNum:=0
3.2 Colocar número negativo na chave primaria:
Selecione o evento OnNewRecord do clientDataSet.
A cada registro novo a variável será decrementada e enviada ao campo
clicodigo. Neste caso não a problema se o usuário cancelar a inclusão, pois neste
momento apenas utilizaremos o sequenciador negativo.
3.3 selecione o componente dspCadCliente e o evento BeforeUpdateRecord
Selecione dspCadCliente na propriedade options lique a opção
poPropagateChanges.
Clique duplo no cdsCadCliente selecione clicodigo no evento OngetTex
3.4 controle de ocorrência
Clique duplo no cdsCadCliente selecione clicodigo propriedade ProviderFlags
marque true para a opção pflnKey, e faça o mesmo para sdscadcliente.
Selecione dspCadCliente e altere a propriedade UpDataMode para
upwereKeyOnly