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 31-12-2005
Avatar de TrUnkS
TrUnkS TrUnkS is offline
Miembro
 
Registrado: dic 2005
Posts: 93
Poder: 19
TrUnkS Va por buen camino
Question Guardar registros de varias tablas Paradox utilizando un solo boton en un formulario

HOLA. Quizás sea una pregunta sencilla de responder pero para mi no lo ha sido tanto pues estoy comenzado con esto de Delphi. Agradeceria a quien me ayudara y tenga voluntad de responderme con claridad.
Uso Paradox 7 y Delphi 6. Tengo un formulario FSesion que es el primero que aparece cuando habro mi archivo dpr, con él inicio sesión en mi aplicación comprobando usuario y contraseña, después de la validación llego al formulario FPrincipal. Desde este formulario llamo a todos los otros formularios, uno de esos es FPropuesta. En él tengo DBEdits y DBGrids asignados a distintas tablas Paradox. Quisiera que la tabla Propuesta.db sea mi tabla madre ya que sus campos se encuentran en todos los formularios y que las otras sean mis tablas hijas pero no se como hacerlo. Obviamente tengo hechas las relaciones en un papel con sus claves principales y foráneas y están correctas. He intentado con el valor fsMDIForm en la propiedad FormStyle pero no se que más sigue. Además al crear las tablas con Database Desktop no se como asignarle las claves foráneas para crear la relación y que se sepa cuál es la tabla padre y cuál es la hija. Quisiera poner en todos mis formularios un boton GUARDAR para que guarde todos los datos en las distintas tablas con un solo click. Si alguien pudiera guiarme le estaría profúndamente agradecido. De antemano gracias
Responder Con Cita
  #2  
Antiguo 31-12-2005
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
Pues con el DataBaseDesktop, tienes que ir a la opción reestructurar tabla y luego a integridad referencial.

Ahora bien, esto no tiene nada que ver con que agregues un registro en una tabla maestra, no se agregará ninguno automáticamente a las tablas detalle (hijas según tu nomenclatura).

Tendrás que aclarar un poco más que es lo que quieres, pero habrá que distinguir agregar datos nuevos Append ó Insert o modificar los existentes Edit.
Código Delphi [-]
Agregar datos a 2 tablas diferentes:
Tabla1.Append;
Tabla1MiCampo.Value:='Hola';
Tabla1.Post;

Tabla2.Append;
Tabla2Micampo.Value:='Hola';
Tabla2.Post;
etc.


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
  #3  
Antiguo 31-12-2005
Avatar de TrUnkS
TrUnkS TrUnkS is offline
Miembro
 
Registrado: dic 2005
Posts: 93
Poder: 19
TrUnkS Va por buen camino
Hola muchas gracias por responder a mi inquietud y espero que me haya explicado bien, pero para aclararlo un poco mejor voy a ser más explicito.
Hay un Formulario que se llama FPHogar, el cual es llamado desde FPrincipal por medio de un botón, y en FPHogar hay DBEdits , DBGrids, DBCombobox, DBCheckBox, etc... resulta de que éstos componentes están referenciados para ser almacenadas en distintas tablas. Por ejemplo en ese mismo formulario hay datos para ingresar en la tabla Clientes.db y otros para ingresar en la tabla Propuesta.db. Lo que necesito es saber como lo hago para que un solo botón GUARDAR me guarde los datos que puse para Cliente y para Propuesta, es decir, en tablas diferentes . Quiero tener una solo componente Table en FPHogar con un solo DataSource asignado a una tabla Padre, para eso tengo que designar cuál es la tabla Padre y cuál es la tabla Hija para que así la tabla Padre haga ingresar los datos automáticamente a las Hijas. Estoy tomando en cuenta el código que me diste pero considera que son varias tablas y no quisiera poner 10 componentes Table y 10 componentes DataSource, no quisiera escribir campo por campo en el código para que me los guarde uno por uno seria muy tedioso, a no ser que sea la única solución. Si es la única solución tendria que ser asi por medio de este código?

Tabla1.Append;
Tabla1MiCampo.Value:=' ';
Tabla1.Post;
.
.
.
Tabla2.Append;
Tabla2Micampo.Value:=' ';
Tabla2.Post;
.
.
.

Agradecido por una respuesta

Última edición por TrUnkS fecha: 31-12-2005 a las 15:54:23.
Responder Con Cita
  #4  
Antiguo 31-12-2005
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
Bien, lo lógico es tener un DataModulo y allí todas las tablas y sus DataSource correspondientes, si los controles DbEdit, y Rejillas están vinculados directamente a los datos.

V.G. Prueba a hacer doble clic en un Ttable elige añadir todos los campos, seleccionalos y los arrastras sobre el formulario que los necesites, un alta consistiría símplemente en rellenar unos DbEdit el usuario y el código:
Código Delphi [-]
MiTabla.Append;
{Una vez rellenados los datos por el usuario}
MiTabla.Post;

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
  #5  
Antiguo 06-01-2006
Avatar de TrUnkS
TrUnkS TrUnkS is offline
Miembro
 
Registrado: dic 2005
Posts: 93
Poder: 19
TrUnkS Va por buen camino
Hola ... Gracias por responder y disculpas por el retraso. Estoy revisando lo que corresponde hacer. Luego tendré noticias al respecto y explicaré con detalle los pasos a seguir una vez que lo termine, pues me consta que deben haber muchos programadores con la misma inquietud, sería bueno aportar al foro. Muchas gracias ya pude solucionar mi problema
Responder Con Cita
  #6  
Antiguo 27-01-2006
sanz sanz is offline
Miembro
 
Registrado: ene 2006
Posts: 11
Poder: 0
sanz Va por buen camino
Post Respuesta

Sabes yo tambien hice una palicacion parecida a la tuya de factura pero para guardar los datos tuves que guardar la tabla principal utilizando solo
Código Delphi [-]
 
 
tablapadre.append;
tablapadre.post;
 
tablahija.append;
tablahija.campo.value:=DBEDIT5.TEXT;
tablahija.post;

fue la unica solucion que encontre porque estaba haciendo la misma forma que pero no se puede porque el datasource del dbedit5 esta conectado con la tablapadre y para guardar el dato contenido en el dbedit5 tienes que utilizar el codigo que te he dado, ahora otra calaracion si te sale error puede ser por el tipo de dato del campo por ejemplo si el tipo de dato que contiene el Dbedti5 en numerico tienes que ponerle de esta manera: tablahija.campo.value:=StrToFloat(DBEDIT5.TEXT);

bueno espero te sea util esta pequeña aclaracionq ue te ahgo cualquier cosa me escribes a mi email. chauuuuuuuuuuuuuuuu
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 20:13:25.


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