Fallo 3157 ODBC Update
Publicado por Idgye (5 intervenciones) el 05/07/2007 11:33:07
Hola,
Tengo un problema con un trozo de codigo... y no hay manera de resolverlo... a ver si a alguien se le enciende la bombilla de lo que puede ser.
En resumen:
Aplicación en access 2000 con base de datos SQL2000 (ODBC)
Tengo un formulario con 2 cuadros de lista (LlistaOrigen y LlistaDesti) el origen de los cuadros de lista es una tabla(Albaranes) con filtro en un codigo de cliente y en 3 campos más.
Cuando se elige un cliente se rellena el cuadro de lista origen (albaranes no facturados) y al darle a un boton, se pasan todos esos albaranes al cuadro de lista destino (albaranes en situacion de facturarse) con un bucle, haciendo un edit para cambiar 3 campos, que no son claves)
Mi problema, tengo 317 lineas en el cuadro de lista origen y al darle al boton.... en la linea 221 me da el fallo 3157, si le doy a F5 continua ejecutandose el codigo sin problema (y veo que me ha cambiado los 3 campos bien).... a partir de ahi, casi en cada pasada por el bucle (cada linea) se va parando dando el error, pero si le doy a F5 continua sin problemas.
El codigo es algo asi:
For a = 0 To LlistaOrigen.ListCount - 1
sql = "SELECT * FROM [Albarans Clients] WHERE [Albarans Clients].codi='" & Me.LlistaOrigen.Column(0, B) & "' And TipusNum=" & tipusfact & " And ruta='" & Me.Ruta.Value & "'"
Set recordset = CurrentDb.OpenRecordset(sql, dbOpenDynaset, dbSeeChanges)
If Me.Filtro = 2 Then
If TipusRetencio = recordset("tipusretencio") Then
If recordset.EOF = False Then
recordset.Edit
recordset("Factura") = Me.Numfactura
recordset("Situacio") = 2
recordset("DataFactura") = Me.DataFactura
recordset.Update AQUI DONDE DA EL ERROR
End If
recordset.Close
Else
...........
End if
End if
Sql= AQUI SELECT CON FILTROS
Sql2= AQUI SELECT CON FILTROS
LlistaOrigen.RowSource = sql
Llistadestinacio.RowSource = sql2
Next a
He estado repasando los datos en tabla para los albaranes que da fallo y los albaranes anteriores a estos, pero no hay ningun dato diferente a otros donde si los da (tienen la misma retencion,no hay datos nulos diferentes a los demas,etc.....)
Igualmente si paso individualmente los albaranes que fallan, no da ningun tipo de error.
Existe algun límite de bucle (a la he declarado como integer) o de actualizacion de cuadro de lista, o es que "acces se cansa y necesita un respiro para poder continuar??
Agradeceria si alguien se le ocurre algo, porque por mas que depuro y miro datos no veo el fallo.
(siento el rollo, pero es que si no... no explico bien el problema)
Gracias
Tengo un problema con un trozo de codigo... y no hay manera de resolverlo... a ver si a alguien se le enciende la bombilla de lo que puede ser.
En resumen:
Aplicación en access 2000 con base de datos SQL2000 (ODBC)
Tengo un formulario con 2 cuadros de lista (LlistaOrigen y LlistaDesti) el origen de los cuadros de lista es una tabla(Albaranes) con filtro en un codigo de cliente y en 3 campos más.
Cuando se elige un cliente se rellena el cuadro de lista origen (albaranes no facturados) y al darle a un boton, se pasan todos esos albaranes al cuadro de lista destino (albaranes en situacion de facturarse) con un bucle, haciendo un edit para cambiar 3 campos, que no son claves)
Mi problema, tengo 317 lineas en el cuadro de lista origen y al darle al boton.... en la linea 221 me da el fallo 3157, si le doy a F5 continua ejecutandose el codigo sin problema (y veo que me ha cambiado los 3 campos bien).... a partir de ahi, casi en cada pasada por el bucle (cada linea) se va parando dando el error, pero si le doy a F5 continua sin problemas.
El codigo es algo asi:
For a = 0 To LlistaOrigen.ListCount - 1
sql = "SELECT * FROM [Albarans Clients] WHERE [Albarans Clients].codi='" & Me.LlistaOrigen.Column(0, B) & "' And TipusNum=" & tipusfact & " And ruta='" & Me.Ruta.Value & "'"
Set recordset = CurrentDb.OpenRecordset(sql, dbOpenDynaset, dbSeeChanges)
If Me.Filtro = 2 Then
If TipusRetencio = recordset("tipusretencio") Then
If recordset.EOF = False Then
recordset.Edit
recordset("Factura") = Me.Numfactura
recordset("Situacio") = 2
recordset("DataFactura") = Me.DataFactura
recordset.Update AQUI DONDE DA EL ERROR
End If
recordset.Close
Else
...........
End if
End if
Sql= AQUI SELECT CON FILTROS
Sql2= AQUI SELECT CON FILTROS
LlistaOrigen.RowSource = sql
Llistadestinacio.RowSource = sql2
Next a
He estado repasando los datos en tabla para los albaranes que da fallo y los albaranes anteriores a estos, pero no hay ningun dato diferente a otros donde si los da (tienen la misma retencion,no hay datos nulos diferentes a los demas,etc.....)
Igualmente si paso individualmente los albaranes que fallan, no da ningun tipo de error.
Existe algun límite de bucle (a la he declarado como integer) o de actualizacion de cuadro de lista, o es que "acces se cansa y necesita un respiro para poder continuar??
Agradeceria si alguien se le ocurre algo, porque por mas que depuro y miro datos no veo el fallo.
(siento el rollo, pero es que si no... no explico bien el problema)
Gracias
Valora esta pregunta


0