Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-12-2009
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 18
jafera Va por buen camino
Importar un txt

Buenas de nuevo a todos.

Voy a proponer un problema de parvulitos pero me lleva de cabeza.
En una aplicación genero un fichero txt sin ningun problema, este fichero lo quiero utilizar para crear una tabla nueva juntando dos ficheros iguales, pero con datos diferentes (txt en cuestión) creados con dos máquinas distintas.
Necesita saber como lo hago para importar este fichero desde delphi y como lo hago para poner un campo ID que sea el ultimo más 1.
El fichero txt ya tiene un ID que no me sirve ya que tendría dos veces el ID 1, dos veces el ID 2 etc.

Gracias

Josep
Responder Con Cita
  #2  
Antiguo 21-12-2009
Avatar de juanlaplata
juanlaplata juanlaplata is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Plata, Bs. As. (Argentina)
Posts: 212
Poder: 18
juanlaplata Va por buen camino
Importar ...
Código Delphi [-]
var
arch: TStringList;
i:integer;
var_1, var_2 , var_3 :string;
...
begin

 arch:= TStringList.Create;
arch.LoadFromFile( 'Path_Archivo.txt' );

for  i:=0  to arch.Count-1 do
   begin
   temp:= arch.Strings[i];
   var_1:= strToInt(copy(temp,1,2));   // la posicion y longitud del dato1
   var_2:= strToInt(copy(temp,4,10)); // la posicion y longitud del dato2
   var_3:= strToInt(copy(temp,15,5)); // la posicion y longitud del dato3

    // posiciones y longitud las sabras de antemano,
    // puede ser tambien que los datos esten separados por algun caracter especial
    // para lo cual deberias buscar dentro del renglon como dividir

   {hacer una cosulta para rescatar el ultimo id usado
    query:
    SELECT Max(Tabla.Id) +1  AS MaxId
    FROM Tabla;
    Dependiendo del motor y Base q uses sabras como hacerla
    Luego..}
   
   nuevo_id := resultado_query ;

    // aqui hacer el insert a la nueva tabla

   end;                  
...
arch.Free;
end ;
Cualquier duda, consulta, y entramos en detalles

Última edición por juanlaplata fecha: 21-12-2009 a las 19:02:30.
Responder Con Cita
  #3  
Antiguo 21-12-2009
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 18
jafera Va por buen camino
Perdonad, se me ha ido la pinza con la base, uso Firebird 1.5 con Delphi 6

Voy a probar la respuesta.

Gracias

Josep
Responder Con Cita
  #4  
Antiguo 24-12-2009
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 18
jafera Va por buen camino
Buena a todos, ya he conseguido hacer lo que queria, pongo el codigo a continuación.

Código Delphi [-]
 
procedure TF_Importa.BitBtn1Click(Sender: TObject);
var
F:TIBInputDelimitedFile;
i:integer;
begin
        F_Confirmacio := TF_Confirmacio.Create(self);
        F_Confirmacio.Label1.Caption:= 'Importem arxiu';
        try
        If F_Confirmacio.ShowModal = mrok then
        begin
                F_ModulDades.Act_Girona_Hist.Close;
                F_ModulDades.Act_Girona_Hist.Open;
                F_ModulDades.Act_Girona_Hist.Last;
                i:=F_ModulDades.Act_Girona_HistID.Value+1;
                F_ModulDades.Act_Girona_Hist.Append;
                F_ModulDades.Act_Girona_HistID.Value:=i;
                F_Importa.IBSQLImporta.SQL.Text := 'Insert into RE0006AGT values(:ID, :ID_REBUT, :ID_ARBITRE, :NOM, ATA, :TITOL, :CODI_CLUB, :CANON, :PASSADA)';
                F := TIBInputDelimitedFile.Create;
                try
                        F.ColDelimiter:=';';
                        If OpenDialog1.Execute then
                        begin
                                F.Filename:=OpenDialog1.FileName;
                        end;
                        F_Importa.IBSQLImporta.BatchInput(F);
                finally
                        F.Free;
                end;
                Posa_S.ExecSQL;
        end;
        finally
                F_Confirmacio.Free;
        end;
        Showmessage('Procés finalitzat');
end;

Solo tengo una duda, como controlo si los registros ya existen antes de insertarlos a la tabla?. Ahora no me controla nada y se me duplican los datos, lo cual no me interesa.

De nuevo gracias a todos.

Josep
Responder Con Cita
  #5  
Antiguo 24-12-2009
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Veo que tienes un campo ID, esto por lo general es único, no se repite.
Yo lo que hago es hacer una consulta previa a este campo y lo comparo con el que se incluirá, si son iguales entonces no se grabara el registro.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #6  
Antiguo 24-12-2009
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 18
jafera Va por buen camino
Gracias Caral, yo pensaba algo así pero no se como codificarlo o mejor dicho donde ejecuta esta consulta.

Josep
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
importar excel DavidSG4 Tablas planas 2 06-03-2008 18:52:57
Importar una dll vasgab API de Windows 0 21-07-2006 23:44:09
Importar OCX en delphi JuanPa1 Varios 5 15-06-2006 13:18:37
Importar DBF a Gdb vtdeleon Firebird e Interbase 4 14-05-2005 18:16:40
importar de excel joanajj Servers 3 04-08-2004 12:35:02


La franja horaria es GMT +2. Ahora son las 22:53:20.


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
Copyright 1996-2007 Club Delphi