Trazar la ejecución
Tengo el siguiente código:
...
'Abro un ADODB.Recordset cn es una ADODB.Connection
tAntes.ActiveConnection = cn
tAntes.CursorType = adOpenStatic
tAntes.LockType = adLockReadOnly
tAntes.Source="SELECT * FROM Trabajos WHERE Cliente = 5 AND (Factura ='' OR Factura IS NULL)"
tAntes.Open
'Mensaje 1
MsgBox tAntes.RecordCount
'Modifico registros
cn.Execute "UPDATE Trabajos SET Factura = 9 WHERE Cliente = 5 AND (Factura ='' OR Factura IS NULL)"
'Mensaje 2
MsgBox tAntes.RecordCount
...
El problema es el que:
El cliente 5 tiene 2 trabajos sin datos en Factura ('' OR IS NULL).
Si muestro el mensaje 1 tAntes.RecordCount es 2
Si anulo (marco como comentario) el mensaje 1 en el mensaje 2 tAntes.RecordCount es 1, como si con.execute hubiese actualizado uno de los dos registros antes de abrirse tAntes, ya que si accedo a la BD (Access 2000) en el momento en el que mensaje 2 está visible, los dos registros han sido actualizados.
Lógicamente si ejecuto paso a paso (F8) todo va bien.
¿La ejecución del código no es lineal?
¿Qué hago mal?
¿Alguien me puede ayudar?
Gracias.
...
'Abro un ADODB.Recordset cn es una ADODB.Connection
tAntes.ActiveConnection = cn
tAntes.CursorType = adOpenStatic
tAntes.LockType = adLockReadOnly
tAntes.Source="SELECT * FROM Trabajos WHERE Cliente = 5 AND (Factura ='' OR Factura IS NULL)"
tAntes.Open
'Mensaje 1
MsgBox tAntes.RecordCount
'Modifico registros
cn.Execute "UPDATE Trabajos SET Factura = 9 WHERE Cliente = 5 AND (Factura ='' OR Factura IS NULL)"
'Mensaje 2
MsgBox tAntes.RecordCount
...
El problema es el que:
El cliente 5 tiene 2 trabajos sin datos en Factura ('' OR IS NULL).
Si muestro el mensaje 1 tAntes.RecordCount es 2
Si anulo (marco como comentario) el mensaje 1 en el mensaje 2 tAntes.RecordCount es 1, como si con.execute hubiese actualizado uno de los dos registros antes de abrirse tAntes, ya que si accedo a la BD (Access 2000) en el momento en el que mensaje 2 está visible, los dos registros han sido actualizados.
Lógicamente si ejecuto paso a paso (F8) todo va bien.
¿La ejecución del código no es lineal?
¿Qué hago mal?
¿Alguien me puede ayudar?
Gracias.
1 respuesta
Respuesta de purosinaloa
1