Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Guardar registros de varias tablas Paradox utilizando un solo boton en un formulario (https://www.clubdelphi.com/foros/showthread.php?t=28757)

TrUnkS 31-12-2005 14:45:50

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

marcoszorrilla 31-12-2005 14:56:33

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.

TrUnkS 31-12-2005 15:31:37

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

marcoszorrilla 31-12-2005 17:44:21

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.

TrUnkS 06-01-2006 02:28:50

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 :D

sanz 27-01-2006 02:03:26

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
:)


La franja horaria es GMT +2. Ahora son las 13:07:10.

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