DbExpress.. CommandText é case sensitive?
Caros colegas,
Passei por uma situação hj que me causou um certo espanto e gostaría da confirmação de vocês.
Na sexta-feira passada criei uma aplicação de teste para acessar uma tabela no Firebird com os componentes do DbExpress (SQLConection --> SQLDataSet --> DataSetProvider --> ClientDataSet). Testei e funcionou perfeitamente.
Hoje, voltei a criar mais um teste, porém acessando outra tabela, com os mesmos componentes e com as configurações exatamente iguais as que criei no sistema de sexta-feira. Qual foi a minha surpresa que os dados eram lidos mas não conseguia atualizá-los no servidor (método ApplyUpdates(-1)).
Para ter certeza que não era a tabela, busquei acessar a mesma tabela da aplicação de sexta-feira, porém continuava não atualizando o servidor.
Depois de muita peleja nesta tarde, verifiquei que a instrução select na propriedade CommandText do componente SQLDataSet da aplicação de hoje estava com letras minúsculas (mais precisamente o nome da tabela) e ao mudar para maiúscula o aplicativo funcionou corretamente.
Alguém já passou por situação parecida?
E sería correto afirmar, mediante este caso, que as instruções deverão ser inseridas em maiúsculas?
Agradecido a atenção..
Passei por uma situação hj que me causou um certo espanto e gostaría da confirmação de vocês.
Na sexta-feira passada criei uma aplicação de teste para acessar uma tabela no Firebird com os componentes do DbExpress (SQLConection --> SQLDataSet --> DataSetProvider --> ClientDataSet). Testei e funcionou perfeitamente.
Hoje, voltei a criar mais um teste, porém acessando outra tabela, com os mesmos componentes e com as configurações exatamente iguais as que criei no sistema de sexta-feira. Qual foi a minha surpresa que os dados eram lidos mas não conseguia atualizá-los no servidor (método ApplyUpdates(-1)).
Para ter certeza que não era a tabela, busquei acessar a mesma tabela da aplicação de sexta-feira, porém continuava não atualizando o servidor.
Depois de muita peleja nesta tarde, verifiquei que a instrução select na propriedade CommandText do componente SQLDataSet da aplicação de hoje estava com letras minúsculas (mais precisamente o nome da tabela) e ao mudar para maiúscula o aplicativo funcionou corretamente.
Alguém já passou por situação parecida?
E sería correto afirmar, mediante este caso, que as instruções deverão ser inseridas em maiúsculas?
Agradecido a atenção..
Rafs
Curtidas 0
Respostas
Vieira_alex
26/07/2004
Seu servidor é Linux ?
GOSTEI 0
Xisto
26/07/2004
Ja passei por isso, desde entao sempre escrevo o nome da tabela em MAIUSCULAS, nao percebi erros com referencia a nome de campos, p.ex.
OBS.: Faco acesso dbexpress da mesma forma que vc descreveu.
OBS.: Faco acesso dbexpress da mesma forma que vc descreveu.
GOSTEI 0
Rafs
26/07/2004
Seu servidor é Linux ?
O meu servidor é W2K...
.....
A partir de ontem adotei tb colocar sempre as tabelas em maiúsculas...
Quase fiquei maluco procurando parâmetros que estivessem configurados erradamente que pudessem ocasionar isto. :?
GOSTEI 0
Biffi
26/07/2004
Acredito que a resposta da questão seja o ClientDataSet. Pois aqui onde trabalho, nós utilizamos DBExpress mais precisadamente SQLClientDataSet(delphi6). E nunca tivemos esse problema, porém em casa eu utilizo o acesso da mesma forma que foi citada anteriormente (delphi7), e tive o mesmo problema.
GOSTEI 0
Rômulo Barros
26/07/2004
[color=red:b73d670a44][b:b73d670a44]Respondendo:[/b:b73d670a44][/color:b73d670a44]
Amigos, infelizmente o CommandText(ClientDataSet) e o Sql(TSqlQuery) são CaseSensitive(Minúsculas diferem de maiúsculas). Antes de postar esta mensagem, sofri bastante aqui com o exemplo:
Sql.Add(´Select * from [color=red:b73d670a44]clientes[/color:b73d670a44]´);
... ... ... // comandos
Post();
ApplyUpdates(0);// Erro aqui: Table or View Not Exists. No Key Specify.
Então, troquei o código para:
Sql.Add(´Select * from [color=red:b73d670a44]CLIENTES[/color:b73d670a44]´);
... ... ... // comandos
Post();
ApplyUpdates(0);// Não deu mais erro
:P :P :P :P :P :P :P :P :P :P :P
Amigos, infelizmente o CommandText(ClientDataSet) e o Sql(TSqlQuery) são CaseSensitive(Minúsculas diferem de maiúsculas). Antes de postar esta mensagem, sofri bastante aqui com o exemplo:
Sql.Add(´Select * from [color=red:b73d670a44]clientes[/color:b73d670a44]´);
... ... ... // comandos
Post();
ApplyUpdates(0);// Erro aqui: Table or View Not Exists. No Key Specify.
Então, troquei o código para:
Sql.Add(´Select * from [color=red:b73d670a44]CLIENTES[/color:b73d670a44]´);
... ... ... // comandos
Post();
ApplyUpdates(0);// Não deu mais erro
:P :P :P :P :P :P :P :P :P :P :P
GOSTEI 0
Yallebr
26/07/2004
Pessoal,
O Command Text não é Caso sensivel. O banco de dados q vc´s estão utilizando é.
Yalle Cunha.
O Command Text não é Caso sensivel. O banco de dados q vc´s estão utilizando é.
Yalle Cunha.
GOSTEI 0
Vieira_alex
26/07/2004
Cara este tópico, já está quase fazendo aniversário...
GOSTEI 0
Rômulo Barros
26/07/2004
Caramba.. eita vontade de responder ´Arretada´... :lol: :lol:
A galera tá ´ acordando defunto ´ .. .. .. :roll: :roll:
A galera tá ´ acordando defunto ´ .. .. .. :roll: :roll:
GOSTEI 0