Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-04-2004
vhirginia vhirginia is offline
Miembro
 
Registrado: mar 2004
Posts: 64
Poder: 21
vhirginia Va por buen camino
Eliminar registros en tablas enlazadas

Buenos días a todos:
Me gustaría que me ayudarais en una duda, Tengo dos tablas paradox :una con información sobre edificios y otre de pisos(de esos edificios).Están enlazadas por un campo llamado edificio, que representa al nombre.Entonces cuando elimino un edificio de la tabla edificios, se deberían eliminar todos los pisos de la tabla pisos cuyo campo edificio coincida con el edificio eliminado.¿No se debería hacer automáticamente?Y si no, he pensado que habría que utilizar un filtro,verdad?
Espero que me podáis ayudar.
Muchísimas gracias.
Responder Con Cita
  #2  
Antiguo 29-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Paradox no tiene eliminación en cascada, por lo que has de controlar el evento BeforeDelete del TTable de edificios y, allí, borrar primero los pisos

Código SQL [-]
delete from pisos where edificio = XXXX

o bien con un simple bucle (suponiendo que están en relación master/detail)

Código Delphi [-]
while not TPisos.Eof do
  TPisos.Delete;
Responder Con Cita
  #3  
Antiguo 29-04-2004
vhirginia vhirginia is offline
Miembro
 
Registrado: mar 2004
Posts: 64
Poder: 21
vhirginia Va por buen camino
Perdona cadetill,
¿Qué quieres decir con lo de código SQL?¿Lo podemos utilizar aunque nuestras tablas sean paradox?
Gracias por tu ayuda.
Responder Con Cita
  #4  
Antiguo 29-04-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por vhirginia
Perdona cadetill,
¿Qué quieres decir con lo de código SQL?¿Lo podemos utilizar aunque nuestras tablas sean paradox?
Si lo puedes utilizar... Prueba poner un TQuery y verás

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 29-04-2004
vhirginia vhirginia is offline
Miembro
 
Registrado: mar 2004
Posts: 64
Poder: 21
vhirginia Va por buen camino
Gracias,pero es que ahora nos surge una duda :¿Cómo podemos establecer la relación master/detail?Es que ya tenemos las tablas hechas y para modificarlas con el form wizard nos obliga a que aparezca en un form y no queremos eso.
¿Cómo podríamos hacerlo?
A ver si nos puedes echar una mano
Besines
Responder Con Cita
  #6  
Antiguo 29-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Establecer una relación master/detail es sencillo

1.- Selecciona la tabla detalle
2.- en su propiedad MasterSource pon el DataSource de la tabla master
3.- haz clic el botón que aparece en la propiedad MasterFields para idicar qué campos se une de una tabla con la otra

Con esto ya tienes tu relación master/detail en marcha
Responder Con Cita
  #7  
Antiguo 29-04-2004
vhirginia vhirginia is offline
Miembro
 
Registrado: mar 2004
Posts: 64
Poder: 21
vhirginia Va por buen camino
Gracias cadetill.
pero tenemos un problema:al intentar poner en el mastersource de la tabla detalle el datasource de la tabla que queremos que sea master, no nos aparece nada que seleccionar en la combobox mastersource.
Hemos añadido la unidad de la tabla master, para poder utilizar su datasource.
Perdón por las molestias
Responder Con Cita
  #8  
Antiguo 29-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Empezado por vhirginia
Hemos añadido la unidad de la tabla master, para poder utilizar su datasource.
Esto significa que has añadido en la clausula uses del form donde está el detalle la unit del maestro? si es así, es correcto

Por otro lado, el TTable maestro tiene Datasource? está en la misma Unit? Si es así, debería de salirte. No onstante, puedes escribirlo tu misma poniendo nombre de fromulario + nombre de datasource
Responder Con Cita
  #9  
Antiguo 29-04-2004
vhirginia vhirginia is offline
Miembro
 
Registrado: mar 2004
Posts: 64
Poder: 21
vhirginia Va por buen camino
Muchas gracias, Ya hemos arreglado lode master/detail, pero con el código de antes para eliminar los registros de la tabla detalle, no nos elimina los del edificio que seleccionamos sino todos los existentes en la tabla de pisos.
Hemos usado lo que tu nos dijiste:
Código:
while not TPisos.Eof do
  TPisos.Delete;
Responder Con Cita
  #10  
Antiguo 29-04-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Código Delphi [-]
while not TPisos.Eof do
  TPisos.Delete;

Si borras todo quiere decir que no tienes establecida
correctamente la relación maestro-detalle.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #11  
Antiguo 29-04-2004
vhirginia vhirginia is offline
Miembro
 
Registrado: mar 2004
Posts: 64
Poder: 21
vhirginia Va por buen camino
Creo que si la tenemos bien, al menos hemos puesto todo lo que cadetill nos dijo lo de poner el el MasterSource de la tabla detalle el DataSource de la tabla master y el campo por el que se enlazan en el MasterField.
una pregunta: Cuando hacemos 2 DBLookUpComboBox en el ListSource ponemos la tabla y en el campo el ListField del primero el campo clave que es el que enlaza las dos tablas, pero también hay una propiedad que se llama KeyField a la cual también le damos el valor del campo clave. Ahora, y aquí es donde tenemos una duda, en el DBLookUpComboBox 2 hacemos lo mismo, poner el ListSource y el ListField correspondientes, pero el KeyField ponemos el ListField también, pero no es clave, simplemente es un campo más de búsqueda ¿deberíamos rellenar ese KeyField? y ¿si lo tenemos que rellenar con que campo, el realmente clave o el que corresponde a ese segundo DBLookUpComboBox?
Espero haberme explicado.
Muchas gracias y perdón por robaros tiempo.
Responder Con Cita
  #12  
Antiguo 29-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por delphi help
Use KeyField to link the ListSource of the lookup control to the DataSource. Although the name of the field specified as the KeyField does not have to be the same as the name of the field specified as the DataField, the two fields must have the same values.

After specifying the ListField, choose which field the lookup control will actually display with the ListField property.

If the DataField field is a lookup field, don't specify anything for KeyField or ListField; lookup controls automatically use the data field's LookupKeyFields property for KeyField.
Este tipo de ayuda contextual de delphi podes obtenerla poniendote en la propiedad donde te interesa en el Object Inspector, y presionando F1.

Si no tenes mucha habilidad con el Ingles, podes auxiliarte de algun diccionario o traductor. Incluso tenes en línea varios, por ejemplo el de google (que te permite traducir cualquier trozo de texto):

http://www.google.com/language_tools?hl=es

Veo que no han seguido mi recomendación de leer un libro...

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #13  
Antiguo 29-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
ah... olvide mencionarlo. A muchos nos pasa que la ayuda, de un tema desconocido, nos deja con muchas dudas... entonces yo al menos, habitualmente comienzo a hacer pruebas para terminar de entender el comportamiento de las cosas. Cuando después de esto aún tengo dudas, entonces acudo a mis buenos amigos del club por ayuda.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 18:54:23.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi