IBQuery não funciona

Firebird

06/11/2005

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?


Edilcimar

Edilcimar

Curtidas 0

Respostas

Bruno Belchior

Bruno Belchior

06/11/2005

tente isso:
Select Cliente from CLIENTES



GOSTEI 0
Edilcimar

Edilcimar

06/11/2005

mas é exatamente isto que está escrito na sql!!!


GOSTEI 0
Firekiller

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.


GOSTEI 0
Edilcimar

Edilcimar

06/11/2005

Eu já coloque o nome da tabela em letra maiúscula e continua não funcionando


GOSTEI 0
Bruno Belchior

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

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

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

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+


GOSTEI 0
Edilcimar

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


GOSTEI 0
Afarias

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+


GOSTEI 0
Edilcimar

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

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+


GOSTEI 0
Edilcimar

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

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+


GOSTEI 0
Edilcimar

Edilcimar

06/11/2005

eu já tentei com e sem aspas, quanto ao ibx se tem bug realmente não sei


GOSTEI 0
POSTAR