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)

Caral 01-04-2008 04:56:57

Hola
Bueno, que decir, este tema ya deberia de estar terminado.
Se sigue sin dar los datos completos.
Veamos el asunto en esencia.
1- dbgrid con el cual se ve la tabla???? 1 o 2 ?????
2- 2 tablas que se quieren actualizar con un campo en comun y en base a un edit.
3- tenemos 1, 2 o 3 enlaces a las tablas????.
Para mi, lo de siempre, Codigo, si ver que se esta haciendo es muy dificil, aqui estaremos bateando.
Saludos

Delphius 01-04-2008 04:59:13

lKinGl, ¿podrías ya dejar de decir las mismas palabras?

¿Quieres recibir ayuda? Entonces ayudanos a ayudarte. La guia de estilo llama a las personas que se expresen detalladamente sobre sus problemas.

Es posible que con esas simples líneas no veamos donde tienes el problema.. ¿No será que el problema viene de otro lado?
¿Tanto te cuesta tomarte unos minutos, explicar de forma detallada y precisa sobre lo que estás haciendo? ¡Ni que decir si pudieramos ver parte de tu código!

Ya te lo han dicho: Explica bien tu caso y podremos saber que es, donde falla, y su solución (y talvez posibles alternativas).

No tengo más que decir por el momento.

Saludos,

lKinGl 01-04-2008 05:06:20

ok me explico mejor:

cuando abro el módulo modificar

se abre un formulario el cual tiene:

- Edit1 (Campo1);
- boton Editar
- Boton Guardar
- Boton Buscar

luego para cargar los datos del registro pulso el boton buscar y me sale una consulta sql

el cual tiene

un radio button
un edit
un dbgrid

selecciono el radiobutton por el cual quiero ordenar los registros con el table2 que se llama db_c.db

luego pulso el registro que yo desee y este se carga en el formulario principal de modificar

luego pulso el boton editar y el enabled del edit1(Campo1 ya cargado) se habilita para poder modificarlo

- luego lo modifico a mi gusto y presiono el boton guardar

y este boton guardar deberia editar en las 2 tablas el mismo registro ya que en el table1 y el table2 el campo es común... sino me entienden diganme y vuelvo a explicar de otra forma no se preocupen


uso tablas paradox 7 y delphi 7


gracias adelantadas !!!

Caral 01-04-2008 05:10:48

Hola
:D:D:rolleyes:
Saludos

lKinGl 01-04-2008 05:13:18

Código Delphi [-]
if length(edit1.Text)<1 then
  begin
    application.MessageBox('Porfavor ingrese la Cédula del Cliente','Información',MB_ICONINFORMATION);
    end
  else
  begin
      if length(edit2.Text)<1 then
        begin
           application.MessageBox('Porfavor ingrese la Nombre o Razón Social del Cliente','Información',MB_ICONINFORMATION);
           end
        else
        begin
            if length(edit3.Text)<1 then
              begin
                application.MessageBox('Porfavor ingrese el Domicilio Fiscal del Cliente','Información',MB_ICONINFORMATION);
                end
              else
              begin
                  if length(edit4.Text)<1 then
                    begin
                      if application.MessageBox('¿Este Cliente tiene número de teléfono?','Información',MB_YESNO)=6 then
                        begin
                        application.MessageBox('Porfavor Ingreselo','Información',MB_ICONINFORMATION);
                        end
                        else
                        begin
                        edit4.Text:='No Tiene';
                        if application.MessageBox('Cliente Guardado con Éxito','Guardar',MB_YESNO)=6 then
                        begin
                          BitBtn1.Click;
                        end
                        else
                        begin
                          BitBtn4.Click;
                        end
                        end
                    end
                    else
                    begin
                    //Base de Datos Para Guardar
                        begin
                         if form1.table2.locate('ced_cli', form1.table1.fieldvalues['ced_cli'],[]) then
                          begin
                            form1.Table1.Edit;
                            form1.Table1.FieldValues['cod_pol']:=trim(edit5.Text);
                            form1.Table1.FieldValues['Ced_cli']:=trim(Edit1.Text);
                            form1.Table1.FieldValues['Nom_cli']:=trim(edit2.Text);
                            form1.Table1.FieldValues['Dir_cli']:=trim(edit3.Text);
                            form1.Table1.FieldValues['Tel_cli']:=trim(edit3.Text);
                            form1.Table1.Post;
                            form1.Table2.Edit;
                            form1.Table2.FieldValues['cod_pol']:=trim(edit5.Text);
                            form1.Table2.FieldValues['Ced_cli']:=trim(Edit1.Text);
                            form1.Table2.FieldValues['Nom_cli']:=trim(edit2.Text);
                            form1.Table2.FieldValues['Dir_cli']:=trim(edit3.Text);
                            form1.Table2.FieldValues['Tel_cli']:=trim(edit3.Text);
                            form1.Table2.Post;
                          end
                          else
                          begin
                          ShowMessage('error grave');
                          end
                        end
                        end
              end
        end
  end

este es el código que tengo hasta los momentos:(

eduarcol 01-04-2008 15:31:57

de nuevo a lo mismo??, vistes la diferencia entre el codigo que te postee al principio y lo que tu escribistes, te lo coloco de nuevo para que sepas y veas el error:

En este codigo se graban los valores en la tabla1 y luego se busca por ese valor:

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');

Tu lo tienes de esta manera, haces la busqueda antes de grabar los codigos en la tabla

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
else
   ShowMessage('Error grave de referencialidad, ayudaaaaaaaaaa');

Si lo quieres como lo tienes, lo que debes es cambiar el origen de la busqueda.

Código Delphi [-]
if table2.locate('CodigoCliente', edit1.Text, []) then
begin

   table1.edit;
   table1.fieldvalues['campo1']:=edit1.text;
   table1.post;

   table2.edit;
   table2.fieldvalues['campo1']:=edit1.text;
   table2.post;
end
else
   ShowMessage('Error grave de referencialidad, ayudaaaaaaaaaa');

lKinGl 01-04-2008 18:27:14

Al finnnnnnn pude lograr lo que queria

Gracias eduarcol por tu tiempo y amigos foristas que me quisieron ayudar

lo que tenía era un error lógico por que siempre comparaba una sola tabla
y como yo queria que se guardara en las 2 tablas habia que comparar las 2 tablas haciendo asi:

Código Delphi [-]
                         begin
                            if form1.table2.locate('cod_pol', edit5.Text, []) then
                               begin
                                   if form1.Table1.Locate('cod_pol',edit5.Text,[]) then

de verdad estoy muy agradecido por la paciencia que tuvieron al ayudarme con mi problema

Facilito el código completo que estoy usando para que le sirva a alguien más:

este es el código del botón guardar y actualiza los datos en las 2 tablas correctamente :D

Código Delphi [-]
if length(edit1.Text)<1 then
  begin
    application.MessageBox('Porfavor ingrese la Cédula del Cliente','Información',MB_ICONINFORMATION);
    end
  else
  begin
      if length(edit2.Text)<1 then
        begin
           application.MessageBox('Porfavor ingrese la Nombre o Razón Social del Cliente','Información',MB_ICONINFORMATION);
           end
        else
        begin
            if length(edit3.Text)<1 then
              begin
                application.MessageBox('Porfavor ingrese el Domicilio Fiscal del Cliente','Información',MB_ICONINFORMATION);
                end
              else
              begin
                  if length(edit4.Text)<1 then
                    begin
                      if application.MessageBox('¿Este Cliente tiene número de teléfono?','Información',MB_YESNO)=6 then
                        begin
                        application.MessageBox('Porfavor Ingreselo','Información',MB_ICONINFORMATION);
                        end
                        else
                        begin
                        edit4.Text:='No Tiene';
                        if application.MessageBox('Cliente Guardado con Éxito','Guardar',MB_YESNO)=6 then
                        begin
                          BitBtn1.Click;
                        end
                        else
                        begin
                          BitBtn4.Click;
                        end
                        end
                    end
                    else
                    begin
                    //Base de Datos Para Guardar
                        begin
                         if form1.table2.locate('cod_pol', edit5.Text, []) then
                         begin
                            if form1.Table1.Locate('cod_pol',edit5.Text,[]) then
                          begin
                            form1.Table1.Edit;
                            form1.Table1.FieldValues['cod_pol']:=trim(edit5.Text);
                            form1.Table1.FieldValues['Ced_cli']:=trim(Edit1.Text);
                            form1.Table1.FieldValues['Nom_cli']:=trim(edit2.Text);
                            form1.Table1.FieldValues['Dir_cli']:=trim(edit3.Text);
                            form1.Table1.FieldValues['Tel_cli']:=trim(edit3.Text);
                            form1.Table1.Post;
                            form1.Table2.Edit;
                            form1.Table2.FieldValues['cod_pol']:=trim(edit5.Text);
                            form1.Table2.FieldValues['Ced_cli']:=trim(Edit1.Text);
                            form1.Table2.FieldValues['Nom_cli']:=trim(edit2.Text);
                            form1.Table2.FieldValues['Dir_cli']:=trim(edit3.Text);
                            form1.Table2.FieldValues['Tel_cli']:=trim(edit3.Text);
                            form1.Table2.Post;
                            ShowMessage('Datos Modificados con Éxito');
                            BitBtn4.Click;
                          end
                          else
                          begin
                          ShowMessage('Error al Modificar Datos');
                          end
                         end
                        end
                        end
              end
        end
  end

Caral 01-04-2008 18:51:30

Hola
Código Delphi [-]
 if (form1.table2.locate('cod_pol', edit5.Text, [])) and (form1.Table1.Locate('cod_pol',edit5.Text,[])) then
 begin
Saludos

Delphius 01-04-2008 18:57:41

Muy cierto amigo Carlos, el código puede mejorarse...
No es por querer ser malo, pero ese ¡código lástimó mis ojos! Considero que ahora que se ha solucionado el problema, lKinGl debe resumirlo; achicar esos anidamientos, que muy posiblemente la mayoría son innecesarios.

Primero, por las dudas, que haga una copia de la Unit;) y luego la reduzca, que limpie ese código... quien sabe, quizás luego debe modificar el sistema y al volver a revisar esa unidad se lleve un susto. Tener un código limpio ayuda mucho.

Saludos,

lKinGl 01-04-2008 19:10:35

Cierto lo que acabo de aportar es una copia fiel y exacta del código del Botón Guardar de mi Módulo Modificar

y necesito que funcione con esos anidamientos porsupuesto que nadie va a usar mis validaciones solo doy un código 100% Funcionando como yo necesitaba se los aseguro que a mas de uno le servirá

en fin el código que se necesita es solo este lo demás es pura zapateria

Código Delphi [-]
begin
         if Table2.locate('campo1', edit#.Text, []) then
              begin
                 if Table1.Locate('campo1',edit#.Text,[]) then
                     begin
                            Table1.Edit;
                            Table1.FieldValues['campo1']:=trim(edit#.Text);
                            Table1.post;
                            Table2.Edit;
                            Table2.FieldValues['campo1']:=trim(edit#.Text);
                            Table2.Post;
                            ShowMessage('Datos Modificados con Éxito');
                        end
                        else
                        begin
                          ShowMessage('Error al Modificar Datos');
                        end
                     end
              end
end

Caral 01-04-2008 19:46:19

Hola
Código Delphi [-]
begin
   if (Table2.locate('campo1', edit#.Text, [])) and (Table1.Locate('campo1',edit#.Text,[])) then
   begin
        Table1.Edit;
        Table2.Edit;
        Table1.FieldValues['campo1']:=trim(edit#.Text);
        Table2.FieldValues['campo1']:=trim(edit#.Text);
        Table1.post;
        Table2.Post;
    ShowMessage('Datos Modificados con Éxito');
    end
    else
    ShowMessage('Error al Modificar Datos');
    end
    end
end
Solo me entretengo un rato.:D
Saludos

egostar 01-04-2008 20:09:58

Cita:

Empezado por Caral (Mensaje 276762)
Hola
Solo me entretengo un rato.:D

Código Delphi [-]
begin
   if (Table2.locate('campo1',edit#.Text,[])) and
      (Table1.Locate('campo1',edit#.Text,[])) then begin
       Table1.Edit;
       Table2.Edit;
       Table1.FieldValues['campo1'] := trim(edit#.Text);
       Table2.FieldValues['campo1'] := trim(edit#.Text);
       Table1.post;
       Table2.Post;
       ShowMessage('Datos Modificados con Éxito');
   end
   else ShowMessage('Error al Modificar Datos');
end;

Yo también :D:D:D

Salud OS


La franja horaria es GMT +2. Ahora son las 16:34:55.

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