IBQuery não funciona
Tenho um banco em firebird onde há uma tabela clientes.
Tenho um IBDataBase conectado a este banco.
Quando coloco um IBQuery, conecto o mesmo ao IBDataBase e vou no object inspector, em Sql->TString todas as tabelas contidas no SGDB aparecem, quando seleciono clientes, todos os campos da tabela cliente aparecem, aí quando faço:
Select Cliente from Clientes, que é um dos campos de clientes e dou OK e tento conectar a IBQuery recebo a seguinte mensagem:
´Dynamic SQL Error
SQL Error Code = -204
Table Unknown
CLIENTES
At line 1, column 21.´
ou seja, ele não reconhece a tabela que anteriormente reconhecia, na hora da construção da Sql. Alguém por acaso sabe por que está acontecendo isto e qual a solução possível?
Tenho um IBDataBase conectado a este banco.
Quando coloco um IBQuery, conecto o mesmo ao IBDataBase e vou no object inspector, em Sql->TString todas as tabelas contidas no SGDB aparecem, quando seleciono clientes, todos os campos da tabela cliente aparecem, aí quando faço:
Select Cliente from Clientes, que é um dos campos de clientes e dou OK e tento conectar a IBQuery recebo a seguinte mensagem:
´Dynamic SQL Error
SQL Error Code = -204
Table Unknown
CLIENTES
At line 1, column 21.´
ou seja, ele não reconhece a tabela que anteriormente reconhecia, na hora da construção da Sql. Alguém por acaso sabe por que está acontecendo isto e qual a solução possível?
Edilcimar
Curtidas 0
Respostas
Bruno Belchior
06/11/2005
tente isso:
Select Cliente from CLIENTES
GOSTEI 0
Edilcimar
06/11/2005
mas é exatamente isto que está escrito na sql!!!
GOSTEI 0
Firekiller
06/11/2005
Apenas como observação, tente colocar como o Bruno falou.... com o Nome da Tabela em Caixa Alta.
Apesar de não ser problema... isso é um problema quando se usa DBExpress, já com IBX eu não sabia, mas tente e veja se funciona. Ou então faça o seguinte, apague todo o SQL que você criou e esperimente criar a instrução clicando 2 vezes sobre o nome da tabela e sobre o campo que você quer que apareça.
Apesar de não ser problema... isso é um problema quando se usa DBExpress, já com IBX eu não sabia, mas tente e veja se funciona. Ou então faça o seguinte, apague todo o SQL que você criou e esperimente criar a instrução clicando 2 vezes sobre o nome da tabela e sobre o campo que você quer que apareça.
GOSTEI 0
Edilcimar
06/11/2005
Eu já coloque o nome da tabela em letra maiúscula e continua não funcionando
GOSTEI 0
Bruno Belchior
06/11/2005
já tentou retirar todos os objetos TField do Fields Editors e tentar reconectá-las e também de seus possíveis detalhes?
GOSTEI 0
Edilcimar
06/11/2005
já fiz e refiz, tirei todos os componentes e coloquei todos novamente, tentei com letra minúscula e maiúscula, e nada funcionou
GOSTEI 0
Edilcimar
06/11/2005
Descobri o porquê de não funcionar, eu troquei o nome das tabelas e dos campos das tabelas (internamente no firebird) para maiúsculo e funcionou, na sql (no select) não importa se o nome está em maiúsculo ou minúsculo pois ele sempre transforma para maiúsculo e por isto não achava a tabela e até mesmo o campo que estava com o nome escrito com a primeira letra em maiúsculo e o restante em minúsculo.
GOSTEI 0
Afarias
06/11/2005
|não importa se o nome está em maiúsculo ou minúsculo pois
|ele sempre transforma para maiúsculo
NÃO. Isso só é verdade se vc NÃO coloca o campo entres aspas da mesma forma que fez quando o criou, por ex, se vc fizer:
select ´Cliente´ from ´Clientes´
nada será ´convertido´ para maiúsculas, os nomes serão comparados exatamente como estão escritos (1ª maiúscula e as demais minúsculas)
T+
|ele sempre transforma para maiúsculo
NÃO. Isso só é verdade se vc NÃO coloca o campo entres aspas da mesma forma que fez quando o criou, por ex, se vc fizer:
select ´Cliente´ from ´Clientes´
nada será ´convertido´ para maiúsculas, os nomes serão comparados exatamente como estão escritos (1ª maiúscula e as demais minúsculas)
T+
GOSTEI 0
Edilcimar
06/11/2005
Afarias eu fiz com aspas e ele continuou ignorando e a mensagem de erro sempre vinha com o nome da tabela em maiúsculo.
O que eu tinha era uma tabela Clientes e um campo Cliente
eu coloquei:
Select cliente from clientes
Select Cliente from Clientes
Select CLIENTE from CLIENTES
Select ´cliente´ from ´clientes´
Select ´Cliente´ from ´Clientes´
Select ´CLIENTE´ from ´CLIENTES´
e nenhum funcionou, aí quando alterei o nome da tabela para maiúsculo ele passou a reclamar que o campo não existia, aí fui e coloquei o nome do campo também em maiúsculo então coloquei os 3 primeiros selects acima e todos funcionaram
O que eu tinha era uma tabela Clientes e um campo Cliente
eu coloquei:
Select cliente from clientes
Select Cliente from Clientes
Select CLIENTE from CLIENTES
Select ´cliente´ from ´clientes´
Select ´Cliente´ from ´Clientes´
Select ´CLIENTE´ from ´CLIENTES´
e nenhum funcionou, aí quando alterei o nome da tabela para maiúsculo ele passou a reclamar que o campo não existia, aí fui e coloquei o nome do campo também em maiúsculo então coloquei os 3 primeiros selects acima e todos funcionaram
GOSTEI 0
Afarias
06/11/2005
Veja edilcimar, o q vc fez foram vários testes aleatórios... que poderiam funcionar ou não -- o q isso quer dizer é q vc não sabe COMO EXATAMENTE criou os campos.
o IBQuery ou mesmo o IB/FB não tem qualquer problema com campos criados usando aspas. Eu particularmente não gosto de usar assim, mas nas vezes q me deparei com isso ou em testes sempre dá certo como deve ser.
Quando vc cria objetos no IB/FB usando aspas vc tem q ter o cuidado de saber EXATAMENTE como definiu os nomes desses objetos -- CADA LETRA!! Ou realmente terá problemas -- Por isso prefiro não usar (até pq não vejo qualquer ganho em usar)
T+
o IBQuery ou mesmo o IB/FB não tem qualquer problema com campos criados usando aspas. Eu particularmente não gosto de usar assim, mas nas vezes q me deparei com isso ou em testes sempre dá certo como deve ser.
Quando vc cria objetos no IB/FB usando aspas vc tem q ter o cuidado de saber EXATAMENTE como definiu os nomes desses objetos -- CADA LETRA!! Ou realmente terá problemas -- Por isso prefiro não usar (até pq não vejo qualquer ganho em usar)
T+
GOSTEI 0
Edilcimar
06/11/2005
eu criei o banco de dados e as tabelas com o EMS Ibmanager, portanto basta eu abrí-lo para ver visualmente como foi que eu criei, e eu os criei tanto o banco como as tabelas com a primeira letra em maiúsculo e o restante em minúsculo, e aí tentei das diversas formas e descobri que a ibquery pega aquilo que vc digita na sql e coloca em maiúsculo sem importar como vc digitou, mas pelo lado do banco de dados e das tabelas ele não as transforma em maiúsculas e este é o x da questão, foi aí que tive que refazer o banco digitando tudo em maiúsculo
GOSTEI 0
Afarias
06/11/2005
|eu criei o banco de dados e as tabelas com o EMS Ibmanager,
geralmente usando uma ferramenta visual para criar os objetos e não executando os comandos SQL *pode* fazer com q vc não saiba o q exatamente está acontecendo.
|portanto basta eu abrí-lo para ver visualmente como foi que eu criei,
será?
|descobri que a ibquery pega aquilo que vc digita na sql e coloca em
|maiúsculo sem importar como vc digitou,
como vc descobriu isso? q método usou?
posso te garantir q comigo isso não ocorre. seu IBX está atualizado?
T+
geralmente usando uma ferramenta visual para criar os objetos e não executando os comandos SQL *pode* fazer com q vc não saiba o q exatamente está acontecendo.
|portanto basta eu abrí-lo para ver visualmente como foi que eu criei,
será?
|descobri que a ibquery pega aquilo que vc digita na sql e coloca em
|maiúsculo sem importar como vc digitou,
como vc descobriu isso? q método usou?
posso te garantir q comigo isso não ocorre. seu IBX está atualizado?
T+
GOSTEI 0
Edilcimar
06/11/2005
Tanto o nome do banco de dados como o nome do campo, quando dá erro, retornam em maiúsculo, portanto ele está transformando-os em maiúsculo. A prova é que quando criei o nome em minúsculo ele não consegue distinguir quando tento abrir a ibquery, na hora de utilizar o editor de criação da própria ibquery, o nome da tabela e dos campos aparecem exatamente como eu os havia criado, e a partir da hora que mudei tudo para maiúsculo eles vieram também em maiúsculo e passaram a funcionar. Quanto ao meu ibx é o que veio com o d7
GOSTEI 0
Afarias
06/11/2005
|Tanto o nome do banco de dados como o nome do campo, quando dá
|erro, retornam em maiúsculo, portanto ele está transformando-os em
|maiúsculo.
repetindo:: Isso só ocorre quando vc não põe o nome do objeto entre aspas-duplas!
|Quanto ao meu ibx é o que veio com o d7
Se é o q veio com o D7 e vc nào atualizou, seu IBX está desatualizado e bugado. Atualize seu IBX
T+
|erro, retornam em maiúsculo, portanto ele está transformando-os em
|maiúsculo.
repetindo:: Isso só ocorre quando vc não põe o nome do objeto entre aspas-duplas!
|Quanto ao meu ibx é o que veio com o d7
Se é o q veio com o D7 e vc nào atualizou, seu IBX está desatualizado e bugado. Atualize seu IBX
T+
GOSTEI 0
Edilcimar
06/11/2005
eu já tentei com e sem aspas, quanto ao ibx se tem bug realmente não sei
GOSTEI 0