PDA

Ver la Versión Completa : Como actualizo datos en una tabla Firebird


jafera
16-01-2012, 15:38:32
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


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

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
Hola. Me parece que falta asignar los valores a las variables

:CODI_CLUB, :CLUB en esta sentencia


Código Delphi [-] (http://www.clubdelphi.com/foros/#)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.