ERRO AO ATUALIZAR TABELA - MYSQL, ADO E ODBC
Tenho um BD MySQL 5.1 com Driver ODBC 3.00 no qual estou fazendo Loop em uma tabela e ao atualizar [Ô]Update[Ô] dá o seguinte erro: [Ô]a linha não pode ser localizada para atualização[Ô]...
Segue abaixo meu código:
Public BD_EXTERNO As New ADODB.Connection
BD_EXTERNO = [Ô]Driver={MySQL ODBC 5.1 Driver};Server=[Ô] & SISTEMA_Bd!diretorio_servidor & [Ô];Database=[Ô] & SISTEMA_Bd!NOME_BD & [Ô];User=[Ô] & SISTEMA_Bd!USUARIO & [Ô];Password=[Ô] & SISTEMA_Bd!Senha & [Ô];Option=16834;[Ô]
BD_EXTERNO.CursorLocation = adUseClient
BD_EXTERNO.Open [ô]
Dim BD_Produtos_TEMP As New ADODB.Recordset
SQLtemp = [Ô]SELECT............[Ô]
BD_Vendas_Itens_TEMP.CursorLocation = adUseClient
BD_Vendas_Itens_TEMP.Open SQLtemp, BD_EXTERNO, adOpenKeyset, adLockPessimistic
BD_Vendas_Itens_TEMP.MoveFirst
Do While Not BD_Vendas_Itens_TEMP.EOF
If BD_Vendas_Itens_TEMP!CANCELADO = [Ô]N[Ô] Then
BD_Vendas_Itens_TEMP!CANCELADO = [Ô]S[Ô]
BD_Vendas_Itens_TEMP!BAIXA = [Ô]N[Ô]
BD_Vendas_Itens_TEMP.Update
End If
BD_Vendas_Itens_TEMP.MoveNext
Loop
Já fiz de tudo e até agora nada... Já troquei para todos os tipos de bloqueio e mesmo assim não resolve....
Se alguem puder me adudar desde já fico muito grato.
Atenciosamente,
Elton Calado
msn :elton-calado@hotmail.com
skype : elton-calado
Segue abaixo meu código:
Public BD_EXTERNO As New ADODB.Connection
BD_EXTERNO = [Ô]Driver={MySQL ODBC 5.1 Driver};Server=[Ô] & SISTEMA_Bd!diretorio_servidor & [Ô];Database=[Ô] & SISTEMA_Bd!NOME_BD & [Ô];User=[Ô] & SISTEMA_Bd!USUARIO & [Ô];Password=[Ô] & SISTEMA_Bd!Senha & [Ô];Option=16834;[Ô]
BD_EXTERNO.CursorLocation = adUseClient
BD_EXTERNO.Open [ô]
Dim BD_Produtos_TEMP As New ADODB.Recordset
SQLtemp = [Ô]SELECT............[Ô]
BD_Vendas_Itens_TEMP.CursorLocation = adUseClient
BD_Vendas_Itens_TEMP.Open SQLtemp, BD_EXTERNO, adOpenKeyset, adLockPessimistic
BD_Vendas_Itens_TEMP.MoveFirst
Do While Not BD_Vendas_Itens_TEMP.EOF
If BD_Vendas_Itens_TEMP!CANCELADO = [Ô]N[Ô] Then
BD_Vendas_Itens_TEMP!CANCELADO = [Ô]S[Ô]
BD_Vendas_Itens_TEMP!BAIXA = [Ô]N[Ô]
BD_Vendas_Itens_TEMP.Update
End If
BD_Vendas_Itens_TEMP.MoveNext
Loop
Já fiz de tudo e até agora nada... Já troquei para todos os tipos de bloqueio e mesmo assim não resolve....
Se alguem puder me adudar desde já fico muito grato.
Atenciosamente,
Elton Calado
msn :elton-calado@hotmail.com
skype : elton-calado
Se você está usando o MySQL versão 5.x e o driver de MyODBC para banco versão 3.x, aconselho alterar este o mais rápido 'possivel pois o seu problema pode ser devido a versão errada do driver.
Caro Colega,
A versão do ODBC que estou utilizando é a mais recente, ou seja é a 5.1.7
segue abaixo o link para baixar:
http://www.mysql.com/downloads/connector/odbc/
No post digitei a versão errada...
Se vc tiver alguma outra dica, fico muito grato.
A versão do ODBC que estou utilizando é a mais recente, ou seja é a 5.1.7
segue abaixo o link para baixar:
http://www.mysql.com/downloads/connector/odbc/
No post digitei a versão errada...
Se vc tiver alguma outra dica, fico muito grato.
colega posso estar errado mas veja esta linha
SQLtemp = [Ô]SELECT............[Ô]
acredito que o certo seria
SQLtemp = [Ô]SELECT * FROM tabela[Ô]
SQLtemp = [Ô]SELECT............[Ô]
acredito que o certo seria
SQLtemp = [Ô]SELECT * FROM tabela[Ô]
Caro Colega,
A linha : SQLtemp = [Ô]SELECT............[Ô] é apenas um exemplo... é que o SELECT é grande e para não digitar tudo coloquei assim...
Toda via, consegui resolver meu problema criando um Indice Primario e Exlusivo formado por vários campos... Depois coloquei os Campos do Indice na SQL... Ai resolveu meu problema...
Fica aqui meus agradecimentos aos colegas que responderam minha dúvida.
Atenciosamente,
Elton Calado
A linha : SQLtemp = [Ô]SELECT............[Ô] é apenas um exemplo... é que o SELECT é grande e para não digitar tudo coloquei assim...
Toda via, consegui resolver meu problema criando um Indice Primario e Exlusivo formado por vários campos... Depois coloquei os Campos do Indice na SQL... Ai resolveu meu problema...
Fica aqui meus agradecimentos aos colegas que responderam minha dúvida.
Atenciosamente,
Elton Calado
bom outra forma seria esta, sem precisar de Loop
Public BD_EXTERNO As New ADODB.Connection
BD_EXTERNO = [Ô]Driver={MySQL ODBC 5.1 Driver};Server=[Ô] & SISTEMA_Bd!diretorio_servidor & [Ô];Database=[Ô] & SISTEMA_Bd!NOME_BD & [Ô];User=[Ô] & SISTEMA_Bd!USUARIO & [Ô];Password=[Ô] & SISTEMA_Bd!Senha & [Ô];Option=16834;[Ô]
BD_EXTERNO.CursorLocation = adUseClient
BD_EXTERNO.Open [ô]
Dim BD_Produtos_TEMP As New ADODB.Recordset
SQLtemp = [Ô]UPDATE tabela SET cancelado=[ô]S[ô],baixa=[ô]N[ô] WHERE cancelado =[ô]N[ô][Ô]
BD_Vendas_Itens_TEMP.CursorLocation = adUseClient
BD_Vendas_Itens_TEMP.Open SQLtemp, BD_EXTERNO, adOpenKeyset, adLockPessimistic
apenas troque tabela pelo nome da sua tabela
Public BD_EXTERNO As New ADODB.Connection
BD_EXTERNO = [Ô]Driver={MySQL ODBC 5.1 Driver};Server=[Ô] & SISTEMA_Bd!diretorio_servidor & [Ô];Database=[Ô] & SISTEMA_Bd!NOME_BD & [Ô];User=[Ô] & SISTEMA_Bd!USUARIO & [Ô];Password=[Ô] & SISTEMA_Bd!Senha & [Ô];Option=16834;[Ô]
BD_EXTERNO.CursorLocation = adUseClient
BD_EXTERNO.Open [ô]
Dim BD_Produtos_TEMP As New ADODB.Recordset
SQLtemp = [Ô]UPDATE tabela SET cancelado=[ô]S[ô],baixa=[ô]N[ô] WHERE cancelado =[ô]N[ô][Ô]
BD_Vendas_Itens_TEMP.CursorLocation = adUseClient
BD_Vendas_Itens_TEMP.Open SQLtemp, BD_EXTERNO, adOpenKeyset, adLockPessimistic
apenas troque tabela pelo nome da sua tabela
Tópico encerrado , respostas não são mais permitidas