• Domingo 22 de Diciembre de 2024, 13:03

Autor Tema:  Error de solo lectura  (Leído 2894 veces)

franespi

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Error de solo lectura
« en: Jueves 2 de Septiembre de 2010, 21:44 »
0
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

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Error de solo lectura
« Respuesta #1 en: Sábado 4 de Septiembre de 2010, 17:05 »
0
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

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
  1.  
  2. rst_Ado.Open "Select Max(idfactura) From factura" _
  3.                   cnnActiva, adOpenStatic, adLockPessimistic
  4. .
  5. .
  6. .
  7. rst_Ado.AddNew
  8.  

Cierra el RS y abrelo de nuevo utilizando la tabla

Código: Visual Basic
  1.  
  2. rst_Ado.Open "Select Max(idfactura) From factura" _
  3.                   cnnActiva, adOpenStatic, adLockPessimistic
  4. .
  5. .
  6. .
  7. rst_Ado.close
  8. rst_Ado.Open "factura",cnnActiva, adOpenDynamic
  9. .
  10. .
  11. .
  12. rst_Ado.AddNew
  13.  

Nota: No lo probe por falta de escenario de pruebas, pero la idea es esa :P

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================