Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Como actualizo datos en una tabla Firebird (https://www.clubdelphi.com/foros/showthread.php?t=77336)

jafera 16-01-2012 15:38:32

Como actualizo datos en una tabla Firebird
 
Buenas tardes a todos.
Estoy encallado en un tema, a ver si alguien pe puede desencallar.
Tengo el siguientre procedimiento que me importa a una tabla temporal los registros de un fichero txt. Hasta aquí correcto.
Luego con una consulta busco los registros que no estan en la tabla principal para añadirlos a la misma, la consulta me devuelve los valores correctos.
Lo que necesito ahora es hacer la adición de estos registros a la tabla principal, aquí es donde me encallo, no se como hacerlo

Código Delphi [-]
 
procedure TF_Clubs.Importa1Click(Sender: TObject);
var
        F: TIBInputDelimitedFile;
begin
        F_Confirmacio := TF_Confirmacio.Create(self);
        F_Confirmacio.Label1.Caption := 'Importem arxiu';
        try
                if F_Confirmacio.ShowModal = mrok then
                begin
                        with BorraTemp do
                        begin
                                Close;
                                UnPrepare;
                                Sql.Text := 'DELETE FROM RE0004T';     //Borro la tabla temporal
                                Prepare;
                                Open;
                        end;
                        F_ModulDades.Clubs_Temp.Close;
                        F_ModulDades.Clubs_Temp.Open;
                        F_ModulDades.Clubs_Temp.Append;       //Inserto los txt a la tabla temporal
                        IBSQLImporta.SQL.Text := 'Insert into RE0004T values(:CODI_CLUB, :CLUB)'; 
                        F := TIBInputDelimitedFile.Create;
                        try
                                F.ColDelimiter := ';';
                                if OpenDialog1.Execute then
                                begin
                                        F.Filename := OpenDialog1.FileName;
                                end;
                                IBSQLImporta.BatchInput(F);
                        finally
                                F.Free;
                        end;
                        SQLActualitza.Close;  // busqueda de los registros a añadir
                        SQLActualitza.Open;
                        F_ModulDades.Clubs.Close;
                        F_ModulDades.Clubs.Open;
                        F_ModulDades.Clubs.Append;  //Tabla donde se deben añadir los registros
                        Update??  // Aquí es donde no se que código poner
                end;
        finally
                F_Confirmacio.Free;
        end;
        ShowMessage('Fitxer Actualitzat');
end;

Como siempre Delphi 6 (migrando a XE2) y FB 1.5

Saludos

MartinS 16-01-2012 16:57:40

Hola. Me parece que falta asignar los valores a las variables

:CODI_CLUB, :CLUB en esta sentencia

Código Delphi [-]
IBSQLImporta.SQL.Text := 'Insert into RE0004T values(:CODI_CLUB, :CLUB)'

y despues el IBSQLImporta.ExecQuery

Repito. Me parece o falta algo mas de código o bien ¿Donde lo hace?

jafera 16-01-2012 17:17:34

Cita:

Empezado por MartinS (Mensaje 423061)
Hola. Me parece que falta asignar los valores a las variables

:CODI_CLUB, :CLUB en esta sentencia


Código Delphi [-]IBSQLImporta.SQL.Text := 'Insert into RE0004T values(:CODI_CLUB, :CLUB)'



y despues el IBSQLImporta.ExecQuery

Repito. Me parece o falta algo mas de código o bien ¿Donde lo hace?

Se ejecuta aquí

IBSQLImporta.BatchInput(F);

Pero este no es el problema, el fichero se genera correctamente.
Lo que me pasa es que luego lanzo la consulta para saber que registros no existen, me encuentra 2, 3 o 25 registros y los quiero añadir a la tabla principal, ahí es donde no se tratar como el resultado de la consulta sqlactualitza y pasarlo (añadirlo) a la tabla principal

Gracias

Casimiro Notevi 16-01-2012 17:45:08

Si no he entendido mal, puedes recorrer los registros que te ha devuelto e ir guardándolos en la base de datos.


La franja horaria es GMT +2. Ahora son las 22:26:38.

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