Bases de Datos > MS Access
Error de solo lectura
(1/1)
franespi:
Hola:
Espero buestra respuesta pues lo he probado todo y no me salgo.
tengo un procedimiento donde quiero insertar una factura nueva en la tabla "factura" ,
pero cuando la ejecuto siempre me sale el error de que no se puede insertar porque es de solo lectura
os envio el codigo para que me digais donde esta el error o si tengo que poner algo más
es urgente porfavor , no puedo facturar!"
If IsNull(DLookup("[Idpedido]", "factura", "[idpedido]=" & posicion)) Then
Dim lin As String
Dim sConnect As String, sSQL As String
Dim cnnActiva As ADODB.Connection
Dim rst_Ado As ADODB.Recordset
Set cnnActiva = New ADODB.Connection
cnnActiva.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=My Dropboxempresarepara-espinosaRepara-Espinosa ultima.mdb;Persist Security Info=False;"
Set rst_Ado = New ADODB.Recordset
rst_Ado.Open "Select Max(idfactura) From factura", _
cnnActiva, adOpenStatic, adLockPessimistic
fac = rst_Ado.Fields(0)
ano = CStr(Year(Forms![clientes1]![subpedidos]![FechaEnvío]))
If Left(fac, 4) <> ano Then
fac = ano & "000"
End If
DoCmd.OpenForm "factura"
rst_Ado.AddNew aqui me sale el error " no se puede actualizar.Base de datos u objeto solo lectura"
Forms![factura]![idfactura] = rst_Ado.Fields(0) + 1
Forms![factura]![IdCliente] = Me.IdCliente
Forms![factura]![fechafactura] = Date
Set rst_Ado = Nothing
' cnactiva.Close
Set cnnActiva = Nothing
GoTo final
Gracias de antemano
F_Tanori:
--- Cita de: "franespi" ---Hola:
Espero buestra respuesta pues lo he probado todo y no me salgo.
tengo un procedimiento donde quiero insertar una factura nueva en la tabla "factura" ,
pero cuando la ejecuto siempre me sale el error de que no se puede insertar porque es de solo lectura
os envio el codigo para que me digais donde esta el error o si tengo que poner algo más
es urgente porfavor , no puedo facturar!"
If IsNull(DLookup("[Idpedido]", "factura", "[idpedido]=" & posicion)) Then
Dim lin As String
Dim sConnect As String, sSQL As String
Dim cnnActiva As ADODB.Connection
Dim rst_Ado As ADODB.Recordset
Set cnnActiva = New ADODB.Connection
cnnActiva.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=My Dropboxempresarepara-espinosaRepara-Espinosa ultima.mdb;Persist Security Info=False;"
Set rst_Ado = New ADODB.Recordset
rst_Ado.Open "Select Max(idfactura) From factura", _
cnnActiva, adOpenStatic, adLockPessimistic
fac = rst_Ado.Fields(0)
ano = CStr(Year(Forms![clientes1]![subpedidos]![FechaEnvío]))
If Left(fac, 4) <> ano Then
fac = ano & "000"
End If
DoCmd.OpenForm "factura"
rst_Ado.AddNew aqui me sale el error " no se puede actualizar.Base de datos u objeto solo lectura"
Forms![factura]![idfactura] = rst_Ado.Fields(0) + 1
Forms![factura]![IdCliente] = Me.IdCliente
Forms![factura]![fechafactura] = Date
Set rst_Ado = Nothing
' cnactiva.Close
Set cnnActiva = Nothing
GoTo final
Gracias de antemano
--- Fin de la cita ---
adOpenStatic es de Solo lectura pero como veras mas que nada el problema es que estas abriendo una consulta con una expresion o campo calculado (generada por la funcion max) la cual es de solo lectura en si misma, ademas no tendrias acceso a los damas campos de tu tabla, necesitas abrir la tabla,
--- Código: Visual Basic --- rst_Ado.Open "Select Max(idfactura) From factura" _ cnnActiva, adOpenStatic, adLockPessimistic...rst_Ado.AddNew
Cierra el RS y abrelo de nuevo utilizando la tabla
--- Código: Visual Basic --- rst_Ado.Open "Select Max(idfactura) From factura" _ cnnActiva, adOpenStatic, adLockPessimistic...rst_Ado.closerst_Ado.Open "factura",cnnActiva, adOpenDynamic...rst_Ado.AddNew
Nota: No lo probe por falta de escenario de pruebas, pero la idea es esa :P
Saludos
Navegación
Ir a la versión completa