Duvidas com DBExpress
estou fazendo um controle de clientes em firebird, estou usando dbexpress, estou precisando fazer uma pesquisa sql usando o clientdataset e tenho o codigo abaixo:
Mas esta dando o erro: EDatabaseError with message ´Token unknown - line 1,char 16 select´.
clientdataset1.Close;
clientdataset1.CommandText :=´select * from cliente´;
clientdataset1.CommandText := clientdataset1.CommandText+´WHERE nome LIKE ´+#39+´¬´+edit2.Text+´¬´+39;
clientdataset1.Open;
procurei varios exemplos na net de como fazer pesquisa sql com o dbexpress atravez do cds mas só encontrei pesquisa sem sql.
alguem pode me ajudar, ou se souber algum lugar q tem exemplo para esta pesquisa.
valeu!!
Mas esta dando o erro: EDatabaseError with message ´Token unknown - line 1,char 16 select´.
clientdataset1.Close;
clientdataset1.CommandText :=´select * from cliente´;
clientdataset1.CommandText := clientdataset1.CommandText+´WHERE nome LIKE ´+#39+´¬´+edit2.Text+´¬´+39;
clientdataset1.Open;
procurei varios exemplos na net de como fazer pesquisa sql com o dbexpress atravez do cds mas só encontrei pesquisa sem sql.
alguem pode me ajudar, ou se souber algum lugar q tem exemplo para esta pesquisa.
valeu!!
Japapdb
Curtidas 0
Melhor post
Japapdb
03/04/2008
Amigo, meu num eh possivel acho q eh soh ak q num funciona mesmo, eu testei como vc disse: select * from cliente WHERE nome LIKE ´¬???¬´. e funcionou tudo blz, dei o commit e testei no programa mas da o mesmo erro.
Verifiquei o nome da tabela tbm e coloquei do jeito q foi criado.
Da uma olhada e ve se estou conectando tudo certo ak. pq to desistindo de usar banco de dados em firebird com dbexpress não estou conseguindo fazer a consulta de jeito nenhum, se ate o final de semana eu num conseguir fazer funcionar isso ak. vou ter q apelar pro paradox com bde, e encher de gambiarra mesmo kkkk pq a partir do fds vai começar a contar os dias para a entrega do sistema. mas tenho medo do banco de dados em paradox não aguentar, eh um cadastro para controle de estoque de loda de modas, eo banco de dados vai ter trocentos campos para cadastro completo de tudo da loja, vai rodar em 2 micros.
sqldataset:
commandtext esta ligado a ´cliente´
commandtype esta na opção ´cttable´
Sqlconnection ligao ao ´SQLconnection´
clientdataset
provider name liguei no datasetprovider
datasetprovider
dataset ´liguei no SQLDataset´
e habilitei o ´poAllowCommandtext´
datasource
Dataset ligado ao Clientdataset
Verifiquei o nome da tabela tbm e coloquei do jeito q foi criado.
Da uma olhada e ve se estou conectando tudo certo ak. pq to desistindo de usar banco de dados em firebird com dbexpress não estou conseguindo fazer a consulta de jeito nenhum, se ate o final de semana eu num conseguir fazer funcionar isso ak. vou ter q apelar pro paradox com bde, e encher de gambiarra mesmo kkkk pq a partir do fds vai começar a contar os dias para a entrega do sistema. mas tenho medo do banco de dados em paradox não aguentar, eh um cadastro para controle de estoque de loda de modas, eo banco de dados vai ter trocentos campos para cadastro completo de tudo da loja, vai rodar em 2 micros.
sqldataset:
commandtext esta ligado a ´cliente´
commandtype esta na opção ´cttable´
Sqlconnection ligao ao ´SQLconnection´
clientdataset
provider name liguei no datasetprovider
datasetprovider
dataset ´liguei no SQLDataset´
e habilitei o ´poAllowCommandtext´
datasource
Dataset ligado ao Clientdataset
GOSTEI 1
Mais Respostas
Fabiano Góes
02/04/2008
teste assim:
obs: lembrando que pra poder fazer a pesquisa com o ClientDataSet direto, o DataSetProvider deve estar configurado a propriedade: Options.poAllowCommandText = True.
var sSql: string; begin sSql := ´select * from cliente WHERE Upper(nome) LIKE ´ + QuotedStr(´¬´ + UpperCase(edit2.Text) + ´¬´); clientdataset1.Close; clientdataset1.CommandText := sSql; clientdataset1.Open; end;
obs: lembrando que pra poder fazer a pesquisa com o ClientDataSet direto, o DataSetProvider deve estar configurado a propriedade: Options.poAllowCommandText = True.
GOSTEI 0
Japapdb
02/04/2008
o amigo, da o mesmo erro, fiz da maneira q vc explicou o datasetprovider esta configurado certinho tbm. mas o erro continua. :(
GOSTEI 0
Brunolspp
02/04/2008
Monte as consultas no SQLDataSet e não no ClientDataSet.
No meu link de downloads gratuitos (http://cc.codegear.com/author/795118) tem vários exemplos e uma apostila básica de uso do dbexpress com delphi 7 e firebird que pode te ajudar nisso. É passo a passo e bem básica, mas pode srvir como base e para entendimento de algumas dúvidas.
Em tempo, para funcionar via clientdataset, é necessário que o allowcommand no datasetprovider esteja habilitado.
Mas esta não é a melhor prática.
No meu link de downloads gratuitos (http://cc.codegear.com/author/795118) tem vários exemplos e uma apostila básica de uso do dbexpress com delphi 7 e firebird que pode te ajudar nisso. É passo a passo e bem básica, mas pode srvir como base e para entendimento de algumas dúvidas.
Em tempo, para funcionar via clientdataset, é necessário que o allowcommand no datasetprovider esteja habilitado.
Mas esta não é a melhor prática.
GOSTEI 0
Macario
02/04/2008
estou fazendo um controle de clientes em firebird, estou usando dbexpress, estou precisando fazer uma pesquisa sql usando o clientdataset e tenho o codigo abaixo:
Mas esta dando o erro: EDatabaseError with message ´Token unknown - line 1,char 16 select´.
clientdataset1.Close;
clientdataset1.CommandText :=´select * from cliente´;
clientdataset1.CommandText := clientdataset1.CommandText+´WHERE nome LIKE ´+#39+´¬´+edit2.Text+´¬´+39;
clientdataset1.Open;
procurei varios exemplos na net de como fazer pesquisa sql com o dbexpress atravez do cds mas só encontrei pesquisa sem sql.
alguem pode me ajudar, ou se souber algum lugar q tem exemplo para esta pesquisa.
valeu!!
Esta ocorrendo o erro pois a String montada fica:
select * from [b:98c77512c9]clienteWHERE[/b:98c77512c9] nome LIKE ´¬texto¬´
8)
GOSTEI 0
Japapdb
02/04/2008
Então eu testei colocando um espaço, colocando todo o camando na mesma linha, mas mesmo assim da o mesmo erro. estou tentando de toda a maneira ak, procurando alguma coisa na net mas ta dificil
GOSTEI 0
Roger1976
02/04/2008
amigo, pelo o que eu vi, o erro tá apontando para o nome da tabela. Normalmente, eu crio no banco em maiúsculo, e no sql faço da mesma forma:
´select * from CLIENTE where NOME like ´ + quotedstr(´¬´ + edit1.text + ´¬´).
Como vc criou o nome da tabela no banco?
´select * from CLIENTE where NOME like ´ + quotedstr(´¬´ + edit1.text + ´¬´).
Como vc criou o nome da tabela no banco?
GOSTEI 0
Macario
02/04/2008
Aproveitando o codigo do nosso colega Fabiano Goes,
tente assim
Se não funcionar, tente usar a instrução no SQLDataSet.
tente assim
var
sSql: string;
begin
sSql := ´select * from cliente WHERE Upper(nome) LIKE ´ + QuotedStr(´¬´ + UpperCase(edit2.Text) + ´¬´);
clientdataset1.Close;
// [i:2947b213f9]Aqui força a ´limpeza´ do commandtext[/i:2947b213f9]
[b:2947b213f9]clientdataset1.CommandText := ´´; [/b:2947b213f9]
clientdataset1.CommandText := sSql;
clientdataset1.Open;
end;
Se não funcionar, tente usar a instrução no SQLDataSet.
GOSTEI 0
Builder
02/04/2008
Observando a sintaxe:
select * from clienteWHERE nome LIKE ´¬texto¬´
o clienteWHERE esta sem espaço, deveria ser cliente WHERE para separar o nome da tabela do comando WHERE.
Ficam assim suas linhas de comando:
clientdataset1.Close;
clientdataset1.CommandText :=´select * from cliente´;
clientdataset1.CommandText := clientdataset1.CommandText+´ WHERE nome LIKE ´+QuotedStr(´¬´+edit2.Text+´¬)´;
clientdataset1.Open;
Se mesmo assim não funcionar, abra o banco de dados através de uma ferramenta SQL de consulta de dados (Flamerobin, IBConsole, pgAdmin, etc. conforme o banco de dados) e teste a linha de comando:
select * from cliente WHERE nome LIKE ´¬???¬´
onde ??? é o que deseja procurar, por exemplo:
select * from cliente WHERE nome LIKE ´¬JOA¬´
O teste acima vai validar coisas como nome da tabela, campo, ...
Você também esta usando o nome da tabela em minúsculo, tenha cuidado com a padronização dos nomes das tabelas, pois nas edições isto pode ser um problema, já que o dbexpress (conforme o driver+bco de dados utilizado) poderá não reconhecer a tabela (table unknow), que irá enxergar cliente e CLIENTE como tabelas diferentes.
select * from clienteWHERE nome LIKE ´¬texto¬´
o clienteWHERE esta sem espaço, deveria ser cliente WHERE para separar o nome da tabela do comando WHERE.
Ficam assim suas linhas de comando:
clientdataset1.Close;
clientdataset1.CommandText :=´select * from cliente´;
clientdataset1.CommandText := clientdataset1.CommandText+´ WHERE nome LIKE ´+QuotedStr(´¬´+edit2.Text+´¬)´;
clientdataset1.Open;
Se mesmo assim não funcionar, abra o banco de dados através de uma ferramenta SQL de consulta de dados (Flamerobin, IBConsole, pgAdmin, etc. conforme o banco de dados) e teste a linha de comando:
select * from cliente WHERE nome LIKE ´¬???¬´
onde ??? é o que deseja procurar, por exemplo:
select * from cliente WHERE nome LIKE ´¬JOA¬´
O teste acima vai validar coisas como nome da tabela, campo, ...
Você também esta usando o nome da tabela em minúsculo, tenha cuidado com a padronização dos nomes das tabelas, pois nas edições isto pode ser um problema, já que o dbexpress (conforme o driver+bco de dados utilizado) poderá não reconhecer a tabela (table unknow), que irá enxergar cliente e CLIENTE como tabelas diferentes.
GOSTEI 0
Fabiano Góes
02/04/2008
sqldataset:
commandtext esta ligado a ´cliente´
commandtype esta na opção ´cttable´
Sqlconnection ligao ao ´SQLconnection´
clientdataset
provider name liguei no datasetprovider
datasetprovider
dataset ´liguei no SQLDataset´
e habilitei o ´poAllowCommandtext´
datasource
Dataset ligado ao Clientdataset
tai seu problema cara,
no sqldataset:
[b:c002775eb2]commandtype[/b:c002775eb2] deve ser ´ctQuery´
e
[b:c002775eb2]commandtext[/b:c002775eb2] deve estar limpo
obs: isso se você for mandar os camandos sql pelo ClientDataSet,
mais como o BrunoLSPP falou não é uma boa pratica o certo seria usar o SqlDataSet pra escrever o sql tipo:
SqlDataSet.Close; SqlDataSet.CommandText := seuSql; ClientDataSet.Open;
mais o importante é que se você vai fazer pesquisas o SqlDataSet deve estar com [b:c002775eb2]commandtype[/b:c002775eb2] deve ser ´ctQuery´ seja escrevendo o sql nele mesmo ou no ClientDataSet.
GOSTEI 0
Japapdb
02/04/2008
O Amigo, Agora sim ta tudo funcionando bonito...
o problema era esse mesmo das opções do sqldataset em command text e command type fiz da maneira q vc falou e funcionou tudo... valeu mesmo...
Agradeço a todos vcs q me ajudaram neste problema. muito agradecido.
o problema era esse mesmo das opções do sqldataset em command text e command type fiz da maneira q vc falou e funcionou tudo... valeu mesmo...
Agradeço a todos vcs q me ajudaram neste problema. muito agradecido.
GOSTEI 0