Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Pesquisa Usando Max, Pesquisar Nome Com Maior Codigo&


José Rodrigo

Pergunta

OLá, Gostaria de fazer uma pesquisa no banco de dados e trazer o maior Codigo de um nome q será digitado em um EDIT !!

qr_pesquisa.Active := false;
  qr_pesquisa.SQL.Clear;
  dbgrid1.DataSource := ds_pesquisa;
  qr_pesquisa.SQL.Add ('select MAX(Cod) MAXCod,Nome FROM tb_teste group by nome');
  qr_pesquisa.Active := true;
  ShowMessage('Código do Cliente: ' + qr_pesquisa.FieldByName('MAXCod').AsString + ' / Nome do Cliente: ' +   
  qr_pesquisa.FieldByName('Nome').AsString);  // mensagem com maior codigo e nome !!!
  edit3.text:=qr_pesquisa.FieldByName('MAXCod').AsString; // joga o maior codigo para o edit!!
Tentei desse jeito mais nem deu certo!!!
qr_pesquisa.Active := false;
  qr_pesquisa.SQL.Clear;
  dbgrid1.DataSource := ds_pesquisa;
  qr_pesquisa.SQL.Add ('select MAX(Cod) MAXCod, Nome("'+edit1.text+'%")FROM tb_teste GROUP BY nome');
  qr_pesquisa.Active := true;
  ShowMessage('Código do Cliente: ' + qr_pesquisa.FieldByName('MAXCod').AsString + ' / Nome do Cliente: ' +  
  qr_pesquisa.FieldByName('Nome').AsString);

Esse jeito q eu fiz traz o maior codigo e o nome da pessoa com maior codigo, queria Pesquisar por nome.... e q aparecesse o maior codigo desse nome pesquisado no EDIT!!!

Se alguém puder me ajudar Obrigado!!!

Editado por Micheus
Incluída tag's CODE para melhorar a visualização. Utilize a identação também ;)
Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Tenta desta maneira:

procedure TForm1.Button1Click(Sender: TObject);
begin

  qr_pesquisa.Active := false;
  qr_pesquisa.SQL.Clear;
  dbgrid1.DataSource := ds_pesquisa;
  qr_pesquisa.SQL.Add ('select MAXCod, Nome FROM tb_teste Where nome = '''+ TRIM(edit1.text)+''' GROUP BY nome   HAVING MAX(MaxCod) = MAXCod ORDER BY Nome');
  qr_pesquisa.Active := true;
  ShowMessage('Código do Cliente: ' + qr_pesquisa.FieldByName('MAXCod').AsString + ' / Nome do Cliente: ' +  
  qr_pesquisa.FieldByName('Nome').AsString);


end;

Editado por Jhonas
Link para o comentário
Compartilhar em outros sites

  • 0

Tente fazer um where sobre a query pelo nome, restringindo diretamente, algo como:

qr_pesquisa.Close;
  qr_pesquisa.SQL.Clear;
  dbgrid1.DataSource := ds_pesquisa;
  qr_pesquisa.SQL.Add('select MAX(Cod) MAXCod, Nome');
  qr_pesquisa.SQL.Add('FROM tb_teste');
  qr_pesquisa.SQL.Add('where nome = '''+edit1.text+'''');
  qr_pesquisa.Open;
  ShowMessage('Código do Cliente: ' + qr_pesquisa.FieldByName('MAXCod').AsString + ' / Nome do Cliente: ' + qr_pesquisa.FieldByName('Nome').AsString);

Link para o comentário
Compartilhar em outros sites

  • 0

qr_pesquisa.Close;

qr_pesquisa.SQL.Clear;

dbgrid1.DataSource := ds_pesquisa;

qr_pesquisa.SQL.Add('select MAX(Cod) MAXCod, Nome');

qr_pesquisa.SQL.Add('FROM tb_teste GROUP BY nome');

qr_pesquisa.SQL.Add('where nome = '''+edit1.text+'''');

qr_pesquisa.Open;

ShowMessage('Código do Cliente: ' + qr_pesquisa.FieldByName('MAXCod').AsString + ' / Nome do Cliente: ' +

qr_pesquisa.FieldByName('Nome').AsString);

Tentei desta forma coloquei o GROUP BY porque DEU UM ERRO E COLOQUEI PRA VER SE DAVA CERTO!!!

DEU O SEGUINTE ERRO:

"INVALID USE OF KEYWORD"

oBRIGADO!!

Link para o comentário
Compartilhar em outros sites

  • 0

José Rodrigo, aconselho você a dar uma olhada em apostilas de SQL para evitar que erros como este aconteçam. Tem que se procurar saber com o que estamos lidando.

Veja neste link qual é a sintax do comando SELECT. Observe que há uma seqüência para que as cláusulas apareçam. Veja que GROUP BY vai aparecer após a cláusula WHERE, entretanto você a colocou antes da mesma.

Na seção de Apostilas Gratuitas, tem uma apostila que recomendo a quem não está acostumado com o tal SQL.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Ainda Não achei solução para o problema!!! só quero pesquisar por nome e achar o maior codigo desse nome

exemplo:

NOMES CADASTRADOS:

NOME COD

JOSE 01

JOSE 03

JOSE 04

JOAO 02

NOME PESQUISADO: JOSE

RESULTADO DA PESQUISA:

NOME COD

JOSE 04

Se alguém puder me ajudar obrigado!!!!

Editado por Micheus
Não observação do item 3.7 das regras do forum - NÃO digite em caixa alta (1º aviso)
Link para o comentário
Compartilhar em outros sites

  • 0

sinstaxe: select MAX(Cod) MAXCod,Nome FROM tb_teste group by nome

qr_pesquisa.Close;
qr_pesquisa.SQL.Clear;
dbgrid1.DataSource := ds_pesquisa;
qr_pesquisa.SQL.Add('select MAX(Cod) MAXCod, Nome ');
qr_pesquisa.SQL.Add('FROM tb_teste ');
qr_pesquisa.SQL.Add('where nome = '''+trim(edit1.text)+'''');
qr_pesquisa.SQL.Add(' Group by nome');
qr_pesquisa.Open;
ShowMessage('Código do Cliente: ' + qr_pesquisa.FieldByName('MAXCod').AsString + ' / Nome do Cliente: ' + 
qr_pesquisa.FieldByName('Nome').AsString);

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...