ERRO NAO IDENTIFICADO
Bom dia.
Um novo cliente instalou meu sistema, e está acontecendo um erro em um dos cadastros de modo intermitente e não consido identificar o motivo.
error -2147217900 (não achei referência na Web)
Descrição : Erro de sintaxe na seqüência de caracteres na expressão de consulta [ô][Ô][Ô][ô])[ô]
A descrição informa ser uma consulta, porém trata-se de um INSERT no banco.
With FlexAtitudes
For i = 1 To .Rows - 1
cn.Execute ([Ô]INSERT INTO tabCargoAtitudes (cmpIDCARGO,cmpIDATITUDE,cmpNOTA) VALUES [Ô] & [Ô]([Ô] & txtCodigo.Text & [Ô],[Ô] & .TextMatrix(i, 1) & [Ô],[Ô] & .TextMatrix(i, 3) & [Ô])[Ô]), adExecuteNoRecords
Next i
End With
O problema é que não consigo reproduzir o erro informado pelo cliente. O cadastro (INSERT) é feito em várias etapas (várias tabelas) cada tabela tem um loop, ou seja, um For para incluir vários itens de um FlexGrid em cada tabela. O erro está ocorrendo em uma tabela especÃfica, onde a estrutura é idência a outra tabela que é feita antes sem problema.
A descrição não é clara, pois não exibe a string de Insert, só diz que a empressão de consulta ... que parece estar vazia, mas no print da tela do cliente há todos os dados.
Alguém tem alguma idéia do que pode ser, pois isso sempre funcionou em outros clientes.
VB6
Um novo cliente instalou meu sistema, e está acontecendo um erro em um dos cadastros de modo intermitente e não consido identificar o motivo.
error -2147217900 (não achei referência na Web)
Descrição : Erro de sintaxe na seqüência de caracteres na expressão de consulta [ô][Ô][Ô][ô])[ô]
A descrição informa ser uma consulta, porém trata-se de um INSERT no banco.
With FlexAtitudes
For i = 1 To .Rows - 1
cn.Execute ([Ô]INSERT INTO tabCargoAtitudes (cmpIDCARGO,cmpIDATITUDE,cmpNOTA) VALUES [Ô] & [Ô]([Ô] & txtCodigo.Text & [Ô],[Ô] & .TextMatrix(i, 1) & [Ô],[Ô] & .TextMatrix(i, 3) & [Ô])[Ô]), adExecuteNoRecords
Next i
End With
O problema é que não consigo reproduzir o erro informado pelo cliente. O cadastro (INSERT) é feito em várias etapas (várias tabelas) cada tabela tem um loop, ou seja, um For para incluir vários itens de um FlexGrid em cada tabela. O erro está ocorrendo em uma tabela especÃfica, onde a estrutura é idência a outra tabela que é feita antes sem problema.
A descrição não é clara, pois não exibe a string de Insert, só diz que a empressão de consulta ... que parece estar vazia, mas no print da tela do cliente há todos os dados.
Alguém tem alguma idéia do que pode ser, pois isso sempre funcionou em outros clientes.
VB6
tenta assim pra ver:
cn.Execute ([Ô]INSERT INTO tabCargoAtitudes (cmpIDCARGO,cmpIDATITUDE,cmpNOTA) VALUES ([ô][Ô] & txtCodigo.Text & [Ô][ô],[ô][Ô] & .TextMatrix(i, 1) & [Ô][ô],[ô][Ô] & .TextMatrix(i, 3) & [Ô][ô][Ô]), adExecuteNoRecords
só acrescentei aspas simples antes e depois de cada campo.
cn.Execute ([Ô]INSERT INTO tabCargoAtitudes (cmpIDCARGO,cmpIDATITUDE,cmpNOTA) VALUES ([ô][Ô] & txtCodigo.Text & [Ô][ô],[ô][Ô] & .TextMatrix(i, 1) & [Ô][ô],[ô][Ô] & .TextMatrix(i, 3) & [Ô][ô][Ô]), adExecuteNoRecords
só acrescentei aspas simples antes e depois de cada campo.
ONBASS os 3 campos são numéricos, por isso não tem o apóstrofe. Além disse sempre funcionou assim.
Outra coisa estranha é que também está dando esse erro abaixo e fecha o programa, mesmo ele estando com tratamento de erro na rotina.
run-time error 91 object variable or with block variable not set
A coisa estranha é que as inclusões nas tabelas anteriores ocorre sem problema, mas chega nesse e dá o erro, sendo que essa tabela é idência a que é executada no For anterior sem problema.
Pergunta:
O Terminal Server ou servidores tem alguma configuração especÃfica para definir o tempo que uma conexão fica aberta?
Pergunto porque estou usando VB6 + ADO + MSAccess e abro a conexão, executo tudo e fecho, isso para cada cadastro, consulta, edição etc... sem nenhum problema. Porém o servidor desse cliente disseram que é um pouco lento, então será que ele fecha a conexão do banco antes de meu programa manar esse comando?
Outra coisa estranha é que também está dando esse erro abaixo e fecha o programa, mesmo ele estando com tratamento de erro na rotina.
run-time error 91 object variable or with block variable not set
A coisa estranha é que as inclusões nas tabelas anteriores ocorre sem problema, mas chega nesse e dá o erro, sendo que essa tabela é idência a que é executada no For anterior sem problema.
Pergunta:
O Terminal Server ou servidores tem alguma configuração especÃfica para definir o tempo que uma conexão fica aberta?
Pergunto porque estou usando VB6 + ADO + MSAccess e abro a conexão, executo tudo e fecho, isso para cada cadastro, consulta, edição etc... sem nenhum problema. Porém o servidor desse cliente disseram que é um pouco lento, então será que ele fecha a conexão do banco antes de meu programa manar esse comando?
Rapaz, creio q sem um pedaço de codigo maior vai ficar meio complicado analisar o processo.
Coloca a inclusao da tabela anterior também.
Só por desencargo, coloca assim aÃ:
Os valores estao dispostos em linhas ou colunas no grid?
Coloca a inclusao da tabela anterior também.
Só por desencargo, coloca assim aÃ:
cn.Execute ([Ô]INSERT INTO tabCargoAtitudes (cmpIDCARGO,cmpIDATITUDE,cmpNOTA) VALUES ([Ô] & txtCodigo.Text & [Ô],[Ô] & .TextMatrix(i, 1) & [Ô],[Ô] & .TextMatrix(i, 3) & [Ô][Ô]), adExecuteNoRecords
Os valores estao dispostos em linhas ou colunas no grid?
qual o sistema operacional do computador que gera o erro?
Acho que a primeira coisa a se fazer ai, se você já sabe em qual SQL está dando o erro é começar a salvar um log desta SQL, monte a SQL em uma string primeiro antes de executar e vá salvando ela em um arquivo de texto, quando o erro ocorrer você pega o arquivo e vê o que estava sendo executado.
Outra coisa seria parar de usar SQL como string concatenada e passar a fazer da forma mais recomendada e segura, com parâmetros, convertendo os dados para os tipos corretos antes de passar os parâmetros.
Outra coisa seria parar de usar SQL como string concatenada e passar a fazer da forma mais recomendada e segura, com parâmetros, convertendo os dados para os tipos corretos antes de passar os parâmetros.
Melhor , qual o sistema operacional em que o sistema é criado, Compilado? e qual o sistema em que ocorre o erro?
Tem muita ASPAS juntas, você já verificou se ha informação do txtCodigo ou da TextMatrix.
Pois esta assim: [ô] [Ô] [Ô] [ô] (simples, dupla, dupla,simples).
Pois esta assim: [ô] [Ô] [Ô] [ô] (simples, dupla, dupla,simples).
Voce esta limpando a variveis antes do outro insert ?
Qual a base de dados ?
Qual a base de dados ?
Pessoal desculpe só responder agora, estive fora.
A idéia do OCELOT foi interessante. Acabei de criar a rotina que irá gerar o TXT com todos os dados do cadastro. Ocorrendo o erro, irá interromper a escrita do TXT na exata linha do erro e com o conteúdo da string de INSERT. Já enviei ao cliente para ele rodar. Assim que tiver o retorno, eu posto aqui.
Obrigado a todos por enquanto.
A idéia do OCELOT foi interessante. Acabei de criar a rotina que irá gerar o TXT com todos os dados do cadastro. Ocorrendo o erro, irá interromper a escrita do TXT na exata linha do erro e com o conteúdo da string de INSERT. Já enviei ao cliente para ele rodar. Assim que tiver o retorno, eu posto aqui.
Obrigado a todos por enquanto.
Já tive um problema assim uma vez, aà criei um banco vazio e importei todas as tabelas e consultas pra esse novo banco e resolveu. Tem gente que até resolveu substituindo o mdw.
http://www.access-programmers.co.uk/forums/showthread.php?t=82674
Pelo visto é uma mensagem mal direcionada do Jet Engine, pois ela não te informa o local do erro da query como de costume. Te retorna uma string nula, com o último parêntese.
http://www.access-programmers.co.uk/forums/showthread.php?t=82674
Pelo visto é uma mensagem mal direcionada do Jet Engine, pois ela não te informa o local do erro da query como de costume. Te retorna uma string nula, com o último parêntese.
Tópico encerrado , respostas não são mais permitidas