Imprimir página | Cerrar ventana

Error en base de datos

Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Visual Basic Clásico (VB3...VB6)
Descripción del foro: Foro de Visual Basic (No VBA)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=62586
Fecha de impresión: 17/Noviembre/2019 a las 06:48


Tema: Error en base de datos
Publicado por: gaita
Asunto: Error en base de datos
Fecha de publicación: 16/Marzo/2010 a las 19:30
hola Gente soy nuevo en este foro y tengo el siguiente error

3027 diciendo "can't update database or object is read-only"
Private
Sub cmdFacturar_Click()
  1. Dim criterio As String
  2. Dim criterio1 As String
  3. Dim llave As String
  4. Dim llave1 As String
  5.  
  6. f_CopiaFacturador.Text2.Visible = False
  7. f_CopiaFacturador.txtFacTipo.Visible = True
  8.  
  9.  
  10. Call Letra
  11. criterio = " nrocomprobante ='" + txtNroPresupuesto + "' and tipocomprobante='" & Label7.Caption & "'"
  12. dsDetalleCliente.Recordset.FindFirst (criterio) '("nrocomprobante='" & txtNroPresupuesto.text & "'and tipocomprobante='" & Label7.Caption & "'")
  13.  
  14.  
  15. dsDetalleCliente.Recordset.Edit
  16. dsDetalleCliente.Recordset!tipoComprobante = "FC"
  17. dsDetalleCliente.Recordset!Nrocomprobante = txtNroPresupuesto1.text
  18. dsDetalleCliente.Recordset!condicion = "9"
  19. dsDetalleCliente.Recordset.Update
  20.  
  21. criterio1 = "numfactura ='" & txtNroPresupuesto.text & "' and tipocomprobante='" & Label7.Caption & "'"
  22. dsDetalleFactura.Recordset.FindFirst (criterio1) '("numfactura='" & txtNroPresupuesto.text & "' and tipocomprobante='" & Label7.Caption & "'")
  23.  
  24. dsDetalleFactura.Recordset.Edit
  25. dsDetalleFactura.Recordset!tipoComprobante = "FC"
  26. dsDetalleFactura.Recordset!numfactura = txtNroPresupuesto1.text
  27. dsDetalleFactura.Recordset.Update
  28. -----------------------------------------------------------------------------------------------------
  29. Function Letra()
  30. If cboTipoIva = "Responsable Inscripto" Or cboTipoIva = "Responsable No Inscripto" Then 'XXXXXXXXXXXX
  31. If OpVta.Value = True Then
  32. txtNroPresupuesto1 = Format(dsvariables.Recordset!facturaA + 1, "00000")
  33. Else
  34. txtNroPresupuesto1 = Format(dsvariables.Recordset!NcreditoA + 1, "00000")
  35. End If
  36. Else
  37. If OpVta.Value = True Then
  38. txtFacTipo.text = "B"
  39. txtNroPresupuesto1 = Format(dsvariables.Recordset!factura + 1, "00000")
  40. Else
  41. txtFacTipo.text = "B"
  42. txtNroPresupuesto1 = Format(dsvariables.Recordset!ncredito + 1, "00000")
  43. End If
  44. End If
  45. End Function
  46. --------------------------------------------------------------------------------------------------------
  47. --------------------------------------------------------------------------------------------------------
  48. y me da error 3027 diciendo "can't update database or object is read-only"
  49.  
  50. y el error me lo da en:
  51.  
  52. dsDetalleFactura.Recordset.Edit
  http://www.forosdelweb.com/newreply.php?do=newreply&p=3323874">Responder%20Citando




Respuestas:
Publicado por: Emilio
Fecha de publicación: 16/Marzo/2010 a las 19:59
Hola, bienvenido al foro!
 
lo mas probable es que el recordset esté basado en una consulta y que esa consulta no sea actualizable.


-------------
Saludos a todos desde Huelva

http://www.mvp-access.es/emilio/" rel="nofollow - http://www.mvp-access.es/emilio/


Publicado por: gaita
Fecha de publicación: 17/Marzo/2010 a las 01:35
el rsdetallefactura es el control data

No entiendoo bien lo que queres decir


Publicado por: M_M_Tavi
Fecha de publicación: 17/Marzo/2010 a las 11:18
Hola gaita, y bienvenido.
 
Creo que el mismo mensaje te está diciendo qué te está pasando:
La base debe ser de solo lectura.
Cambia los atributos del archivo para poder escribir en ella.
 
Saludos Wink


-------------
Pasaba por aqui...


Publicado por: Patxi Sanz
Fecha de publicación: 17/Marzo/2010 a las 12:53
¿Control Data? ¿Estamos hablando de VBA y Access, o de VB6 atacando a una base de datos de Access?

-------------
Un saludo,

Patxi Sanz
Tudela (NA)
http://pasa.mvp-access.es - Mi Web


Publicado por: gaita
Fecha de publicación: 17/Marzo/2010 a las 18:18
no de VB6 con access ?

La base de datos no esta de "solo lectura"


Publicado por: Patxi Sanz
Fecha de publicación: 17/Marzo/2010 a las 18:52
Si es VB6, tal vez sea mejor mover el hilo al subforo adecuado.
 
Y si la base de datos no es de "sólo lectura", revisa la consulta que cargas en ese control Data: seguramente es como indica Emilio, que no permite modificar los datos.


-------------
Un saludo,

Patxi Sanz
Tudela (NA)
http://pasa.mvp-access.es - Mi Web


Publicado por: gaita
Fecha de publicación: 20/Marzo/2010 a las 00:49
me ponen Patxi Sanz

Y si la base de datos no es de "sólo lectura", revisa la consulta que cargas en ese control Data: seguramente es como indica Emilio, que no permite modificar los datos.


no se a que consulta se refiere ?

trabajo con visual basic 6 y access y me da el errror

sino me gustaria que alguien me diga como puedo actualizar esos dos datos (tipoComprobante y numfactura)

reeemplaxar esto

criterio1 = "numfactura ='" & txtNroPresupuesto.text & "' and tipocomprobante='" & Label7.Caption & "'"
dsDetalleFactura.Recordset.FindFirst (criterio1) '("numfactura='" & txtNroPresupuesto.text & "' and tipocomprobante='" & Label7.Caption & "'")

dsDetalleFactura.Recordset.Edit
dsDetalleFactura.Recordset!tipoComprobante = "FC"
dsDetalleFactura.Recordset!numfactura = txtNroPresupuesto1.text
dsDetalleFactura.Recordset.Update


Publicado por: CarCar
Fecha de publicación: 20/Marzo/2010 a las 10:45
Movemos el hilo al foro correspondiente...

-------------

Si realmente estás agradecido, pásate por http://www.mvp-access.com/foro/foroonline.htm


Publicado por: CarCar
Fecha de publicación: 20/Marzo/2010 a las 10:49
Hola:
 
El control data tendrá una propiedad en la que esté el nombre de una consulta o una sentencia SQL de eso es de lo que te están hablando.
 
Si ejecutas en Access esa consulta para ver su contenido, verás que tampoco te deja actualizar datos, ni añadir registros, eso es porque la consulta no es actualizable. Si antes funcionaba y ahora no, se habrá añadido a dicha consulta una nueva tabla que crea ambigüedades.


-------------

Si realmente estás agradecido, pásate por http://www.mvp-access.com/foro/foroonline.htm


Publicado por: Patxi Sanz
Fecha de publicación: 20/Marzo/2010 a las 13:27
Y si no puedes modificar la consulta que usas como origen del control Data, siempre puedes usar una consulta de actualización en vez de la edición del registro.

-------------
Un saludo,

Patxi Sanz
Tudela (NA)
http://pasa.mvp-access.es - Mi Web


Publicado por: gaita
Fecha de publicación: 22/Marzo/2010 a las 00:03
Publicado originalmente por CarCar CarCar escribió:

Hola:
 
El control data tendrá una propiedad en la que esté el nombre de una consulta o una sentencia SQL de eso es de lo que te están hablando.
 
Si ejecutas en Access esa consulta para ver su contenido, verás que tampoco te deja actualizar datos, ni añadir registros, eso es porque la consulta no es actualizable. Si antes funcionaba y ahora no, se habrá añadido a dicha consulta una nueva tabla que crea ambigüedades.


Sentencia SQl no  hay lo que si en:

Private Sub Form_Activate
tengo este codigo , tendra algo que ver ?

If IsNumeric(txtNroPresupuesto) Then
   dsDetalleFactura.Recordset.FindFirst ("numfactura ='" & txtNroPresupuesto.text & "'and tipocomprobante='" & Label7.Caption & "'")
   dsDetalleFactura.Refresh
   txtTotal.text = FormatNumber(dsDetalleFactura.Recordset!Subtotal, 2)
   txtiva.text = FormatNumber(dsDetalleFactura.Recordset!iva, 2)
   txtfinal.text = FormatNumber(dsDetalleFactura.Recordset!total, 2)
End If



Publicado por: Patxi Sanz
Fecha de publicación: 22/Marzo/2010 a las 11:49
Sentencia SQL tiene que haber, si no mediante código, sí en las propiedades del control Data. También puede ser que en vez de sentencia SQL, hayas indicado únicamente el nombre de la tabla o consulta que tiene que usar ese control Data.

-------------
Un saludo,

Patxi Sanz
Tudela (NA)
http://pasa.mvp-access.es - Mi Web


Publicado por: gaita
Fecha de publicación: 22/Marzo/2010 a las 18:02
Ni hace falta ni sirve para nada reproducir entero el mensaje anterior.

Si , eso si , indique :

recordsource= tbdetallefactura1


Publicado por: Patxi Sanz
Fecha de publicación: 23/Marzo/2010 a las 11:33
Y ese tbdetallefactura1, ¿qué es? ¿una consulta o una tabla?
 
Si es una consulta, abre la base de datos desde Access, abre esa consulta, e intenta modificar o agregar registros directamente en ella.


-------------
Un saludo,

Patxi Sanz
Tudela (NA)
http://pasa.mvp-access.es - Mi Web


Publicado por: gaita
Fecha de publicación: 23/Marzo/2010 a las 12:44
no, es una tabla, no tiene consulta SQL


Publicado por: Patxi Sanz
Fecha de publicación: 24/Marzo/2010 a las 11:56
Revisa el resto de las propiedades del control Data, no sea que esté abriendo la tabla sin posibilidad de modificar los registros.
 
Si tampoco sirve, siempre puedes crear una consulta de actualización para modificar los datos del registro, en vez de editar el Recordset.


-------------
Un saludo,

Patxi Sanz
Tudela (NA)
http://pasa.mvp-access.es - Mi Web


Publicado por: gaita
Fecha de publicación: 24/Marzo/2010 a las 14:23
lo hice tambien , asi :

llave1 = "UPDATE tbdetallefactura SET TipoComprobante='" & Label8.Caption & "' and numfactura='" & txtNroPresupuesto1.text & "' where numfactura ='" & txtNroPresupuesto.text & "' and tipocomprobante='" & Label7.Caption & "'"
dsDetalleFactura.Database.Execute llave1


pero no me cambia los registros


Publicado por: Patxi Sanz
Fecha de publicación: 25/Marzo/2010 a las 12:17
Esos campos de la tabla, ¿de qué tipo son?
 
También puedes probar a abrir un objeto DAO.Database para ejecutar la consulta, no sea que el objeto Database del control Data esté abierto como sólo lectura.


-------------
Un saludo,

Patxi Sanz
Tudela (NA)
http://pasa.mvp-access.es - Mi Web


Publicado por: lbauluz
Fecha de publicación: 26/Marzo/2010 a las 09:28
Publicado originalmente por gaita gaita escribió:


llave1 = "UPDATE tbdetallefactura SET TipoComprobante='" & Label8.Caption & "' and numfactura='" & txtNroPresupuesto1.text & "' where numfactura ='" & txtNroPresupuesto.text & "' and tipocomprobante='" & Label7.Caption & "'"



Me parece que el AND indicado debe ser una coma:

llave1 = "UPDATE tbdetallefactura SET TipoComprobante='" & Label8.Caption & "', numfactura='" & txtNroPresupuesto1.text & "' where numfactura ='" & txtNroPresupuesto.text & "' and tipocomprobante='" & Label7.Caption & "'"


Luis

-------------
El Búho es mi ídolo caido


Publicado por: gaita
Fecha de publicación: 29/Marzo/2010 a las 17:53
Si member_profile.asp?PF=1304&FID=32 - lbauluz , tenias razon Millon de gracias



Imprimir página | Cerrar ventana