Fórum Erro ao abrir ClientDataset - URGENTE #450049

30/07/2013

0

Ola Pessoal,

A algum tempo estou tendo uns erros muito estranhos, e que geram esporadicamente ao tentar abrir um clientdataset.

O Erro é o seguinte:

Expected: 'true at position: 94
{"result":[{"rows":[0]},{"data":[26045,#192#192b#5#241#192#192#192#16#0#5#2#0#0#0#0#16e#170#3#161e#0#0#0#0#0#0#150#25#224#189#1#0#0#0#24#0#0#0#4#0#241#5#0#0#3#0#0#0#160#0#14status_analise#4#0#1#0#0#0#0#0#13status_seguro#4#0#1#0#0#0#0#0#11anli_codigo#4#0#1#0#0#0#0#0#18anli_estatus_geral#1#0J#0#0#0#1#0#5WIDTH#4#0#1#0#20#0#0#0#2#0#8READONLY#2#0#3#0#255#255#4LCID#4#0#1#0#0#0#0#0#0#0#0#128#0#0#0#0#0#0S#0#0#0#2A#0#0#0#0#128#0#0#0#0#0#0T#0#0#0#2A#0#0#0#0#128#0#0#0#0#0#0U#0#0#0#2A#0#0#0#0#128#0#0#0#0#0#0W#0#0#0#2A#0#0#0#0#128#0#0#0#0#0#0X#0#0#0#2A#0#0#0#255#255#0#0#0#0#0#0Y#0#0#0#2T#0#0#0#0#128#0#0#0#0#0#0Z ...

e ele continua, com milhões de caracteres assim. Percebi que no meio desse erro apare alguns campos do meu dataset, não sei se pode ajudar em algo.

Este dataset esta na minha aplicação cliente, que conecta em um servidor Datasnap. Estou utilizando Delphi 2010 e na minha máquina Win7 não consegui fazer gerar este erro, somente no cliente onde a máquina é XP.

Alguém saberia o que pode estar acontecendo?

Obrigado.
Leonardo Centenaro

Leonardo Centenaro

Responder

Posts

31/07/2013

Marco Salles

È Json isto ???

O Protocolo é tcip ?

é delphi to Delphi ? Cliente e Servidor ?

como esta o Select no servidor ?

[]sds

Responder

Gostei + 0

31/07/2013

Leonardo Centenaro

Poisé, parece ser JSON, mas deve ser dentro do clientdataset, pois eu não implemento nada.

É Datasnap com TCP/IP, eu tenho uma SQLQuery no servidor com um select nela. Mas na aplicação eu mudo esse sql (só adiciono alguns filtros no where na verdade). Meu DataSetProvider do servidor esta com as ProviderFlas = [poAllowCommandText, poUseQuoteChar]
Responder

Gostei + 0

31/07/2013

Marco Salles

Se vc não utilizar o commantText vc obtèm este erro ???

Ou somente ao utilizar esta query no Client ????

Responder

Gostei + 0

01/08/2013

Leonardo Centenaro

Obrigado pela ajuda, mas eu troquei minha SQLQuery no servidor por um SQLDataSet, só pra testar.

A princípio não gerou mais o erro, mas como eu disse é esporádico, uma hora gera outra hora não gera.

Vou acompanha por mais um tempo, se voltar a acontecer eu tento deixar o SQL somente no servidor,
se não eu acontecer eu finalizo o tópico.
Responder

Gostei + 0

01/08/2013

Marco Salles

Leonardo vc conhece query dinámicas no Servidor ???

[]sds
Responder

Gostei + 0

05/08/2013

Leonardo Centenaro

Sim Marco, acredito que até tenha lido um artigo seu sobre isso, onde você indica passar os filtros do WHERE no evento OnBeforeGetRecords do clientdataset né?

Você acha que isso pode resolver o problema? Hoje voltou a acontecer rsrsrs.

Obrigado.
Responder

Gostei + 0

05/08/2013

Deivison Melo

Tente o procedimento orientado pelo Marco e caso não seja solicionado, por favor, voltar a postar para tentarmos ajudar da melhor forma possível.
Responder

Gostei + 0

06/08/2013

Leonardo Centenaro

Alterei o sistema para utilizar as querys dinâmicas, conforme o Marco sugeriu.

Vou acompanhar durante o dia de hoje se não vai gerar mais, ai confirmo se foi solucionado ou não.

Obrigado
Responder

Gostei + 0

06/08/2013

Leonardo Centenaro

Voltou a gerar o erro, mesmo assim.

O estranho é que não gera logo que eu abro a tela, só se eu deixo ela aberta por um tempo.

Nesta tela eu tenho duas grids com sqls diferentes que ficam atualizando automático, com um Timer.

E as vezes junto com aquele primeiro erro gera também um "Missing Data Provider or Data Packet". Que eu sei, este só gera quando não tem um Datasetprovider ligado no clientdataset, ou quando não tem um SQL na query, que não é o caso.

Responder

Gostei + 0

06/08/2013

Marco Salles

Voltou a gerar o erro, mesmo assim.

O estranho é que não gera logo que eu abro a tela, só se eu deixo ela aberta por um tempo.

Nesta tela eu tenho duas grids com sqls diferentes que ficam atualizando automático, com um Timer.

E as vezes junto com aquele primeiro erro gera também um "Missing Data Provider or Data Packet". Que eu sei, este só gera quando não tem um Datasetprovider ligado no clientdataset, ou quando não tem um SQL na query, que não é o caso.



Não acretido que a query dinamicas iria resolver o seu problema visto que ao colocar o sql no servidor o problema continuou
descartando algo intrisico ao commandText

Esta tela que vc tem dois grids com sql diferents ( esta ligado a dois SqlDatasource diferentes ou a um so ??? tai a necessidade do commandtext ou da Query dinamicas ???)

Acredito que vc esta utilizando um Sqldatasouce somente tentando alimentar dois grids atraves de um timer . Correto ?

Caso sim , vc ja tentou com dois sqlDataSouce ??

Ja passei por situação similar a sua .. Onde utilizava um sqldatasoce e fazia consultas neles utilizando dois cds
com query dinamicas ligados a um mesmo TDatasetProvider

Minha solução foi sincronizar atraves de Thredas utilizando uma secção Crítica.. que cada consulta ocorreria separado da
outra . Uma so comecaria quando a outra terminasse

Parece que vc esta tendo problema similar

[]sds

Responder

Gostei + 0

06/08/2013

Leonardo Centenaro

Eu tenho um datasource pra cada grid. Essas consultas estão totalmente independentes, há um quarteto (datasource, clientdataset, datasetprovider, sqldataset) pra cada consulta.

E também as duas são abertas em um único Timer, acredito que não ocorra delas abrirem exatamente no mesmo instante.

O que seria esta secção Critica que você se refere?
Responder

Gostei + 0

06/08/2013

Marco Salles

Voltou a gerar o erro, mesmo assim.

O estranho é que não gera logo que eu abro a tela, só se eu deixo ela aberta por um tempo.

Nesta tela eu tenho duas grids com sqls diferentes que ficam atualizando automático, com um Timer.

E as vezes junto com aquele primeiro erro gera também um "Missing Data Provider or Data Packet".
Que eu sei, este só gera quando não tem um Datasetprovider ligado no clientdataset,
ou quando não tem um SQL na query, que não é o caso.



Não acretido que a query dinâmicas fosse resolver o seu problema visto que ao colocar o sql no servidor o problema
continuou descartando algo intrísico ao commandText

Esta tela que vc tem dois grids com sql diferents ( esta ligado a dois SqlDataSET diferentes ou a um só ???
tai a necessidade do commandtext ou da Query dinamicas ???)

Acredito que vc esta utilizando um SqldataSET somente tentando alimentar dois grids atraves de um timer . Correto ?

Caso sim , vc ja tentou com dois sqlDataSET ??

Ja passei por situação similar a sua .. Onde utilizava um sqldataSET e fazia consultas neles utilizando dois cds
com query dinamicas ligados a um mesmo TDatasetProvider

Minha solução foi sincronizar através de Thredas utilizando uma secção Crítica.. Onde cada consulta ocorreria separado
da outra . Uma so comecaria quando a outra terminasse

Parece que vc esta tendo problema similar

[]sds

Responder

Gostei + 0

06/08/2013

Marco Salles

Bem , antes de tentar com Threads utlizando sincronização, tente eliminar para teste uma outra Sql do Timer
para ver se o problema persisir . Isto é , se caraceteriza algum conflito .. Mas pode ser que o conflito esteja na
mesma consulta .. Aumente o intervalo do Timer para ter certeza que o processamento ira ocorrer apos o sql gerado
Claro que este aumento é paleativo , pois podera fazer este processo com Threads . Isto é so para teste mesmo e tentar
identificar a origem do problema

[]sds

Responder

Gostei + 0

06/08/2013

Leonardo Centenaro

Marco, fiz o que você disse, deixei somente uma query para ficar atualizando no Timer. A princípio não gerou mais, mas não posso confirmar que tenha resolvido, pois antes também gerava esporadicamente. Vou deixar aberto o sistema por mais tempo, pra ver se não gera mesmo.

Caso resolva, você indicaria criar threads para controlar isso?

Muito Obrigado.
Responder

Gostei + 0

06/08/2013

Leonardo Centenaro

Bom, não tinha gerado erro com somente uma tela aberta. Fui tentar abrir outra vez a mesma tela (só com uma consulta também) e deu erro.

Acho que teria que controlar no servidor, se o sqldataset não acabou de abrir um sql, esperar para tentar abrir outro.

O que você acha?
Responder

Gostei + 0

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

Aceitar