Re: Delete Record En Tabla Conectada
en TAB1 tiene campos: IDsocio (Primary Key),Nombre,Apellido,Direccion,Mail,Teléfono.... etc;
- en TAB2 tiene estos campos: IDsocio, año, cuota.
Si es SQLite tiene suerte porque es más fácil.
SQLite manteine un control propio identificador de cada registro. Es decir: NO ES NECESARIO PONER UNA CLAVE PRIMARIA ÚNICA... porque ya la tiene.
Sólo tiene que averiguar primero cuál es y luego eliminar el registro idenficándolo con esa clave.
¿Cómo se averigua esa clave? Muy sencillo. Pregunta por el campo rowid.
Puede, perfectamente, hacer ésto:
dim r as result
r=miconexion.exec("select rowid, idsocio, año, cuota from tabla2 where idSocio= &1", varIdsocio)
Ahí puede ver la clave primaria de cada registro. Luego, una vez decidida cuál es, símplememente:
miconexion.exec("delete from tabla2 where rowid=&1",varRowid)
¿Cómo averiguar si tiene duplicados? Es simple:
r=miconexion.exec("Select a.rowid,a.idsocio, a.año, a.cuota, b.rowid,b.idsocio,b.año,b.cuota from tabla2 a inner join tabla2.b where a.idsocio=b.idsocio and a.año=b.año and a.cuota=b.cuota and a.rowid <> b.rowid")
Si quiere eliminar uno de ellos, sólo tiene que elegir el primer rowid y elecutar el delete de más arriba.
Si no quiere meterse en líos más veces, que le ponga una clave única a tabla2, como dice jsbsan, o que considere siempre la existencia de rowid para todas las operaciones, como si fuese la clave primaria.
Truco:
Dijiste que tabla2 es mostrado en un grid. Bien, en el result de ese grid que añada al principio el campo rowid. Si no lo quiere ver que le de un ancho de 1 pixel a la columna y así no lo verá (aunque siempre podrá verlo pinchando y arrastrando en la cabecera) y cuando llame al formulario de edición, que lo haga basándose en el rowid. Siempre sabrá qué registro edita y qué registro borra.
En el programa siesta, que subí hace unas semanas
http://foro.gambas-es.org/viewtopic...t=siesta#p25437 puse un ejemplo completo de cómo crear, editar y borrar registros de cualquier tabla sqlite, tenga o no tenga clave.
No lo comenté cuando lo subí, creo, pero es algo que con MySQL no se puede hacer (con MySQL tú tienes que crear las claves).