Visual Basic - UpdateBatch revelde!!

Life is soft - evento anual de software empresarial
 
Vista:

UpdateBatch revelde!!

Publicado por Nicolás (164 intervenciones) el 10/09/2003 04:18:33
Saludos:
Resulta que quiero agregar varios registros a una tabla pero utilizando la actualización por lotes. Mas o menos, el código es el sgte.

Set rsT = New ADODB.Recordset
rsT.Open "SELECT * FROM Movimientos", conSIDAF, adOpenStatic, adLockBatchOptimistic, adCmdText
Do While Not rsT.EOF
rsT.AddNew
...
rsT.Update
Loop
rsT.UpdateBatch

Como veran recién al final de todo quiero pasar los AddNew a la base de datos (para que no se realice ningún cambio en caso de que ocurra un error). Este código me genera un error al pasar por segunda véz por el AddNew. El error dice "El número de filas con cambios pendientes excedió el límite definido". Alguien sabe de que límite está hablando??????????
Cómo se soluciona?, en que estoy errado?
Desde ya, Muchas Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:UpdateBatch revelde!!

Publicado por daniel (145 intervenciones) el 10/09/2003 15:22:00
mira creo que el tema esta en el tipo de recordset, ese tipo sirve para busqueda de datos y listados pero no para actualizaciones, fijate abrirlo en adopendynamic.
espero ayude
Abrazos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:UpdateBatch revelde!!

Publicado por daniel (145 intervenciones) el 10/09/2003 15:28:15
fijate ademas el tema de el update cada vez que pasas por recordset, creo que solo tiene que tener el rst.updatebach al final del recordset. fuera del loop.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Respuesta: UpdateBatch revelde!!

Publicado por Nicolás (164 intervenciones) el 10/09/2003 16:01:13
Saludos:
Aclaro que probé con adOpenStatic, adOpenDynamic y adOpenKeyset obteniendo el mismo error.
Según tengo entendido el Update actualiza en la caché y el UpdateBatch pasa los datos a la base de datos. Por estoy convencido de que el ejemplo que coloqué es correcto, es lo que intento hacer.
Gracias Daniel.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:UpdateBatch revelde!!

Publicado por daniel (145 intervenciones) el 10/09/2003 17:31:48
mira todo lo que pones estaba bien, lo que trate es desconectando el recordset de la base y antes de actualizar volvi a conectar y andubo...
ej
Private Sub Form_Load()
On Error GoTo AvisoError
Set Db = New ADODB.Connection
Set Rs = New ADODB.Recordset
Rs.CursorLocation = adUseClient
Db.Open "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=C:\Prueba\bd1.mdb"
Rs.Open "Select * from ParaIngresar", Db, adOpenKeyset, adLockBatchOptimistic, adCmdText
Rs.ActiveConnection = Nothing
Exit Sub
AvisoError:
MsgBox Err.Description, vbCritical, Err.Number
End Sub
despues agregaba al recordset desconectado , luego con otro boton confirmaba y ahi usaba el llamado rs.updatebatch addaffectgroup. todo lo que habia despues de desconectarlo si queres te mando el ej.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Solucionado, Gracias Daniel!!!

Publicado por Nicolás (164 intervenciones) el 11/09/2003 01:13:29
Saludos:
Sólo faltaba una linea de código para que ésto funcionara y Daniel dió en la tecla.
La linea es: "rsT.CursorLocation = adUseClient"
Así pues queda:

Set rsT = New ADODB.Recordset
rsT.CursorLocation = adUseClient
rsT.Open "SELECT * FROM Movimientos", conSIDAF, adOpenStatic, adLockBatchOptimistic, adCmdText
Do While Not rsT.EOF
rsT.AddNew
...
rsT.Update
Loop
rsT.UpdateBatch

Mil Gracias, Daniel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar