AJUDA UPDATE VB6 COM MYSQL

LUIS.HERRERA 10/08/2011 11:20:41
#381228
Bom dia, estou fazendo testes de acesso ao MySQL no meu site, por uma aplicativo VB6 + ADO + ODBC 5.1 do MySQL.

Conecto, consulto sem problemas, mas na hora de fazer um Update, dá o seguinte erro:
[MySQL][ODBC 5.1 Driver][mysqld-5.0.92-community]MySQL server has gone away

Alguém tem alguma idéia, estou tentando gravar no site a versão do programa que o cliente está usando, assim:
cnMySQL.Execute ([Ô]UPDATE tabLogin SET cmpVersaoMaior = [Ô] & App.Major & [Ô],cmpVersaoMenor = [Ô] & App.Minor & [Ô],cmpVersaoRevisao = [Ô] & App.Revision & [Ô] WHERE cmpCNPJ = [Ô] & ClienteCNPJ & [Ô];[Ô]), adExecuteNoRecords

Já pesquisei este erro e não encontrei nada que ajudasse. Minha conexão está assim:

CON_STR = [Ô]DRIVER={MySQL ODBC 5.1 DRIVER};[Ô] _
& [Ô]Server=[Ô] & SERVER & [Ô];[Ô] _
& [Ô]Port=[Ô] & PORTA & [Ô];[Ô] _
& [Ô]Database=[Ô] & BD_Name & [Ô];[Ô] _
& [Ô]User=[Ô] & USER & [Ô];[Ô] _
& [Ô]Password=[Ô] & SENHA & [Ô];[Ô] _
& [Ô]Option=3;[Ô]

With cnMySQL
.CursorLocation = adUseClient
.ConnectionString = CON_STR
.ConnectionTimeout = 60 [ô] incluí este
.CommandTimeout = 400 [ô] e este também
.Open CON_STR
End With

Pergunta o que é esse Option = 3 se o padrão é -1 ?

Notas:
1- tentei com e sem o ponto e vírgula no final.
2- os campos de versão no banco são INT (10) já o cmpCNPJ é CHAR (14). Tentei passar como string e sem, mas não resolveu.
3- Na tabela tenho dois registros com o mesmo CNPJ, esta não é chave primaria, então tem que alterar os dois.

MKING 10/08/2011 11:25:15
#381229
Se não me engano esse erro geralmente acontece quando o serviço do MySql cai ou está parado, checou isso?
KERPLUNK 10/08/2011 11:31:19
#381230
Esse [Ô]option[Ô] na connectionstring é como o driver ODBC deve se comportar, veja a tabela:
Microsoft Access, Visual Basic = 3
Driver trace generation (Debug mode) = 4
Microsoft Access (with improved DELETE queries) =35
Large tables with too many rows =2049
Sybase PowerBuilder =135168
Query log generation (Debug mode) =524288
Generate driver trace as well as query log (Debug mode) =524292
Large tables with no-cache results =3145731

Para mais informações sobre isso veja aqui
LUIS.HERRERA 10/08/2011 11:37:54
#381231
Mking o banco está funcionando sim, pois ele conecta e consulta (Select) inclusive me conecto também pelo programa HeidiSQL que uso para editar o banco sem problemas.

Kerplunk - desculpe mas fiquei sem entender, como estou usando o VB6 para conexão então tenho de usar mesmo o Option = 3 é isso?
Ou será que cada tipo de ação no banco tem que usar um option diferente? não consegui entender essas opções ficou confuso.
KERPLUNK 10/08/2011 11:43:23
#381235
LUIS HERRERA:
SIm, é isso mesmo, o ideal é usar essa opção para o caso de estar usando com VB.
Essas opções são hexacumulativas, ou seja, pode somar uma com outra para ter as duas juntas:
Tipo, quer usar o MySQL com VB e Log de queries:
3 + 524288=524291
ou seja:
CON_STR = [Ô]DRIVER={MySQL ODBC 5.1 DRIVER};[Ô] _
& [Ô]Server=[Ô] & SERVER & [Ô];[Ô] _
& [Ô]Port=[Ô] & PORTA & [Ô];[Ô] _
& [Ô]Database=[Ô] & BD_Name & [Ô];[Ô] _
& [Ô]User=[Ô] & USER & [Ô];[Ô] _
& [Ô]Password=[Ô] & SENHA & [Ô];[Ô] _
& [Ô]Option=[txt-color=#e80000]524291[/txt-color];[Ô]
LUIS.HERRERA 10/08/2011 11:44:14
#381236
Pessoal acho que o problema está no Where, se eu usar o campo ID (chave) primária ele funciona, mas quando uso o campo CNPJ, pois tem 2 registros e quero mudar em ambos, ele não funciona, será no MySQL diferente o SQL do que usava no Access?

Pelo que sei o Update deve permitir que se mude vários registros pela cláusula Where sem ter de usar o ID ou no MySQL não dá?
FFCOUTO 10/08/2011 11:45:57
#381239
LUIS, posso estar enganado mas acho a opção ConnectionTimeout deveria ser setada como 0, assim como a opção CommandTimeout.

Pode ser que o servidor do MySQL está derrubando a conexão automaticamente a cada 60 segundos que é o tempo que você definiu.

Estou apenas uma especulando.
KERPLUNK 10/08/2011 11:48:15
#381242
O campo CNPJ está numérico no teu banco? Se sim, o update está correto, se não, tem que usar as crases na SQL:

cnMySQL.Execute ([Ô]UPDATE tabLogin SET cmpVersaoMaior = [Ô] & App.Major & [Ô],cmpVersaoMenor = [Ô] & App.Minor & [Ô],cmpVersaoRevisao = [Ô] & App.Revision & [Ô] WHERE cmpCNPJ = '[Ô] & ClienteCNPJ & [Ô]';[Ô]), adExecuteNoRecords
LUIS.HERRERA 10/08/2011 12:00:50
#381245
Kerplunk o problema, é mesmo nesse campo:
No banco o campo é CHAR (14) estava usando o apóstrofo como no Accesse e não sabei que tinha de ser a Cráse, troquei e mudou para o erro:
[MySQL][ODBC 5.1 Driver][mysqld-5.0.92-community]Unknown column [ô]ClienteCNPJ [ô] in [ô]where clause[ô]

cnMySQL.Execute ([Ô]UPDATE tabLogin SET cmpVersaoMaior= [Ô] & App.Major & [Ô], cmpVersaoMenor= [Ô] & App.Minor & [Ô], cmpVersaoRevisao= [Ô] & App.Revision & [Ô] WHERE cmpCNPJ = '[Ô] & ClienteCNPJ & [Ô]';[Ô]), adExecuteNoRecords

vi na estrutura da tabela que existe uma chave AZUL ao lado do campo, é para indexar o campo index (FullText). Será que é isso? Acho que não.

Segue imagem da estrutura da taela.
MKING 10/08/2011 12:33:25
#381250
Tente colocar apóstrofos em todos os campos pra garantir! Exemplo :

cnMySQL.Execute ([Ô]UPDATE tabLogin SET cmpVersaoMaior= [ô] [Ô] & App.Major & [Ô] [ô], cmpVersaoMenor= [ô] [Ô] & App.Minor & [Ô] [ô], cmpVersaoRevisao= [ô] [Ô] & App.Revision & [Ô] [ô] WHERE cmpCNPJ = [ô] [Ô] & ClienteCNPJ & [Ô] [ô];[Ô])
LUIS.HERRERA 10/08/2011 12:37:57
#381251
O erro aponta para o campo no WHERE os outros campos são numéricos então não dá para passar como texto.

ERRO
Unknown column [ô]cmpCNPJ[ô] in [ô]where clause[ô]
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas