Erro ao abrir ClientDataset - URGENTE
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.
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
Curtidas 0
Respostas
Marco Salles
30/07/2013
È Json isto ???
O Protocolo é tcip ?
é delphi to Delphi ? Cliente e Servidor ?
como esta o Select no servidor ?
[]sds
O Protocolo é tcip ?
é delphi to Delphi ? Cliente e Servidor ?
como esta o Select no servidor ?
[]sds
GOSTEI 0
Leonardo Centenaro
30/07/2013
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]
É 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]
GOSTEI 0
Marco Salles
30/07/2013
Se vc não utilizar o commantText vc obtèm este erro ???
Ou somente ao utilizar esta query no Client ????
Ou somente ao utilizar esta query no Client ????
GOSTEI 0
Leonardo Centenaro
30/07/2013
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.
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.
GOSTEI 0
Marco Salles
30/07/2013
Leonardo vc conhece query dinámicas no Servidor ???
[]sds
[]sds
GOSTEI 0
Leonardo Centenaro
30/07/2013
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.
Você acha que isso pode resolver o problema? Hoje voltou a acontecer rsrsrs.
Obrigado.
GOSTEI 0
Deivison Melo
30/07/2013
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.
GOSTEI 0
Leonardo Centenaro
30/07/2013
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
Vou acompanhar durante o dia de hoje se não vai gerar mais, ai confirmo se foi solucionado ou não.
Obrigado
GOSTEI 0
Leonardo Centenaro
30/07/2013
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.
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.
GOSTEI 0
Marco Salles
30/07/2013
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.
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
GOSTEI 0
Leonardo Centenaro
30/07/2013
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?
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?
GOSTEI 0
Marco Salles
30/07/2013
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.
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
GOSTEI 0
Marco Salles
30/07/2013
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
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
GOSTEI 0
Leonardo Centenaro
30/07/2013
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.
Caso resolva, você indicaria criar threads para controlar isso?
Muito Obrigado.
GOSTEI 0
Leonardo Centenaro
30/07/2013
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?
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?
GOSTEI 0
Marco Salles
30/07/2013
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?
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?
Bem quem abri o Sql é o clientdataset ... Não entendi direito como vc utiliza um Timer para abri-las ?
Quanto a controlar este processo de abertura , acho que este é o caminho.. Como eu disse no início controlei este
processo através de controle de tarefas ( Threads ( CriticalSection , Mutex ou Semaphore )
GOSTEI 0
Marco Salles
30/07/2013
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?
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?
Hj estou D+ ...
Bem , quem abrE o Sql é o clientdataset ... Não entendi direito como vc utiliza um Timer para abri-las ?
Quanto a controlar este processo de abertura , acho que este é o caminho.. Como eu disse no início controlei este
processo através de controle de tarefas ( Threads ( CriticalSection , Mutex ou Semaphore )
GOSTEI 0
Leonardo Centenaro
30/07/2013
Consegui resolver, meu problema era outro na verdade.
Havia uma outra thread que era criada junto com esta tela e que utilizava a mesma conexão do Datamodule da aplicação cliente.
O que eu fiz foi criar uma conexão com o servidor datanap própria para a thread, com os mesmos parâmetros do SQLConnection do meu Datamodule,
mas uma instância diferente. Ai as querys que eu utilizo dentro desta thread, se ligam somente a esta conexão separada.
Pelo que eu vi não é recomendado utilizar uma conexão compartilhada dentro de threads, cada thread tem ter uma conexão própria.
Obrigado pela ajuda mesmo assim.
Havia uma outra thread que era criada junto com esta tela e que utilizava a mesma conexão do Datamodule da aplicação cliente.
O que eu fiz foi criar uma conexão com o servidor datanap própria para a thread, com os mesmos parâmetros do SQLConnection do meu Datamodule,
mas uma instância diferente. Ai as querys que eu utilizo dentro desta thread, se ligam somente a esta conexão separada.
Pelo que eu vi não é recomendado utilizar uma conexão compartilhada dentro de threads, cada thread tem ter uma conexão própria.
Obrigado pela ajuda mesmo assim.
GOSTEI 0
Marco Salles
30/07/2013
Pelo que eu vi não é recomendado utilizar uma conexão compartilhada dentro de threads, cada thread tem ter uma conexão própria.
Ue ???? Mas isto é um dos objetivos da Sincronização das tarefas .. Exatamente o conceito das secções .. quem disse que uma uníca Threds para fazer tudo ?
ficou meio estranho , parece que eu lhe informei errado ou vc entendeu errado
[]sds
GOSTEI 0
Rodrigo Lacerda
30/07/2013
Nunca me deparei com esse Erro....
Muito boa a postagem
Abs
Muito boa a postagem
Abs
GOSTEI 0
Deivison Melo
30/07/2013
Dúvida solucionada!
Obrigado Marco pelo apoio ao nosso nobre colega!
Abração a todos e bons códigos!
Obrigado Marco pelo apoio ao nosso nobre colega!
Abração a todos e bons códigos!
GOSTEI 0
Marco Salles
30/07/2013
Dúvida solucionada!
Obrigado Marco pelo apoio ao nosso nobre colega!
Abração a todos e bons códigos!
Obrigado Marco pelo apoio ao nosso nobre colega!
Abração a todos e bons códigos!
[]sds david
Nunca me deparei com esse Erro....
Muito boa a postagem
Abs
Muito boa a postagem
Abs
Blz Rodrigo , se eu tiver um tempinho vou simular um erro aqui e d um print na tela para vc observar
[]sds
GOSTEI 0
Leonardo Centenaro
30/07/2013
Eu tenho um print do erro aqui se quiserem. Só não sei como postar imagens aqui no fórum.
Qualquer coisa, se quiserem deixar os e-mails de vocês eu posso enviar o print.
Qualquer coisa, se quiserem deixar os e-mails de vocês eu posso enviar o print.
GOSTEI 0