Que tal
Depronto por el afan que tengo no he dado los datos completos, estoy trabajando una base de datos en mysql, estoy comunicandola via odbc, a continuacion describo el codigo que estoy utilizando para trabajar.
Código Delphi
[-]
procedure TCarg_Venta.Btn_ExporClick(Sender: TObject);
var
Archivocsv, Campos: Tstringlist;
I: Integer;
S,A,B,C,D,E,F,G,H,Y,K,M,N,O,P,Q,R:string;
begin
prg_bar_prep.Position:=0;
prg_bar_carg.Position:=0;
Archivocsv:=Tstringlist.create;
Campos:=Tstringlist.create;
try
Archivocsv.LoadFromFile(ruta.Text);
lbl_prep.Enabled:=true;
prg_bar_prep.Min:=0;
prg_bar_prep.Max:=archivocsv.Count;
S:=Archivocsv.Strings[0];
if (copy(s,1,1))<>'"' then begin
for I:=0 to Archivocsv.Count -1 do
begin
S:=Archivocsv.Strings[i];
A:=copy(S,0,2);
B:=copy(S,length(a)+1,2);
C:=copy(S,length(a)+1,4);
D:=copy(S,length(a+c)+1,18);
E:=copy(S,length(a+c+d)+40+1,2);
F:=copy(S,length(a+c+d)+40+1,4);
G:=copy(S,length(a+c+d+f)+40+1,3);
H:=copy(S,length(a+c+d+f+g)+40+1,15);
K:=copy(S,length(a+c+d+f+g+h)+40+40+1,12);
M:=copy(S,length(a+c+d+f+g+h+k)+40+40+1,12);
N:=copy(S,length(a+c+d+f+g+h+k+m)+40+40+1,4);
O:=copy(S,length(a+c+d+f+g+h+k+m+n)+40+40+1,1);
P:=copy(S,length(a+c+d+f+g+h+k+m+n+O)+40+40+1,10);
R:=copy(S,length(a+c+d+f+g+h+k+m+n+O+P)+40+40+1,3);
c:=copy(c,2+1,4);
insert('-',f,3);
q:=copy(N,0,2);
q:=copy(N,3,4)+q;
N:=Q;
insert(formatdatetime('yyyy',now),N,length(n)+1);
insert('/',N,3);
insert('/',N,6);
insert('"',A,0);
insert('"',A,length(a)+1);
insert('"',B,0);
insert('"',B,length(B)+1);
insert('"',C,0);
insert('"',C,length(C)+1);
insert('"',D,0);
insert('"',D,length(D)+1);
insert('"',E,0);
insert('"',E,length(E)+1);
insert('"',F,0);
insert('"',F,length(F)+1);
insert('"',G,0);
insert('"',G,length(G)+1);
insert('"',H,0);
insert('"',H,length(H)+1);
insert('"',K,0);
insert('"',K,length(K)+1);
insert('"',M,0);
insert('"',M,length(M)+1);
insert('"',N,0);
insert('"',N,length(N)+1);
insert('"',O,0);
insert('"',O,length(O)+1);
insert('"',P,0);
insert('"',P,length(P)+1);
insert('"',R,0);
insert('"',R,length(R)+1);
Y:=concat(A,',',B,',',C,',',D,',',E,',',F,',',G,',',H,',',K,',',M,',',N,',',O,',',P,',',R);
Archivocsv.Strings[i]:=Y;
prg_bar_prep.Position:=prg_bar_prep.Position+1;
end;
end;
prg_bar_prep.Position:=archivocsv.Count;
Archivocsv.SaveToFile(ruta.Text);
Archivocsv.LoadFromFile(ruta.Text);
lbl_carg.Enabled:=true;
for I:=0 to Archivocsv.Count -1 do
begin
prg_bar_carg.Min:=0;
prg_bar_carg.Max:=archivocsv.Count;
Campos.clear;
Campos.CommaText:=ArchivoCsv[i];
bd.Tbl_Venta.Open;
bd.Qry_Vld.Close;
bd.Qry_Vld.SQL.Text:='Select * from tbl_venta where Cod_Movi=:cod_movi and document=:document and linea=:linea';
bd.Qry_Vld.ParamByName('Cod_Movi').AsString:=campos[11];
bd.Qry_Vld.ParamByName('Document').AsString:=campos[12];
bd.Qry_Vld.ParamByName('Linea').AsString:=campos[13];
bd.Qry_Vld.Open;
if(bd.Qry_Vld.RecordCount=0) then begin
bd.Tbl_Venta.Insert;
bd.Tbl_Venta.FieldByName('Cod_Vende').AsString:=Campos[0];
bd.Tbl_Venta.FieldByName('Cod_Zo').AsString:=Campos[1];
bd.Tbl_Venta.FieldByName('Cod_Subzo').AsString:=Campos[2];
bd.Tbl_Venta.FieldByName('Cod_Cliente').AsString:=Campos[3];
bd.Tbl_Venta.FieldByName('Cod_Grup').AsString:=Campos[4];
bd.Tbl_Venta.FieldByName('Cod_SubGrup').AsString:=Campos[5];
bd.Tbl_Venta.FieldByName('Embal').AsString:=Campos[6];
bd.Tbl_Venta.FieldByName('Cod_Artic').AsString:=Campos[7];
bd.Tbl_Venta.FieldByName('Canti').AsInteger:=strtoint(Campos[8]);
bd.Tbl_Venta.FieldByName('Valor').AsInteger:=strtoint(Campos[9]);
bd.Tbl_Venta.FieldByName('Fecha').AsDateTime:=strtodatetime(campos[10]);
bd.Tbl_Venta.FieldByName('Cod_Movi').AsString:=Campos[11];
bd.Tbl_Venta.FieldByName('Document').AsString:=Campos[12];
bd.Tbl_Venta.FieldByName('Linea').AsString:=Campos[13];
bd.Tbl_Venta.Post;
bd.Qry_Vld.Close;
prg_bar_carg.Position:=prg_bar_carg.Position+1;
bd.Tbl_Venta.Close;
bd.Qry_Vld.Close;
end
else begin
bd.Tbl_Venta.FindKey([Campos[11],Campos[12],Campos[13]]);
bd.Tbl_Venta.Edit;
bd.Tbl_Venta.FieldByName('Cod_Vende').AsString:=Campos[0];
bd.Tbl_Venta.FieldByName('Cod_Zo').AsString:=Campos[1];
bd.Tbl_Venta.FieldByName('Cod_Subzo').AsString:=Campos[2];
bd.Tbl_Venta.FieldByName('Cod_Cliente').AsString:=Campos[3];
bd.Tbl_Venta.FieldByName('Cod_Grup').AsString:=Campos[4];
bd.Tbl_Venta.FieldByName('Cod_SubGrup').AsString:=Campos[5];
bd.Tbl_Venta.FieldByName('Embal').AsString:=Campos[6];
bd.Tbl_Venta.FieldByName('Cod_Artic').AsString:=Campos[7];
bd.Tbl_Venta.FieldByName('Canti').AsInteger:=strtoint(Campos[8]);
bd.Tbl_Venta.FieldByName('Valor').AsInteger:=strtoint(Campos[9]);
bd.Tbl_Venta.FieldByName('Fecha').AsDateTime:=strtodatetime(campos[10]);
bd.Tbl_Venta.Close;
bd.Qry_Vld.Close;
prg_bar_carg.Position:=prg_bar_carg.Position+1;
end;
end;
except
showmessage('La Carga de las Ventas No pudo llevarse acabo');
end;
Archivocsv.Free;
Campos.Free;
showmessage('La Carga de las ventas ha finalizado');
end;
Agradezco su atencion y colaboracion
