Buenos días. Probablemente el problema sea la consulta en Access y no el código en sí (por favor moderadores hagan lo propio si procede). Se trata de asignar el siguiente número de factura correlativo de la serie que le corresponda. Para ello:
Código:
Dim cmd As New OleDb.OleDbCommand
cmd.Connection = con
cmd.CommandText = "UPDATE tblFacturas SET NumeroFactura = (SELECT IIF(" & _
"EXISTS(SELECT * FROM tblFacturas WHERE YEAR(FechaFactura) = YEAR(?) AND SerieFactura = ?)," & _
"(SELECT MAX(NumeroFactura)+1 FROM tblFacturas WHERE YEAR(FechaFactura) = YEAR(?) AND SerieFactura = ?)," & _
"1) FROM tblFacturas) WHERE ID=?;"
For i As Integer = 0 To IDs.Count - 1
With cmd.Parameters
.Add("p0", OleDb.OleDbType.Date).Value = Today
.Add("p1", OleDb.OleDbType.Char).Value = Series(i)
.Add("p2", OleDb.OleDbType.Date).Value = Today
.Add("p3", OleDb.OleDbType.Char).Value = Series(i)
.Add("p4", OleDb.OleDbType.Numeric).Value = IDs(i)
End With
Try
con.Open()
cmd.ExecuteNonQuery()
con.Close()
Catch ex As Exception
mens("No se han podido asignar numeración a la solicitud " & cmd.Parameters(4).Value, ex)
Exit For
Finally
con.Close()
End Try
Next
El error que obtengo es: La operación debe usar una consulta actualizable.
¿QUé puede ser? Gracias y un saludo.