ERRO NAO IDENTIFICADO

LUIS.HERRERA 18/09/2012 10:57:08
#409870
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

ONBASS 18/09/2012 11:14:11
#409872
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.
LUIS.HERRERA 18/09/2012 11:36:43
#409874
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?

ONBASS 18/09/2012 12:29:21
#409879
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í:

  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?
MARCELO.TREZE 18/09/2012 12:59:09
#409880
qual o sistema operacional do computador que gera o erro?

OCELOT 18/09/2012 13:04:30
#409881
Resposta escolhida
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.
MARCELO.TREZE 18/09/2012 13:11:17
#409883
Melhor , qual o sistema operacional em que o sistema é criado, Compilado? e qual o sistema em que ocorre o erro?



VELDRAME 18/09/2012 13:32:32
#409884
Tem muita ASPAS juntas, você já verificou se ha informação do txtCodigo ou da TextMatrix.
Pois esta assim: [ô] [Ô] [Ô] [ô] (simples, dupla, dupla,simples).
GOODSPEAKERS 18/09/2012 14:15:44
#409889
Voce esta limpando a variveis antes do outro insert ?

Qual a base de dados ?
LUIS.HERRERA 18/09/2012 17:23:46
#409920
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.

LLAIA 20/09/2012 10:21:23
#410061
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.
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas