GARANTIR DESCONTO

Fórum Duvidas com DBExpress #356453

02/04/2008

0

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!!


Japapdb

Japapdb

Responder

Post mais votado

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


Japapdb

Japapdb
Responder

Gostei + 1

Mais Posts

02/04/2008

Fabiano Góes

teste assim:

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.


Responder

Gostei + 0

03/04/2008

Japapdb

o amigo, da o mesmo erro, fiz da maneira q vc explicou o datasetprovider esta configurado certinho tbm. mas o erro continua. :(


Responder

Gostei + 0

03/04/2008

Brunolspp

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.


Responder

Gostei + 0

03/04/2008

Macario

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)


Responder

Gostei + 0

03/04/2008

Japapdb

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


Responder

Gostei + 0

03/04/2008

Roger1976

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?


Responder

Gostei + 0

03/04/2008

Macario

Aproveitando o codigo do nosso colega Fabiano Goes,
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.


Responder

Gostei + 0

03/04/2008

Builder

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.


Responder

Gostei + 0

03/04/2008

Fabiano Góes

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.


Responder

Gostei + 0

04/04/2008

Japapdb

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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar