Club Delphi  
    Paypal   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 Buscar Temas de Hoy Marcar Foros Como Leídos

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: 585
Poder: 20
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
  #2  
Antiguo 24-12-2009
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 585
Poder: 20
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
  #3  
Antiguo 24-12-2009
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 28
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
  #4  
Antiguo 24-12-2009
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 585
Poder: 20
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
  #5  
Antiguo 24-12-2009
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 28
Caral Va por buen camino
Hola
Lo que haces es una inserción con un botón, en ese mismo momento se hace la comparación:
Coloca un query nuevo en el form, lo enlazas a la tabla.
Supongo que tendras un edit o dbedit donde escribes el ID, entonces lo haces asi:

Código Delphi [-]
procedure TF_Importa.BitBtn1Click(Sender: TObject);
var
F:TIBInputDelimitedFile;
i:integer;
begin
     // aqui empieza la comparacion
    If dit1.Text <> '' then    // si el edit esta lleno entonces:
   Begin
     TuQuery.Active:= false;
     TuQuery.SQL.Text:= 'Select ID from TuTabla Where ID = :cod ';
     TuQuery.Parameters.ParamByName('cod').Value := Edit1.Text;  // esto depende del componente que uses
     TuQuery.Active := true;
     IF TuQueryID.AsString = Edit1.Text then  //puede ser tambien value
     begin
     MessageDlg('ID ya existe, favor seleccionar otro',mtError,[mbOK],0);
     Edit1.Text:= '';
     end
     else
        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;
Si el ID ya existe no guardara nada y dara el foco al edit, de lo contrario lo grabara.
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: 585
Poder: 20
jafera Va por buen camino
Gracias de nuevo por tus consejos Caral.
Te cuento, en mi form solo tengo un boton para ejecutar la importacion y uno para salir, un opem dialog y una consulta para pasar un campo a un valor una vez finalizada la importacion, en este form yo no veo nada de informaciónni edit ni nada de nada y no puedo usar el ID porque este campo se genera automaticamente ya que el arvchivo de importacion, el txt, puede proceder de dos maquinas distintas con lo cual este ID se repite y yo lo que hago es crear uno nuevo para cada linea.
Yo pensaba en la utilizacion de algun tpo de array con los campos ID_CURSA, ID_ARBITRE ya que esta combinacion si que es irrepetible en los ficheros que yo genere, aunque si se puede repetir en el fichero que me envie mi compañero para hacer el total.
Otro posibilidad seria usar tres campos, ID_CURSA, ID_ARBITE, DATA ya que un mismo comisario no puede estar en dos carreras el mismo día, no se estoy un poco perdido.

Saludos

Josep
Responder Con Cita
  #7  
Antiguo 24-12-2009
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 28
Caral Va por buen camino
Hola
No entiendo en realidad cual es la función del archivo de texto que te envían, para que?, que contiene?.
Entiendo que usas Firebird como BD, también creo entender que generas un ID nuevo cada vez que introduces los datos que recibes de los archivos txt.
La verdad no entiendo:
1- por que del uso de los TXT.
2- por que no usar directamente la BD.
3- cual es el problema de crear un nuevo ID o numero irrepetible en la BD.
4- cual es el problema de capturar el numero del archivo txt y sumarle 1 o añadirle algo mas.
Creo que estoy algo perdido con lo que te sucede, no logro entender cual es el problema.
Saludos
__________________
Siempre Novato
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 17:15:39.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi