Actualización desde una base de dato a SQL
Tengo la siguiente rutina donde lo que quiero haacer es actualizar una base sql (el servidor es mysql) desde un .DBF
Mi problema es el siguiente : Cuando voy a querer actualizar el error es que hay campos duplicados cuando llega a la sentencia rs.UpdateBatch adAffectAll
Sospecho que todo esto ocurre por que no encuentra el registro (Siendo que si existe) en la base SQL y crea el registro.
¿Qué estoy haciendo mal?
Desde ya muchas gracias
--------------------------------
Dim varios As Variant
Dim texto As String
Dim mconn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim comando As Command
Dim codo As String
' Dim comm As Command
Set mconn = New ADODB.Connection
Set comando = New Command
mconn.Open "Provider=MSDASQL.1;Persist Security Info=False;User ID=root;Data Source=Ventas;Mode=Read|Write"
Set rs = New ADODB.Recordset
With rs
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockBatchOptimistic
.Open "select * from articulos order by codigo", mconn
End With
Frame1.Caption = "Importando Articulos"
ProgressBar1.Value = 0
Frame1.Visible = True
Frame1.Refresh
With Data1.Recordset
.MoveFirst
While Not .EOF
rs.Find "codigo = '" & .codigo & "'"
If rs.EOF Then
rs.AddNew
rs!codigo = Trim(.codigo)
End If
rs!nombre = .nombre
rs!rubro = .rubro
ProgressBar1.Value = Data1.Recordset.PercentPosition
.MoveNext
Wend
End With
Frame1.Visible = False
rs.UpdateBatch adAffectAll
rs.Close
Set rs = Nothing
Set mconn = Nothing
MsgBox ("Importacion de articulos concluida")
Mi problema es el siguiente : Cuando voy a querer actualizar el error es que hay campos duplicados cuando llega a la sentencia rs.UpdateBatch adAffectAll
Sospecho que todo esto ocurre por que no encuentra el registro (Siendo que si existe) en la base SQL y crea el registro.
¿Qué estoy haciendo mal?
Desde ya muchas gracias
--------------------------------
Dim varios As Variant
Dim texto As String
Dim mconn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim comando As Command
Dim codo As String
' Dim comm As Command
Set mconn = New ADODB.Connection
Set comando = New Command
mconn.Open "Provider=MSDASQL.1;Persist Security Info=False;User ID=root;Data Source=Ventas;Mode=Read|Write"
Set rs = New ADODB.Recordset
With rs
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockBatchOptimistic
.Open "select * from articulos order by codigo", mconn
End With
Frame1.Caption = "Importando Articulos"
ProgressBar1.Value = 0
Frame1.Visible = True
Frame1.Refresh
With Data1.Recordset
.MoveFirst
While Not .EOF
rs.Find "codigo = '" & .codigo & "'"
If rs.EOF Then
rs.AddNew
rs!codigo = Trim(.codigo)
End If
rs!nombre = .nombre
rs!rubro = .rubro
ProgressBar1.Value = Data1.Recordset.PercentPosition
.MoveNext
Wend
End With
Frame1.Visible = False
rs.UpdateBatch adAffectAll
rs.Close
Set rs = Nothing
Set mconn = Nothing
MsgBox ("Importacion de articulos concluida")
Respuesta de jorgevb
1