Hola a todos, tengo un problema y no se por donde empezar.
Realicé una aplicación muy simple que imprime tikets y almacena en tablas paradox los datos de los ya mencionados tikets.
La aplicación tiene dos formas de guardar la información. Una almacena los datos en una tabla y la otra almacena los datos en dos tablas y luego los imprime.
El problema es que en un principio todo marcha bien, pero cuando lleva unos cuantos registros almacenados, al dar a guardar y imprimir borra de las tablas todo lo que se habia guardado en esa sesión.
El ordenador donde tengo el programa instalado, lo he formateado y le he instalado el XP, el gestor BDE, y el programita en cuestión.
Primero, cuando se crea el formulario principal, abro las tablas así:
Código:
exepath:=extractfilepath(paramstr(0));
Table1.TableName:=exepath+'preus.db';
Table1.Open;
Table2.TableName:=exepath+'altres.db';
Table2.Open;
Table3.TableName:=exepath+'factures.db';
Table3.Open;
Table4.TableName:=exepath+'facturesb.db';
Table4.Open;
Aquí podeis ver el código del método que solo guarda:
Código:
if suma<>0 then begin
table4.Append;
table4.FieldByName('datab').AsDateTime:=now;
table4.FieldByName('totalb').AsFloat:=suma;
table4.Post;
listbox1.Clear;
edit1.Clear;
suma:=0;
end;
Y aquí el que guarda e imprime (Que creo que es el que falla)
Código:
var
f:textfile;
i:integer;
begin
if suma<>0 then begin
table3.Append;
table3.FieldByName('data').AsDateTime:=now;
table3.FieldByName('total').AsFloat:=suma;
table3.Post;
table4.Append;
table4.FieldByName('datab').AsDateTime:=now;
table4.FieldByName('totalb').AsFloat:=suma;
table4.Post;
Assignfile(f,'LPT1');
rewrite(f);
writeln(f,inttostr(table3.FieldByName('cod_fac').AsInteger));
writeln(f,' ');
...
writeln(f,'-------------------');
writeln(f,' ');
for i:=0 to listbox1.Items.Count-1 do
writeln(f,listbox1.items[i]);
writeln(f,' ');
writeln(f,'-------------------');
writeln(f,' ');
writeln(f,'TOTAL '+edit1.text+' '+chr(238));
writeln(f,' ');
writeln(f,'IVA INCLUIDO');
writeln(f,' ');
writeln(f,datetostr(now));
...
closefile(f);
listbox1.Clear;
edit1.Clear;
suma:=0;
end;
end;
Gracias por vuestras respuestas.