Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   levantar datos de archivos text en delphi (https://www.clubdelphi.com/foros/showthread.php?t=71956)

jhector 20-01-2011 19:24:08

levantar datos de archivos text en delphi
 
estoy con un proyecto donde me dan un archivo texto y apartir de esos datos necesito levantar una o varias tablas en la base de datos (mysql),
el archivo de texto viene un cuatro columnas separadas por "',".

ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source='+archivo+';Extended Properties=text;FMT=Delimited';

estaba conectando con adoconnection, con el string anterior pero me levanta un error de autentificacion.

como seria la mejor manera y mas rapida de conectar para luego mostrar los datos en un grid

BlueSteel 21-01-2011 15:58:50

Cita:

Empezado por jhector (Mensaje 388103)
estoy con un proyecto donde me dan un archivo texto y apartir de esos datos necesito levantar una o varias tablas en la base de datos (mysql),
el archivo de texto viene un cuatro columnas separadas por "',".

ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source='+archivo+';Extended Properties=text;FMT=Delimited';

estaba conectando con adoconnection, con el string anterior pero me levanta un error de autentificacion.

como seria la mejor manera y mas rapida de conectar para luego mostrar los datos en un grid

Hola jhector...

Bienvenido al Club. Favor lee la guia de estilo

Aqui te respondo lo que tambien solicitaste por mensaje privado. (lo ideal es que preguntes en el mismo hilo que encontrastes...)


El ejemplo es para capturar un archivo de texto o csv separado por comas. Trabajo con D7... y con los componentes Jedi...

Dentro del Formulario tengo los siguientes componentes:


TDriveComboBox -> Seleccionar la Unidad donde se encuentra el archivo
TDirectoryListBox -> Seleccionar el directorio donde se encuentra el archivo
TfilterComboBox -> predefinido para mostrar solo los archivos que quiero (*.txt, *.csv, etc)

TFileListBox -> muestra los archivos que estan en el directorio segun el filtro
TEdit -> Donde dejo el nombre del archivo que se selecciona en el TFileListBox


TJvCsvDataSet -> Donde defino la estructura del archivo de texto o csv (Componente Jedi)
TDBGrid -> Donde muestro los datos del archivo cargado
TDataSourse -> para vincular el archivo de texto con el DBGrid

2 botones tengo... 1 para cargar el archivo y el otro para traspasar a una tabla en mi base de SQL


En el boton 1 (Cargar archivo tengo lo siguiente)
Código Delphi [-]
     
DTexto.Active   := False;  // DTexto es el nombre de mi componente TJvCsvDataSet  , lo desactivo a vincular el archivo
DTexto.FileName := Concat(Label1.Caption,'\',Archivo.Text);  // le asigno la ruta y nombre del archivo  (label1 me captura la ruta...archivo es el Tedit)
DTexto.Active   := True; // Activo el componente
Edit4.Text      := IntToStr(DTexto.RecordCount);  // obtengo el numero de registros
BitBtn3.Enabled := True;  // activo boton 2 para realizar traspaso

con esto el archivo ya esta cargado

espero que esto te sirva...

Salu2:D:p

BlueSteel 21-01-2011 17:37:00

Ahora te dejo la segunda parte.. que seria el proceso que realizo yo para traspasor los datos que estan en el DBGrid a una tabla de Sql Server

en el boton de Traspasar, pongo el sgte codigo
Código Delphi [-]
Var
   i : Integer;
   nArchivo : String;
begin
     DTexto.First;  // me posiciono en el primer registro
     For i:=0 to DTexto.RecordCount-1 Do   //  Ciclo se realiza de 0 al ultimo
     Begin
          Datos.AQ_Edit.Close;
          Datos.AQ_Edit.Sql.Clear;
          Datos.AQ_Edit.SQL.Add('Insert Into Envio (Env_Ficha, Env_Rol, Env_Proceso, Env_Mes, Env_Ano, Env_Monto)');
          Datos.AQ_Edit.SQL.Add('Values (:v01, :v02, :v03, :v04, :v05, :v06)');
          Datos.AQ_Edit.Parameters[0].Value := DTexto.fieldbyname('FICHA').AsString;
          Datos.AQ_Edit.Parameters[1].Value := DTexto.fieldbyname('ROL').AsString;
          If vPro.ItemIndex = 0 Then
             Datos.AQ_Edit.Parameters[2].Value := 'L'
          Else
             Datos.AQ_Edit.Parameters[2].Value := 'G';
          Datos.AQ_Edit.Parameters[3].Value := vMes.Text;
          Datos.AQ_Edit.Parameters[4].Value := vAno.Text;
          Datos.AQ_Edit.Parameters[5].Value := DTexto.fieldbyname('MONTO').AsString;
          Datos.AQ_Edit.ExecSQL;   // Ejecuto la sentencia SQL para insertar
          DTexto.Next;  // Avanzo al siguiente registro
     End;
     DTexto.Active   := False; //desactivo el componente que muestra el archivo de texto
     RenameFile(Concat(Label1.Caption,'\',Archivo.Text),ChangeFileExt(Concat(Label1.Caption,'\',Archivo.T  ext),'.ok'));  // cambio el nombre al archivo de texto
     Directorio.Refresh;  // refresco los componentes donde me mostraba el archivo seleccionado
     Archivo.Refresh;

end;

prueba con esto orientado a tu base de mysql y me cuentas como te fue

espero que te sirva

Salu2:p:cool:

llSnakell 21-01-2011 18:05:05

:O q wena justo lo que necesitaba !! muchas gracias !!
no podia encontrarlo :)

thanks


La franja horaria es GMT +2. Ahora son las 04:00:49.

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