FRIHOSTFORUMSSEARCHFAQTOSBLOGSCOMPETITIONS
You are invited to Log in or Register a free Frihost Account!


AJUDA INSTRUÇÃO SQL WHERE!





mAyA_mOrAiS
*****************************************************************************
Eu faço projetos em que as consultas usam SQL , conexão ADO usando Delphi 7.0.

O código da consulta está da seguinte maneira:

Select Cod,nome,telefone,email from Membros
Where (qual_ministerio1 like:m) or (qual_ministerio2 like:m) or (qual_ministerio3 like:m);

A consulta funciona, eu consigo adicionar os campos na table que está no Data Module, entretanto
ela só está considerando na tabela o que está digitado no qual_ministerio1 (O meu objetivo era o de a consulta selecionar os registros sempre que um texto selecionado em um dos três ComboBox no form principal fosse encontrado em algum registro da tabela Membros em um destes campos, na verdade o parâmetro é o mesmo, entretanto só tem funcionado para o conteúdo do primeiro campo na cláusula where, está como se o SQL não avaliasse as outras duas condições.

Desde já agradeço pela ajuda, afinal o que está erado neste código?
mAyA_mOrAiS
******************************************************************************
Cada um destes três ComboBox no form principal são DBComboBox e estão associados cada um a um destes campos da tabela Membros, o problema é que a consulta tem avaliado apenas a primeira condição, se houver algum registro satisfazendo a condição nos campos qual_ministerio2 e qual_ministerio3 os registros não serão selecionados, entretanto deveriam.
mariohs
Se puder explicar um pouco mais detalhado, facilitaria mais Very Happy

Assim de bate-pronto, note que na sua condição WHERE, você coloca o operador OR, ou seja, qualquer uma das sentenças que forem TRUE, a condição é satisfeita, não importando as outras. Se você quer restringir o número de registros de acordo com as condições, deveria usar um AND. A não quer que você queira fazer uma união dos registros com as diferentes condições.
mAyA_mOrAiS
Mariohs, exatamente como você falou com o OPERADOR OR, se qualquer uma das condições for satisfeita, for TRUE, a seleção vai acontecer e é aí que está o problema: este código não está funcionando como você falou, na execução do programa só está sendo avaliado o conteúdo do primeiro campo após o where (qual_ministerio1), mesmo quando esse campo é FALSE, não está ocorrendo avaliação dos outros dois campos!É como se o qual_ministerio2 e o qual_ministerio3 não existissem no código!É isso que eu não to conseguindo entender... Eu já pensei na seguinte possibilidade: será que está havendo algum problema com os números nos nomes dos campos?O que você acha?Se alguém tiver uma idéia eu agradeço, porque falta pouco pra eu terminar esse trabalho, pra entregar pro cliente.

Um abraço a todos!
mariohs
Você tem alguma clausula AND antes ou depois dos OR's? Tem alguma parada de precedência se não me engano. Tenta trabalhar os parênteses.

Code:
WHERE
X=A AND
Y=B AND
(Z=C OR V=D OR Q=E)
D'Artagnan
Vc tem como testar direto no SQL assim vc sabe se esta dando problema na com o sql ou na hora de carregar os combos

esse :m ai é meio alien pra mim, deve ser coisa de delphi
mAyA_mOrAiS
Mariohs e D'Artagnan, este era na verdade um problema de Delphi, não de SQL:
Eu só havia atribuído valor ao parâmetro do primeiro campo, por isso não funcionava!

Um abração a todos, e muito obrigado pela atenção!

TDB a todos!
Related topics
Reply to topic    Frihost Forum Index -> Language Forums -> Portuguese

FRIHOST HOME | FAQ | TOS | ABOUT US | CONTACT US | SITE MAP
© 2005-2011 Frihost, forums powered by phpBB.