bohemioloco
10-11-2006, 02:26:37
Saludos
En un anterior hilo pregunte si era posible llenar una tabla (socios) con datos de un archivo txt y Neftali me respondio:
(1) Sí.
(2) Básicamente se trata de ir leyendo la información del Archivo de texto (previamente cargado en un TStrings, por ejemplo) y luego ir haciendo Insert/Update (vía TTable o TQuery) en la tabla.
Siguiendo su consejo (el cual agradezco mucho) y algunas cosas que investigué por mi cuenta utilicé un Tmemo donde cargo el contenido del archivo txt para ir leyendo la información y un Tquery para hacer el llenado de la tabla (porque me pareció el metodo más facil para mi que soy totalmente nuevo en delphi :) )
Resumiendo me salió el siguiente código
procedure TfrmNumeroUno.iM1Click(Sender: TObject);
var y,d,a,ci,num,nom,cat:string;i,j,x,k:integer;
v: array [1..4] of string;
begin
query1.Close;
Query1.ExecSql;
frmNumeroUno.Memo1.Lines.Clear;
frmNumeroUno.OpenDialog1.Title:='Exportacion de Socios'; //ABRE DIALOGO Y BUSCA EL ARCHIVO
frmNumeroUno.OpenDialog1.DefaultExt:='.txt';
frmNumeroUno.OpenDialog1.InitialDir:='C:\windows\escritorio\BD';
frmNumeroUno.OpenDialog1.Execute;
frmNumeroUno.Memo1.Lines.Clear;
frmNumeroUno.Memo1.Lines.LoadFromFile(frmNumeroUno.OpenDialog1.FileName); //cuenta las lineas del archivo de texto
y:='';
for i:=0 to frmNumeroUno.Memo1.Lines.Count do //desde 1 hasta elnumero de lineas del texto
begin
x:=1;
d:='';
for k:=1 to 4 do //desde uno hasta numero de campos
begin
v[k]:=''; //vector de valores
end;
y:=frmNumeroUno.Memo1.Lines.Strings[i];
for j:=1 to length(y) do
begin
if y[j]<>'|' then
begin
d:=d+y[j];
end
else
begin
v[x]:=d;
inc(x);
a:=d;
d:='';
end;
end;
ci:=v[1]; //dato del primer campo
num:=v[2]; //dato del segundo campo
nom:=v[3]; // dato del tercer campo
cat:=v[4]; // dato del cuarto campo
//Aqui tiene que cargar los datos en la tabla//
frmNumeroUno.Query2.SQL.Clear;
frmNumeroUno.Query2.SQL.Add('insert into socios (ci,Ncta,Nombres,Calf) values('+ci+','+num+','+nom+','+cat+')');
Query2.Close;
frmNumeroUno.Query2.Active:=true;
Query2.ExecSql;
end
end;
El problema es que en tiempo de ejecución me sale el siguiente error
"Project miproyecto.exe raised exception class EDBEngineError whyt message Invalid use of keyword"
o sea me da error al encontrar un espacio en blanco dentro del texto.
¿Que me falta?:confused: ¿que me sobra?:confused: ¿Que hice mal? Alguien me puede aconsejar
Les agradezco de antemano su ayuda
En un anterior hilo pregunte si era posible llenar una tabla (socios) con datos de un archivo txt y Neftali me respondio:
(1) Sí.
(2) Básicamente se trata de ir leyendo la información del Archivo de texto (previamente cargado en un TStrings, por ejemplo) y luego ir haciendo Insert/Update (vía TTable o TQuery) en la tabla.
Siguiendo su consejo (el cual agradezco mucho) y algunas cosas que investigué por mi cuenta utilicé un Tmemo donde cargo el contenido del archivo txt para ir leyendo la información y un Tquery para hacer el llenado de la tabla (porque me pareció el metodo más facil para mi que soy totalmente nuevo en delphi :) )
Resumiendo me salió el siguiente código
procedure TfrmNumeroUno.iM1Click(Sender: TObject);
var y,d,a,ci,num,nom,cat:string;i,j,x,k:integer;
v: array [1..4] of string;
begin
query1.Close;
Query1.ExecSql;
frmNumeroUno.Memo1.Lines.Clear;
frmNumeroUno.OpenDialog1.Title:='Exportacion de Socios'; //ABRE DIALOGO Y BUSCA EL ARCHIVO
frmNumeroUno.OpenDialog1.DefaultExt:='.txt';
frmNumeroUno.OpenDialog1.InitialDir:='C:\windows\escritorio\BD';
frmNumeroUno.OpenDialog1.Execute;
frmNumeroUno.Memo1.Lines.Clear;
frmNumeroUno.Memo1.Lines.LoadFromFile(frmNumeroUno.OpenDialog1.FileName); //cuenta las lineas del archivo de texto
y:='';
for i:=0 to frmNumeroUno.Memo1.Lines.Count do //desde 1 hasta elnumero de lineas del texto
begin
x:=1;
d:='';
for k:=1 to 4 do //desde uno hasta numero de campos
begin
v[k]:=''; //vector de valores
end;
y:=frmNumeroUno.Memo1.Lines.Strings[i];
for j:=1 to length(y) do
begin
if y[j]<>'|' then
begin
d:=d+y[j];
end
else
begin
v[x]:=d;
inc(x);
a:=d;
d:='';
end;
end;
ci:=v[1]; //dato del primer campo
num:=v[2]; //dato del segundo campo
nom:=v[3]; // dato del tercer campo
cat:=v[4]; // dato del cuarto campo
//Aqui tiene que cargar los datos en la tabla//
frmNumeroUno.Query2.SQL.Clear;
frmNumeroUno.Query2.SQL.Add('insert into socios (ci,Ncta,Nombres,Calf) values('+ci+','+num+','+nom+','+cat+')');
Query2.Close;
frmNumeroUno.Query2.Active:=true;
Query2.ExecSql;
end
end;
El problema es que en tiempo de ejecución me sale el siguiente error
"Project miproyecto.exe raised exception class EDBEngineError whyt message Invalid use of keyword"
o sea me da error al encontrar un espacio en blanco dentro del texto.
¿Que me falta?:confused: ¿que me sobra?:confused: ¿Que hice mal? Alguien me puede aconsejar
Les agradezco de antemano su ayuda