Access - Error 3003. Demasiadas transacciones anidadas.

   
Vista:

Error 3003. Demasiadas transacciones anidadas.

Publicado por ROBERTO (145 intervenciones) el 06/05/2010 10:53:52
Hola a todos estoy intentando copiar el contenido de un registro ya guardado de una tabla llamada "REVISION PEDIDOS" sobre un nuevo registro de la misma tabla para asi evitar tener que escribir cosas que se repiten en los campos y me funciona a veces si y otras no y desde hace un tiempo me da este mensaje de error "Se ha producido el error 3003 en tiempo de ejecución:No se pudo iniciar la transacción; ya hay demasiadas transacciones anidadas. Os dejo el código en cuestión a ver si veis algo raro. Un saludo y gracias.

PEDIDO_CC Y ARTI_CC son dos cuadros de texto que he creado para poder elegir el nº de pedido y el articulo del que queremos copiar los datos.

Dim pst As DAO.Recordset
Set pst = CurrentDb.OpenRecordset("REVISION PEDIDOS")
pst.MoveLast
If pst.RecordCount = 0 Then
MsgBox ("No hay registros que modificar"), vbCritical
Exit Sub
End If
pst.MoveFirst
While Not pst.EOF
If pst![REL] = PEDIDO_CC And pst![ARTIC] = ARTI_CC Then
pst.Edit
Me.NSERIE = pst![NSERIE]
Me.CB = pst![CB]
Me.EMBAL = pst![EMBAL]
Me.SERIGRA = pst![SERIGRA]
Me.MANUAL = pst![MANUAL]
Me.ACCESO = pst![ACCESO]
Me.MED = pst![MED]
Me.ESTADO_GENERAL = pst![ESTADO GENERAL]
Me.FUNC = pst![FUNC]
Me.MEJPROX = pst![MEJPROX]
Me.INCI = pst![INCI]
Me.NOTAS = pst![NOTAS]
Me.INST = pst![INST]
Me.MODICATA = pst![MODICATA]
GoTo FIN
Else
pst.MoveNext
End If
Wend

FIN:
pst.Close
End Sub
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:Error 3003. Demasiadas transacciones anidadas.

Publicado por Charlyto (1 intervención) el 10/05/2010 22:43:36
No se si te lo solucionará pero no entiendo por que recorres toda la tabla si con una consulta simplificarías.

Donde pones esto

Set pst = CurrentDb.OpenRecordset("REVISION PEDIDOS")

Iría mejor

Set pst = CurrentDb.OpenRecordset("SELECT * FROM [REVISION PEDIDOS] WHERE REL =" & PEDIDO_CC & " And ARTIC =" & ARTI_CC)

Mas o menos, de esta forma el condicional

If pst![REL] = PEDIDO_CC And pst![ARTIC] = ARTI_CC Then

No lo necesitarás y no recorrerás toda la tabla

Saludos
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

Error 3003. Demasiadas transacciones anidadas.

Publicado por elYali turulato001@hotmail.com (1 intervención) el 24/12/2011 17:49:26
No utilices directamente CurrentDb.

Hazlo así:

Dim db as DAO.DataBase
set db = CurrentDb

Y siempre a nivel de módulo, para luego reutilizar la variable 'db'.
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