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)
-   -   Actualizar registros de dos tablas (https://www.clubdelphi.com/foros/showthread.php?t=54769)

lKinGl 30-03-2008 01:32:28

Actualizar registros de dos tablas
 
porfavor necesito ayuda espero me ayuden :o

tengo 2 tablas en paradox

tengo un formulario que me debe permitir modificar un registro de las 2 tablas al mismo tiempo....

tenia esto
Código Delphi [-]
 
table1.edit;
table1.fieldvalues['campo1']:=edit1.text;
table1.post;
 
table2.edit;
table2.fieldvalues['campo2']:=edit1.text;
table2.post;


pero esto funciona mal por que cuando muestro los datos en un formulario la tabla1 tiene un registro seleccionado pero table2 no, por lo tanto en table1 actualiza bien pero en table2 actualiza el último registro hecho

¿y si no quiero modificar el ultimo registro? sino el registro número 50 de las 2 tablas ¿¿como lo hago??

gracias adelantadas!!

Caral 30-03-2008 01:41:48

Hola
Aqui lo que indicas con lo que estas haciendo es:
Editas las dos tablas (tabla1 y tabla2) y haces un post indicado que el campo 1 y 2 sean iguales al edit1.
Bueno, las tablas no van a saber cual es el campo que quieres modificar, simplemente modificaran el primer campo o en su defecto el campo en el que se haya editado.
O nos das poca informacion o esta mal estructurado.
Yo usaría un query.
Saludos

lKinGl 30-03-2008 03:26:00

Tengo 1 tabla cliente y una póliza

un cliente puede tener mas de una póliza

tengo un formulario que registra clientes
y otro que registra pólizas

los dos bien

en el formulario de póliza uso una búsqueda sql (tabla clientes) para localizar el cliente que se le asignará a la nueva póliza

cuando el formulario póliza guarda crea un registro completo en la tabla póliza del nombre del cliente y sus datos

pero cuando voy al formulario de moficar datos de un cliente necesito que el nombre nuevo que yo asigne en el edit se modifique en la tabla poliza y en la tabla cliente

lo intente asi pero es ilogico por que 1 de las tablas no va a saber que registro quiero modificar y tomará por defecto el último

Código Delphi [-]
table1.edit;
table1.fieldvalues['campo1']:=edit1.text;
table1.post;
table2.edit;
table2.fieldvalues['campo1']:=edit1.text;
table2.post;
con este codigo delphi creo que se entiende lo que quiero lograr saludos!!:o

eduarcol 30-03-2008 03:32:35

a vr creo que tienes que darle una leidita a esto, guia de estilo


Solucion a tu problema:
Código Delphi [-]
table1.edit;
table1.fieldvalues['campo1']:=edit1.text;
table1.post;
if table2.locate('CodigoCliente', table1.fieldvalues['codigocliente'], []) then
begin
   table2.edit;
   table2.fieldvalues['campo1']:=edit1.text;
   table2.post;
end
else
   ShowMessage('Error grave de referencialidad, ayudaaaaaaaaaa');

Y tambien creo que con ese codigo delphi puedes entender lo que te quiero decir

lKinGl 30-03-2008 03:33:58

perfecto voy a intentar

por lo que pude ojear tu codigo es exactamente lo que necesito gracias lo pruebo y aviso como me fue!!

lKinGl 30-03-2008 03:58:06

sigue igual no actualiza como quiero por que solo actualiza el ultimo registro de las 2 tablas

lKinGl 30-03-2008 04:00:18

el codigo que me pasaste tenia un pequeño error no midifcaba los datos por que primero mandas a que edite el contenido de table1 y cuando entra a hacer el condicional if compara el table1 con table2 y como table1 ya fue modificado no va a coincidir nunca con el 2 lo que hice fue que despues que hace el condicional actualiza los dos tables de esta forma

Código Delphi [-]
if table2.locate('CodigoCliente', table1.fieldvalues['codigocliente'], []) then
begin table1.edit;
table1.fieldvalues['campo1']:=edit1.text; 
table1.post; 
table2.edit; 
table2.fieldvalues['campo1']:=edit1.text; 
table2.post;
end

asi si me funcionó como queria pero de todas maneras se agradece el codigo:

if table2.locate('CodigoCliente', table1.fieldvalues['codigocliente'], []) then

no lo sabia y me ayudo a la perfección gracias!!!

eduarcol 30-03-2008 04:00:57

que escribistes ahi?, eso es una broma?, has leido la guia de estilo??

lKinGl 30-03-2008 04:05:24

disculpen tanta molestia pero acabo de probar bien el programa y no funciona bien el código que me diste por que como compara 1 campo1 de table1 con campo2 de table2 edita siempre los ultimos registros y necesito es que modifique el que tengo cargado en mi formulario :(

lKinGl 30-03-2008 04:09:46

ups disculpen de verdad no quise infringir las reglas del foro puesto que no habia leido la guia de estilo...


ya la lei y no volverá a pasar gracias!! y disculpen

lKinGl 30-03-2008 05:42:09

lo intente asi pero edita son los 2 últimos registros de las tablas :(


Código Delphi [-]
if table2.locate('ced_cli', table1.fieldvalues['ced_cli'],[]) then
begin
table1.edit;
table1.fieldvalues['campo1']:=edit1.text;
table1.post;
table2.edit;
table2.fieldvalues['campo1']:=edit1.text;
table2.post;
end


gracias adelantadas!!!

Caral 30-03-2008 15:00:56

Hola
Insisto, la programacion es como el Derecho, No se puede leer entre lineas.
O se da la version completa o no se entiende.
No he logrado, por mas que intento, entender el concepto.
Por favor usa las etiquetas [delphi], ve a avanzado y coloca el segundo boton de la derecha, arriba.
Saludos

mario2000 30-03-2008 15:23:49

¿quin dijo que en foro las cuestiones se titulan ayuda?, las preguntas deben ser consisas para que las respuestas sirvan a todos!!!

lKinGl 30-03-2008 19:20:18

listo ya envolvi todo en code delphi porfa ayudenme de verdad necesito éste código :(

eduarcol 30-03-2008 19:49:46

ayudanos a entenderte. Al principio decias que table1 si se editaba bien, esto quiere decir que estaba posicionado sobre el registro correcto, pero ahora dices que ninguno de los dos se modificia como deberia?

lKinGl 30-03-2008 23:49:24

es que antes tenia

Código Delphi [-]
 table1.edit;
 table1.fieldvalues['campo1']:=edit1.text;
 table1.post;

luego uds mismos me ayudaron con un código y me funcionó mejor que el que yo tenia el cual es

Código Delphi [-]
 if form1.table2.locate('campo1', form1.table1.fieldvalues['campo1'],[]) then
begin
   table1.edit;
   table1.fieldvalues['campo1']:=edit1.text;
   table1.post
   table1.edit;
   table1.fieldvalues['campo1']:=edit1.text;
   table1.post
end;


tengan en cuenta que en table1 y en table2, campo1 es un campo común
y cuando uso el código que primero tenia table1 edita y se posiciona sobre el registro correcto pero table2 se posiciona y edita siempre el último y no el que necesito

con el segundo código (Que es el que tengo actualmente) se ubican y editan siempre en el último registro de los dos table


mi programa es que tiene una búsqueda sql que monta los datos que yo selecciono en un dbgrid en un formulario que tiene (edit1.text) luego yo necesito editar el contenido que hay en el edit y luego al momento de guardar que se actualice el registro que necesito de los dos tables

eduarcol 31-03-2008 00:34:17

si te fijas, hay un pequeño error de concepto entre el codigo que tu propones y el que se te facilito, tu estas buscando partiendo de la tabla1 antes de editarla, en el codigo que se te proporciono se realiza la busqueda luego de grabar.

lKinGl 31-03-2008 01:06:20

ok pero como logro porfin lo que deseo?

gracias adelantadas!

eduarcol 31-03-2008 14:58:34

Cita:

Empezado por lKinGl (Mensaje 276313)
ok pero como logro porfin lo que deseo?

gracias adelantadas!

Que tal como te dije la primera vez?

lKinGl 01-04-2008 04:48:49

Hola, eduardocol y amigos foristas

el código que me facilitaste funciona sin errores pero edita solo el último registro de las 2 tablas y necesito que edite el que yo seleccione mediante un dbgrid que carga los datos en un formulario que contiene el edit1.text(Campo1) y cuando yo lo edite campo 1 sea cual sea el número de posición en la que se encuentre se edite en las 2 tablas:o:o:o

gracias adelantadas!


La franja horaria es GMT +2. Ahora son las 16:54:01.

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