BB ACCESS NOT IN N?O RETORNA VALORES
Meus amigos estou com um probleminha com a seguinte consulta:
esta aqui não retorna nenhum valor:
Enquanto que esta aqui (sendo a mesma tabela) retorna mais de mil registros:
Sendo que a única diferença é o campo.
Os celulares estão cadastrados assim [txt-color=#0000f0](##)####-####[/txt-color]
e no banco de dados está como texto assim como o campo Nome,
não entendo porque não encontra valores quando consulto pelo celular.
Desde já agradeço a todos que possam ajudar.
esta aqui não retorna nenhum valor:
rs.Open [Ô]Select * from tblBanco where (CelularBD Not in (Select Celular From tblCad)) order by FormaBD[Ô], db, 3, 3
Enquanto que esta aqui (sendo a mesma tabela) retorna mais de mil registros:
rs.Open [Ô]Select * from tblBanco where (NomeBD Not in (Select Nome From tblCad)) order by FormaBD[Ô], db, 3, 3
Sendo que a única diferença é o campo.
Os celulares estão cadastrados assim [txt-color=#0000f0](##)####-####[/txt-color]
e no banco de dados está como texto assim como o campo Nome,
não entendo porque não encontra valores quando consulto pelo celular.
Desde já agradeço a todos que possam ajudar.
Pessoal, fiz uns testes aqui e descobri que se tiver campos vazios
ele não pesquisa, alguém sabe como resolver?
ele não pesquisa, alguém sabe como resolver?
Amigo... Verifica se na tabela tblBanco o campo celular aparece com valores nulos ou na forma de string vazia
Se for string vazia, povavelmente vc tem um registro com string vazia tb na tabela tblcad... se for isso, não vai te refornar nenhum registro mesmo
daà vc precisa mudar a consulta
Se for string vazia, povavelmente vc tem um registro com string vazia tb na tabela tblcad... se for isso, não vai te refornar nenhum registro mesmo
daà vc precisa mudar a consulta
Colega,
No Access não sei como funciona o Coalesce, mas tem a NZ, se não me engano. O objetivo é trocar Null por conteúdo válido.
Bem, o que está havendo é que há conteúdo null na sua tabela e precisa ser convertido para vazio (não confunda vazio com null).
Tente assim, usando o NZ (no PostGreSQL é Coalesce, no Access acho que é também, mas só tenho certeza do NZ):
Tudo de bom.
No Access não sei como funciona o Coalesce, mas tem a NZ, se não me engano. O objetivo é trocar Null por conteúdo válido.
Bem, o que está havendo é que há conteúdo null na sua tabela e precisa ser convertido para vazio (não confunda vazio com null).
Tente assim, usando o NZ (no PostGreSQL é Coalesce, no Access acho que é também, mas só tenho certeza do NZ):
rs.Open [Ô]Select * from tblBanco where (NZ(CelularBD,[ô][ô]) Not in (Select NZ(Celular,[ô][ô]) From tblCad)) order by FormaBD[Ô], db, 3, 3
Tudo de bom.
Amigo... Verifica se na tabela tblBanco o campo celular aparece com valores nulos ou na forma de string vazia
Se for string vazia, povavelmente vc tem um registro com string vazia tb na tabela tblcad... se for isso, não vai te refornar nenhum registro mesmo
daà vc precisa mudar a consulta
Se for string vazia, povavelmente vc tem um registro com string vazia tb na tabela tblcad... se for isso, não vai te refornar nenhum registro mesmo
daà vc precisa mudar a consulta
Citação::
rs.Open [Ô]Select * from tblBanco where (NZ(CelularBD,[ô][ô]) Not in (Select NZ(Celular,[ô][ô]) From tblCad)) order by FormaBD[Ô], db, 3, 3
Obrigado pela ajuda mas deu esse erro aÃ:
Jorge,
Você vai precisar elimiar os campos nulos da pesquisa principal.
Teste a consulta abaixo:
Se não funcionar, seria melhor vc postar o banco que você está usando com alguns dados, pois isso facilitaria na montagem da consulta.
Você vai precisar elimiar os campos nulos da pesquisa principal.
Teste a consulta abaixo:
rs.Open [Ô]SELECT * FROM tblBanco WHERE (NOT CelularBD IS NULL) AND (CelularBD NOT IN (SELECT Celular FROM tblCad)) ORDER BY FormaBD[Ô], db, 3, 3
Se não funcionar, seria melhor vc postar o banco que você está usando com alguns dados, pois isso facilitaria na montagem da consulta.
Citação:rs.Open [Ô]Select * from tblBanco where (CelularBD Not in (Select Celular From tblCad)) order by FormaBD[Ô], db, 3, 3
JorgeSales, o que acontece é que para cada valor CelularBD em tblBanco, vai se fazer uma comparação com todos os registros da tabela tblCad para o campo Celular. Sendo assim, para que a consulta retorne algum dado, será necessário que não exista qualquer valor correspondente entre as tabelas.
Ex: Com o registros abaixo, a consulta não traria dado algum, pois o valor 1 de tblBanco do campo CelularBD está incluso na tabela tblCad para o campo Celular.
_____________________________________
tblBanco
CelularBD
1
_____________________________________
tblCad
Celular
5
4
3
2
1
_____________________________________
Agora, se estivesse conforme abaixo, aà retornaria um registro, pois o valor 0 não está contido na outra tabela.
_____________________________________
tblBanco
CelularBD
0
_____________________________________
tblCad
Celular
5
4
3
2
1
_____________________________________
Faça o teste manualmente e verifique se existe campos de telefone com os mesmos valores em cada tabela, basta que exista apenas uma igualdade para que o registro não seja selecionado para a consulta.
[txt-color=#0000f0]Fabiano Couto[/txt-color], seu código não apresentou
resultados mas acho que é porque na tblCad também tem campos nulos
no Celular.
[txt-color=#0000f0]JABA[/txt-color], obrigado pela explicação
eu já fiz testes manuais e como postei anteriormente eu percebi
que a questão é por existir campos em branco tando numa tabela
quanto na outra.
resultados mas acho que é porque na tblCad também tem campos nulos
no Celular.
[txt-color=#0000f0]JABA[/txt-color], obrigado pela explicação
eu já fiz testes manuais e como postei anteriormente eu percebi
que a questão é por existir campos em branco tando numa tabela
quanto na outra.
Citação:JABA, obrigado pela explicação
eu já fiz testes manuais e como postei anteriormente eu percebi
que a questão é por existir campos em branco tando numa tabela
quanto na outra.
JORGESALES, os campos vazios também entram como critério no exemplo que coloquei. Tente assim:
rs.Open [Ô]SELECT * FROM tblBanco WHERE CelularBD NOT IN (SELECT Celular FROM tblCad [txt-color=#e80000]WHERE Celular IS NOT NULL[/txt-color]) ORDER BY FormaBD[Ô], db, 3, 3
ou
rs.Open [Ô]SELECT * FROM tblBanco WHERE CelularBD [txt-color=#e80000]IS NOT NULL AND CelularBD [/txt-color] NOT IN (SELECT Celular FROM tblCad WHERE Celular IS NOT NULL) ORDER BY FormaBD[Ô], db, 3, 3
Tópico encerrado , respostas não são mais permitidas