Ver Mensaje Individual
  #8  
Antiguo 01-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Reputación: 25
egostar Va camino a la fama
Cita:
Empezado por laukri Ver Mensaje
hola! como se haria con la 2da opción? yo necesito leer datos desde un archivo (separado por con un comando sql de forma manual

Gracias!
Cuando he tenido que importar datos desde archivos de texto siempre uso una rutina que me encontré si mal no recuerdo en Trucomania y se llama GetToken()

Así es como yo importo los datos a una BD cualquiera, lo único que cambiaría es el objeto Query que uses, IBQuery, ADOQuery, Query1.

Código Delphi [-]
procedure TFImporta.BitBtn1Click(Sender: TObject);

  function GetToken(Cadena,Separador:string;Token:integer):string;
  var
    Posicion:integer;
  begin
     while Token > 1 do begin
       Delete(Cadena,1,Pos(Separador,Cadena));
       Dec(Token);
     end;
     Posicion:=Pos(Separador,Cadena);
     if Posicion=0 then result:=cadena
     else Result:=Copy(Cadena,1,Posicion-Length(Separador));
  end;

  procedure CargaDatos(L:string);
  begin
    Codigo := GetToken(L,';',1);
    Extension := GetToken(L,';',2);
    Responsable := GetToken(L,';',3);
  end;

  procedure GrabaDatos;
  begin
     with Query1 do begin // IBQuery1, ADOQuery1, Query1 ......
         sql.clear;
         sql.add('INSERT INTO CODIGOS (Codigo, Extension, Responsable)');
         sql.add('VALUES ('+QuotedStr(Codigo)+','+
                            QuotedStr(Extension)+','+
                            QuotedStr(Responsable)+')');
         ExecSQL;
     end;
  end;

begin
   AssignFile(Arch,'archivo.csv');
   Reset(Arch);
   while not Eof(Arch) do begin
       Readln(Arch,Linea);
       CargaDatos(Linea);
       GrabaDatos;
   end;
   CloseFile(Arch);
   ShowMessage('Proceso terminado');
end;

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita