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

SQL em delphi


Marcos Augusto

Pergunta

Ola a todos

Pessoal estou com um pequeno problema em uma busca em sql com zeos

1ª parte

tenho um form com os seguintes objetos :

um edit (edLocalizar), um combobox (edSituacao) e um dbgrid

no combobox já ta configurado com os seguintes dados (ativo e inativo)

tenho uma tabela em mysql (UNIDADE_FORNECIMENTO) com 4 campos (codigo, descricao, simbolo, situacao)

preciso fazer uma consulta em sql q busque algum dado na tabela mas tem que ser nos tres campos ao mesmo tempo (codigo, descricao, simbolo)

e no combobox quando o usuario selecionar algum item (ex: ativo), retornar na busca o que foi digitado no edit e na selecao do combobox

ex: kl ativo - retornar somente o kl ativo

eu fiz assim

DM.ZQUnidade.Active := false;

DM.ZQUnidade.SQL.Clear;

DM.ZQUnidade.SQL.Add('SELECT * FROM UNIDADE_FORNECIMENTO');

DM.ZQUnidade.SQL.Add('WHERE CODIGO LIKE "%' + edLocalizar.Text + '%"');

DM.ZQUnidade.SQL.Add('OR DESCRICAO LIKE "%' + edLocalizar.Text + '%"');

DM.ZQUnidade.SQL.Add('OR SIMBOLO LIKE "%' + edLocalizar.Text + '%"');

DM.ZQUnidade.SQL.Add('AND SITUACAO = "' + edSituacao.Text + '"');

DM.ZQUnidade.Active := true;

mas não esta retornando do jeito que eu queria esta vindo tudo misturado como c não tivesse ativado o combo box

grato

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
mas não esta retornando do jeito que eu queria esta vindo tudo misturado como c não tivesse ativado o combo box

DM.ZQUnidade.Active := false;
DM.ZQUnidade.SQL.Clear;
DM.ZQUnidade.SQL.Add('SELECT * FROM UNIDADE_FORNECIMENTO');

DM.ZQUnidade.SQL.Add('WHERE CODIGO LIKE "%' + edLocalizar.Text + '%"');
DM.ZQUnidade.SQL.Add('OR DESCRICAO LIKE "%' + edLocalizar.Text + '%"');
DM.ZQUnidade.SQL.Add('OR SIMBOLO LIKE "%' + edLocalizar.Text + '%"');
DM.ZQUnidade.SQL.Add('AND SITUACAO = "' + edSituacao.Text + '"'); 

DM.ZQUnidade.Active := true;
Vamos aos erros: 1 - deixe apenas o simbolo % final, dessa maneira somente a primeira ocorrencia da string é que será achada, pois se voce usar os 2 a string procurada podera estar no começo, no meio ou no fim 2 - veja que voce usou o operador OR e edLocalizar.Text para os campos CODIGO, DESCRICAO e SIMBOLO , o que estaria errado exemplo: se o seu edLocalizar.Text receber o valor 'E002' que seria o valor do CODIGO , na sua SQL esse valor estaria sendo atribuido tando para o campo DESCRICAO ou SIMBOLO tambem. 3 - se o campo SITUACAO vai receber o valor do Combobox então não há necessidade de colocar o edSituacao.Text, a menos que o valor do Combobox estivesse sendo atribuido ao edSituacao.Text em termos praticos deveria ser assim:
DM.ZQUnidade.Active := false;
DM.ZQUnidade.SQL.Clear;
DM.ZQUnidade.SQL.Add('SELECT * FROM UNIDADE_FORNECIMENTO');

DM.ZQUnidade.SQL.Add('WHERE CODIGO LIKE ' + edCodigo.Text + '%');
DM.ZQUnidade.SQL.Add('OR DESCRICAO LIKE ' + edDescricao.Text + '%');
DM.ZQUnidade.SQL.Add('OR SIMBOLO LIKE ' + edSimbolo.Text + '%');
DM.ZQUnidade.SQL.Add('AND SITUACAO = ' + ComboBox1.Items.Strings[ComboBox1.ItemIndex]); 

DM.ZQUnidade.Active := true;

abraço

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...