Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-04-2005
jomanaar jomanaar is offline
Registrado
 
Registrado: ene 2005
Posts: 6
Poder: 0
jomanaar Va por buen camino
Aplicación con paradox me pierde los datos

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.
Responder Con Cita
  #2  
Antiguo 25-04-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Te falta para asegurarte la grabación poner en el vento AfterPost del Ttable
Código Delphi [-]
 Table1.FlushBuffers;

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 25-04-2005
Avatar de Pablo Carlos
Pablo Carlos Pablo Carlos is offline
Miembro
 
Registrado: jun 2004
Ubicación: Mendoza - Argentina
Posts: 270
Poder: 20
Pablo Carlos Va por buen camino
Aquí podeis ver el código del método que solo guarda:
Código:
 

table4.Post;
listbox1.Clear;
edit1.Clear;
suma:=0; // este valor lo tomas del edit1?
end;
[/quote]
Hasta aquí lo entiendo... Comparto lo de marcoszorrilla
Cita:
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; // si el valor lo tomas del edit1 en el post de la table4 lo borras?
table4.Post;
listbox1.Clear;
edit1.Clear;
suma:=0;
end;
Lo único que no entiendo es lo que te agregue en el código, ¿el valor de suma lo tomas del edit1? si es así, me parece que lo borras antes del post de la table3.-
Revisa ese detalle, si es que no me equivoco
Saludos
__________________
Por qué todas las personas saben exactamente cómo debemos vivir nuestra vida, y nunca tienen idea de cómo deben vivir sus propias vidas.
Responder Con Cita
  #4  
Antiguo 26-04-2005
jomanaar jomanaar is offline
Registrado
 
Registrado: ene 2005
Posts: 6
Poder: 0
jomanaar Va por buen camino
Hola de nuevo,

Suma es una variable global. No coge su valor del edit1, sino que el edit1 muestra por pantalla el valor de suma, por eso una vez guardado el tiket borro el edit1 y pongo la variable global suma a cero.
Responder Con Cita
  #5  
Antiguo 27-04-2005
Avatar de Pablo Carlos
Pablo Carlos Pablo Carlos is offline
Miembro
 
Registrado: jun 2004
Ubicación: Mendoza - Argentina
Posts: 270
Poder: 20
Pablo Carlos Va por buen camino
Hola... no entiendo pero si suma es una variable (me imagino con un dato o importe) y luego de guardar los datos por primera vez pones a suma a 0 ¿cómo encuentra el valor <> a 0 en el segundo guardado e impresión?
Saludos
__________________
Por qué todas las personas saben exactamente cómo debemos vivir nuestra vida, y nunca tienen idea de cómo deben vivir sus propias vidas.
Responder Con Cita
  #6  
Antiguo 04-05-2005
jomanaar jomanaar is offline
Registrado
 
Registrado: ene 2005
Posts: 6
Poder: 0
jomanaar Va por buen camino
Bueno, he tardado unos dias en contestar porque el problema algunas veces salía y otras no. Pero quiero decir que la primera respuesta a mi consulta era la acertada. Y el hecho que en un ordenador fallara y en otro no, creo que se debía a problemas con la impresora de tickets. Por eso solo fallaba cuando se le daba a imprimir. En resumen el problema se ha resuelto.

En referencia a lo de la variable global suma, quiero aclarar que los dos procedimientos son diferentes. con un botón se ejecuta uno y con otro boton diferente se ejecuta el otro. Así que lo que pase en uno de ellos no afecta al otro. No se si me he esplicado... Que los dos a la vez no funcionan nunca.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 04:43:14.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi