• Domingo 22 de Diciembre de 2024, 18:48

Autor Tema:  Re: Problemas al borrar registro  (Leído 7590 veces)

jacardin

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Problemas al borrar registro
« en: Miércoles 5 de Noviembre de 2003, 19:28 »
0
Hola,  tengo un problema a ver si alguien me echa un cable. Utilizo ADO
 
 Abro un recordset asi: rs.Open q, conexion, , adLockOptimistic, adCmdText
 donde q="select * from tabla"
 Tengo un boton que borra un registro (rs.delete) y funciona bien.

 El problema es que cuando hago q="selec tabla.*, otratrabla.nombre from tabla,otratabla where tabla.dni=otratabla.dni"
se muestra bien en el datagrid pero al pulsar el boton de borrar:

 "Informacion de columna clave insuficiente para realizar la operacion Update o Refresh"

 Existe una forma facil y directa para hacer esto o tendria que tener 2 recordset
 uno con la tabla que si me deja borrar y otro que muestra toda la informacion.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Problemas al borrar registro
« Respuesta #1 en: Jueves 6 de Noviembre de 2003, 12:14 »
0
Hola jacardin.

Creo que tu problema está en las relaciones que tienes entre las tablas.

Supongo que utilizas una base de datos jet. Si tuvieras las relaciones definidas en la base de datos, la eliminación funcionaría de esa forma, o incluso podrías al elimar el registro de una tabla, borrar los correspondientes de las tablas relacionadas.

Si no tienes definidas las relaciones en la bd, debes de indicar la relación entre las tablas en la sentencia SQL mediante una cláusula JOIN (o LEFT JOIN o RIGHT JOIN o INNER JOIN según sea la relación).

Suerte.

jacardin

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Problemas al borrar registro
« Respuesta #2 en: Jueves 6 de Noviembre de 2003, 17:42 »
0
Las dos tablas son:
Factura= {codfactura,dni,....} clave={codfactura}
cliente={dni, nombre,...} clave={dni}
relacion= (cliente.dni) 0..n (factura.dni)


la select es: "select factura.*,cliente.nombre from factura,cliente where factura.dni=cliente.dni"
Lo unico que quiero es que ademas de mostrar todos los datos de la factura añada el nombre del cliente que esta en otra tabla  y que cuando borre borre la factura.
Creo que el problema que tengo es que no sabe cual es la clave del recordset al ser una consulta donde intervienen dos tablas y yo no se como se le dice al recordset cual es su clave.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Problemas al borrar registro
« Respuesta #3 en: Jueves 6 de Noviembre de 2003, 18:08 »
0
Prueba con un select de este estilo:

SELECT factura.*,cliente.nombre FROM factura LEFT JOIN cliente ON factura.dni=cliente.dni WHERE factura.codfactura='F99999'

donde F99999 sería el código de la factura.

También podrías utilizar el método EXECUTE del command que tengas y hacer directamente: DELETE FROM factura WHERE codfactura='F99999'
 de esta última forma aseguras obtener el resultado que esperas (recuerda luego refrescar el recordset que tengas con las facturas para que se reflejen los cambios).

A ver si con esto puedes arreglar... Abur.

Omarrpat

  • Miembro activo
  • **
  • Mensajes: 62
    • Ver Perfil
Re: Problemas al borrar registro
« Respuesta #4 en: Jueves 6 de Noviembre de 2003, 19:07 »
0
Amigo tu problem tal vez esta aqui

conexion, <aqui>, adLockOptimistic, adCmdText
donde q="select * from tabla"

por que el bloqueo lo manejas de manera optimista, mas nunca especificas como es abierta la fuente de datos, tra de cambiar ese codigo por un adOpenDynamic y espero te de resultados.

algo asi como :
rsTotal.Open strSqlReporte, cnReporte, adOpenDynamic, adLockOptimistic


ayuda
Mode, propiedad (ADO)
         

Indica los permisos disponibles para modificar datos en un objeto Connection.

Configuración y valores devueltos

Establece o devuelve uno de los siguientes valores de ConnectModeEnum.

Constante Descripción
adModeUnknown Predeterminada. Indica que los permisos no se han establecido aún o que no se pueden determinar.

adModeRead Indica que son permisos de sólo lectura.

adModeWrite Indica que son permisos de sólo escritura.

adModeReadWrite Indica que son permisos de lectura/escritura.

adModeShareDenyRead Impide que otros abran una conexión con permisos de lectura.

adModeShareDenyWrite Impide que otros abran una conexión con permisos de escritura.

adModeShareExclusive Impide que otros abran una conexión.

adModeShareDenyNone Impide que otros abran una conexión

jacardin

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Problemas al borrar registro
« Respuesta #5 en: Viernes 7 de Noviembre de 2003, 10:30 »
0
Gracias a los dos por contestar.

 x Brroz
 El tema de la select que propones no me sirve porque quiero ver TODAS las factura (no puedo poner por tanto el where codfactura='xxx').  Sin embargo la otra opcion si que me resuelve el problema, borro con un command y refresco el recordset.

x Ommarpat
Acabo de leer tu propuesta cuando ya tenia el problema resuelto, no obstante como me has contestado lo probare tambien.

 :good:

jaguark81

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Problemas al borrar registro
« Respuesta #6 en: Lunes 12 de Mayo de 2008, 19:26 »
0
Hola que tal:
Soy nuevo en estas lides y recientemente tenia un problema similar al tuyo, pero despues de revisar en varias paginas de la red y otros lados por fin pude saber cual era mi error.
Yo supongo que te enlazas a una tabla en sql y esta tabla tiene varios enlaces con otras, asi que lo que de seguro te ocurre es que esa tabla que has de modificar le ha de hacer falta que a una columna la establezcas como clave principal.
Espero esto te sirva.
Saludos :P

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Problemas al borrar registro
« Respuesta #7 en: Martes 13 de Mayo de 2008, 04:39 »
0
Hola... el mensaje al que respondes es de hace casi 5 años... hemos de suponer que desde entonces ya habrá solucionado su problema...

Mala cosa es que tuviera alguien que esperar 5 años una respuesa...
«Ma non troppo»
----> ModoVacaciones = False<----