Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Delete Record En Tabla Conectada
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Delete Record En Tabla Conectada 
 
Hola amigos,

un miembro del foro italiano pide ayuda.

Dice que tiene dos tablas TAB1 y TAB2. En TAB1 tiene un campo IDindex (Primary Key); los récordes de esta tabla no pueden ser borrados pero solamente modificados.
En tabla TAB2 trae el campo IDindex para poder conectar las tablas.
Los récordes de TAB1 y TAB2 son visualizados:  TAB1 en GridView1 y con un query él visualiza en GridView2 los récordes del TAB2 unidos a un récord de TAB1.

El dice que el su problema es:
como puede eliminar un récord de TAB2, teniendo presente que:
- la base de datos es abierta y cerrada cada vez;
- en TAB2 es no presiente un primary key;
- los valores de los campos por récord pueden ser iguales.

El dice que pensó de utilizar las instrucciones MoveTo, MoveLast, pero no sabe si asì él va por buen camino.


Como podemos ayudarlo ?
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Delete Record En Tabla Conectada 
 
Vuot:

Citar:
en TAB2 es no presiente un primary key;

Las tablas debe de tener un campo ID, para cuando se elija el registro, saber cual es exactamente que borrar.

Este id puede ser autonumerico (se va creando automaticamente, cuando se añade un registro)
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Delete Record En Tabla Conectada 
 
¿De qué base de datos estamos hablando Mysql o Sqlite?
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Delete Record En Tabla Conectada 
 
shordi escribió:  
¿De qué base de datos estamos hablando Mysql o Sqlite?

Hola shordi,

bueno, el nuestro amigo precisa que:
- la base de datos es sqlite3.;
- en TAB1 tiene campos: IDsocio (Primary Key),Nombre,Apellido,Direccion,Mail,Teléfono.... etc;
- en TAB2 tiene estos campos: IDsocio, año, cuota.

El dice que crea una relación "uno/muchos" a través de IDsocio. Por esta razón él dice que en TAB2 puede tener  n° record por cada IDsocio.

De nuevo pregunta: ¿cómo puede eliminar o modificar un récord cuándo en TAB2 relativamente a IDsoci él tiene muchos récordes con el mismo valor, o el mismo año? ¿o como él puede identificar el récord seleccionado en GridView2?
 



 
última edición por vuott el Lunes, 04 May 2015, 01:19; editado 1 vez 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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://www.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).
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.00 0 0 0
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Hasta Las Narices De Key.Enter Key.Delete Etc kotonfree General 13 Martes, 25 Enero 2011, 17:15 Ver último mensaje
kotonfree
No hay nuevos mensajes [solucionado] Configurar Un Record De Una ... vuott General 3 Sabado, 01 Noviembre 2014, 01:40 Ver último mensaje
vuott
No hay nuevos mensajes Error: Cannot Create Record: Abort Due To ... jsbsan Bases de Datos 3 Lunes, 02 Marzo 2015, 14:36 Ver último mensaje
shordi
No hay nuevos mensajes No Veo La Tabla portaro Aplicaciones/Fragmentos de Código 9 Sabado, 23 May 2015, 15:49 Ver último mensaje
portaro
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
No puede descargar archivos
No puede publicar eventos en el calendario