mcsmarmcs 0 Denunciar post Postado Maio 13, 2007 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
marcio.theis 3 Denunciar post Postado Maio 14, 2007 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
mcsmarmcs 0 Denunciar post Postado Maio 14, 2007 Isso eu sei, o problema é fazer uma consulta sql que retorne o valor esperado. Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Maio 14, 2007 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
mcsmarmcs 0 Denunciar post Postado Maio 15, 2007 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
marcio.theis 3 Denunciar post Postado Maio 15, 2007 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
mcsmarmcs 0 Denunciar post Postado Maio 15, 2007 Mas esse não é valor esperado. O valor que deve ser retornado é referente ao registro anterior que possui o mesmo número de ordem. Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Maio 16, 2007 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
mcsmarmcs 0 Denunciar post Postado Maio 17, 2007 tabelaCAMPO_DESEJADO.Value ? Não conheço esse parâmetro.Como vou chamar a tabela dessa forma? Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Maio 18, 2007 Não... Isso é apenas um exemplo, você deve substituir pelo seu campo...Eu não sei e nem tenho como descobrir o nome da sua tabela e dos campos... Compartilhar este post Link para o post Compartilhar em outros sites