Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mcsmarmcs

Fazer uma consulta para repetir o campo de um registro

Recommended Posts

Possuo vários registros, o campo ordem e o campo placa possuem o conteúdo repetido algumas vezes e o campo data é o que difere os ordens que são repetidos.Exemplo do que preciso fazer:Registro 1: Campo ordem - conteúdo: 'abc' / Campo placa - conteúdo: 'LBA2020' / Campo data - conteúdo: '01/02/2000'Registro 2: Campo ordem - conteúdo: 'btc' / Campo placa - conteúdo: 'BKA1028' / Campo data - conteúdo: '01/02/2000'Registro 3: Campo ordem - conteúdo: 'abc' / Campo placa - conteúdo: 'LBA2020' / Campo data - conteúdo: '05/12/2002'Ao inserir o registro 3, o campo placa possui o mesmo conteúdo do registro 1. O que eu gostaria de fazer é: ao digitar o campo ordem em um campo edit, se o conteúdo deste campo existir eu pego automaticamente o campo placa e digito uma nova data.Mas eu preciso pegar o último registro com este campo ordem e o parâmetro para isso seria a data do registro.Estou usando o MySQL 5 e componente ADOQuery.Todos os parâmetros são passados para o banco através de campos e edit e possuo um DBGrid para listar os registros.Estou com muita dificuldade em resolver isso, alguém pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que poderia fazer é usar a propriedade OnChange do Field, mas como esta usando Edit, terá de usar o OnExit deste campo, sendo que ao sair, você executa uma query que busca no seu BD por esta informação, caso encontre atribua ao campo desejado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um SQL simples sobre a tabela, algo do tipo:

 

qry.Close;qry.SQL.Clear;qry.SQL.Add('select tabela.campo');qry.SQL.Add('from tabela');qry.SQL.Add('where tabela.campo = ''' + Edit1.Text + '''');qry.Open;if not qry.IsEmpty then	begin	\\Encontrou um registro com a mesma informação, faz o procedimento desejado.	end;qry.Close;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Código da consulta:QRYfuturo2.Close;QRYfuturo2.SQL.Clear;QRYfuturo2.SQL.Add('SELECT * FROM futuro');QRYfuturo2.SQL.Add('WHERE ordem = "'+EDordem.Text+'"');QRYfuturo2.Open;if not QRYfuturo2.IsEmpty then begin EDplaca.DataField:='placa'; end;Eu entrei com um dado que já existia através de EDordem.Text, mas EDplaca não recebeu nada.O que fiz de errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas atribuindo da forma que fez nunca vai funcionar, precisa passar para o .Value do campo.

 

 

QRYfuturo2.Close;QRYfuturo2.SQL.Clear;QRYfuturo2.SQL.Add('SELECT * FROM futuro');QRYfuturo2.SQL.Add('WHERE ordem = "'+EDordem.Text+'"');QRYfuturo2.Open;if not QRYfuturo2.IsEmpty then	tabelaCAMPO_DESEJADO.Value:='placa';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lhe dei um exemplo, corrigir e fazer de forma correta você precisa fazer...

 

QRYfuturo2.Close;QRYfuturo2.SQL.Clear;QRYfuturo2.SQL.Add('SELECT * FROM futuro');QRYfuturo2.SQL.Add('WHERE ordem = '''+EDordem.Text+'''');QRYfuturo2.Open;if not QRYfuturo2.IsEmpty then	tabelaCAMPO_DESEJADO.Value:=QRYfuturo2CAMPO_DESEJADO.Value;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.