ERRO AO PASSAR INSTRUCAO SQL
Olá pessoal. Estou com um probleminha aqui. é o seguinte:
Ao abrir um banco, estou utilizando uma sintaxe em sql para filtrar um campo de acordo com um dado.
Assim:
Banco.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.path & [Ô]\XX09082000010001.mdb[Ô] & [Ô];Jet OLEDB:database Password=[Ô] & vgSenhaDb(vgDbAtual)
comandoSQL = ([Ô]SELECT [xx00970005] FROM [XX09080097] WHERE [xx00970001] = [ô][Ô] & ctrtabir_nrdec.Value & [Ô][ô][Ô])
Tabela.Open comandoSQL, Banco, [adOpenKeyset], [adLockReadOnly], [adCmdTable]
Acontece que dá um erro: [Ô]Run-time error [ô]-2144217900(80040e14[ô]. Erro na cláusula FROM. Mas acontece que a sintaxe do sql está correta. Alterei a sintaxe, deixando-a mais simples mais também deu o mesmo erro. AÃ, mudei a ordem dos comandos de propósito, deixando o comando sql depois de abrir a tabela. Bom eu achei que ia dar o maior pau, porque a instrução estava vazia, mas sabem o que aconteceu? O mesmo erro. Então, peço a ajuda de vocês para resolver isso. No debug, a linha apontada é esta:
Tabela.Open comandoSQL, Banco, [adOpenKeyset], [adLockReadOnly], [adCmdTable]
e não aonde se encontra a instrução SQL, como era de se esperar.
Ao abrir um banco, estou utilizando uma sintaxe em sql para filtrar um campo de acordo com um dado.
Assim:
Banco.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.path & [Ô]\XX09082000010001.mdb[Ô] & [Ô];Jet OLEDB:database Password=[Ô] & vgSenhaDb(vgDbAtual)
comandoSQL = ([Ô]SELECT [xx00970005] FROM [XX09080097] WHERE [xx00970001] = [ô][Ô] & ctrtabir_nrdec.Value & [Ô][ô][Ô])
Tabela.Open comandoSQL, Banco, [adOpenKeyset], [adLockReadOnly], [adCmdTable]
Acontece que dá um erro: [Ô]Run-time error [ô]-2144217900(80040e14[ô]. Erro na cláusula FROM. Mas acontece que a sintaxe do sql está correta. Alterei a sintaxe, deixando-a mais simples mais também deu o mesmo erro. AÃ, mudei a ordem dos comandos de propósito, deixando o comando sql depois de abrir a tabela. Bom eu achei que ia dar o maior pau, porque a instrução estava vazia, mas sabem o que aconteceu? O mesmo erro. Então, peço a ajuda de vocês para resolver isso. No debug, a linha apontada é esta:
Tabela.Open comandoSQL, Banco, [adOpenKeyset], [adLockReadOnly], [adCmdTable]
e não aonde se encontra a instrução SQL, como era de se esperar.
Tenta tirar os colchetes
Banco.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.path & [Ô]\XX09082000010001.mdb[Ô] & [Ô];Jet OLEDB:database Password=[Ô] & vgSenhaDb(vgDbAtual)
comandoSQL = ([Ô]SELECT [xx00970005] FROM [XX09080097] WHERE [xx00970001] = [ô][Ô] & ctrtabir_nrdec.Value & [Ô][ô][Ô])
[ô] veja no immediate window o comando impresso e veja se o comando está certo...
[ô] confira tbm se o campo é realmente caracter ou se por acaso não é numero :)
debug.print comandoSQL
on error resume next
Tabela.Open comandoSQL, Banco, [adOpenKeyset], [adLockReadOnly], [adCmdTable]
[ô] verifique o erro completo aqui
debug.print err.number
debug.print err.description
passe o resultado destes 3 [Ô]debug.print[Ô] para que possamos avaliar melhor o erro
comandoSQL = ([Ô]SELECT [xx00970005] FROM [XX09080097] WHERE [xx00970001] = [ô][Ô] & ctrtabir_nrdec.Value & [Ô][ô][Ô])
[ô] veja no immediate window o comando impresso e veja se o comando está certo...
[ô] confira tbm se o campo é realmente caracter ou se por acaso não é numero :)
debug.print comandoSQL
on error resume next
Tabela.Open comandoSQL, Banco, [adOpenKeyset], [adLockReadOnly], [adCmdTable]
[ô] verifique o erro completo aqui
debug.print err.number
debug.print err.description
passe o resultado destes 3 [Ô]debug.print[Ô] para que possamos avaliar melhor o erro
Olá. Fiz os testes sugeridos no código, utilizando campo numérico e depois um campo texto. As mensagens no imediate foram:
[ô]campo numérico
SELECT [xx00970005] FROM [XX09080097] WHERE [xx00970001] = 1
-2147217900
Erro de sintaxe na cláusula FROM.
[ô]campo string
SELECT [xx00970005] FROM [XX09080097] WHERE [xx00970001] = [ô]1[ô]
-2147217900
Erro de sintaxe na cláusula FROM.
No começo da execução, aparece uma caixa de mensagem vazia, onde eu acho que deveria aparecer o código sql. Talvez o erro esteja que não está pasando a instrução sql. vou verificar, mas se alguém puder dar uma olhada nisso... Até!!!
[ô]campo numérico
SELECT [xx00970005] FROM [XX09080097] WHERE [xx00970001] = 1
-2147217900
Erro de sintaxe na cláusula FROM.
[ô]campo string
SELECT [xx00970005] FROM [XX09080097] WHERE [xx00970001] = [ô]1[ô]
-2147217900
Erro de sintaxe na cláusula FROM.
No começo da execução, aparece uma caixa de mensagem vazia, onde eu acho que deveria aparecer o código sql. Talvez o erro esteja que não está pasando a instrução sql. vou verificar, mas se alguém puder dar uma olhada nisso... Até!!!
tente assim
SELECT * FROM XX09080097 WHERE xx00970001 = [ô]1[ô]
ah, tenha certeza que o nome da tabela é XX09080097
SELECT * FROM XX09080097 WHERE xx00970001 = [ô]1[ô]
ah, tenha certeza que o nome da tabela é XX09080097
Marcelo, segui a sua sugestão mas ainda não deu. Retirei os colchetes, usei a sintaxe que você sugeriu, e sim ,a tabela é essa mesma. Mas o erro ainda é o mesmo. Estou sem idéias.
Talvez você não tenha permissão para acessar essa tabela... ou o client do banco está bugado.
Pessoal, achei a solução!!! Hahááá! é o seguinte: O erro estava na sintaxe da intrução sql. Na verdade, a sintaxe estava correta, mas não para o contexto em que estava sendo utilizada. O erro que dava [ô]Erro de sintaxe na cláusula FROM[ô] era justamente porque não existe a cláusula FROM. Como o computador não é muito didático, fica difÃcil de entender de primeira. Mas ficou assim:
Tabela.Open [Ô]XX09080097 WHERE xx00970019 = [Ô] & ctrtabir_nrdec.Value & [Ô][Ô], Banco, adOpenKeyset, adLockReadOnly, adCmdTable
Observem algumas coisas: A instrução SELECT não existe, nem a instrução FROM. Como o inÃcio da instrução do vb é Tabela.open, não é necessário abrir novamente com a instrução FROM. Legal, né? Esmiuçando mais:
Tabela.Open [Ô]TABELA WHERE CAMPO = [Ô] & CAIXA_TEXTO & [Ô][Ô], Banco, adOpenKeyset, adLockReadOnly, adCmdTable
Observem que depois da CAIXA_TEXTO vem o [ô]&[ô] e DUAS aspas. Para quem não sabe, o valor passado aqui é numérico. Se fosse texto, ficaria [ô] [Ô] & CAIXA_TEXTO & [Ô] [ô] [Ô] , com apóstrofe.
Até a próxima!!!
Tabela.Open [Ô]XX09080097 WHERE xx00970019 = [Ô] & ctrtabir_nrdec.Value & [Ô][Ô], Banco, adOpenKeyset, adLockReadOnly, adCmdTable
Observem algumas coisas: A instrução SELECT não existe, nem a instrução FROM. Como o inÃcio da instrução do vb é Tabela.open, não é necessário abrir novamente com a instrução FROM. Legal, né? Esmiuçando mais:
Tabela.Open [Ô]TABELA WHERE CAMPO = [Ô] & CAIXA_TEXTO & [Ô][Ô], Banco, adOpenKeyset, adLockReadOnly, adCmdTable
Observem que depois da CAIXA_TEXTO vem o [ô]&[ô] e DUAS aspas. Para quem não sabe, o valor passado aqui é numérico. Se fosse texto, ficaria [ô] [Ô] & CAIXA_TEXTO & [Ô] [ô] [Ô] , com apóstrofe.
Até a próxima!!!
Tópico encerrado , respostas não são mais permitidas