Probléme table Paradox et BDE

jcbais Messages postés 11 Date d'inscription jeudi 28 avril 2005 Statut Membre Dernière intervention 18 décembre 2007 - 26 sept. 2005 à 17:56
jcbais Messages postés 11 Date d'inscription jeudi 28 avril 2005 Statut Membre Dernière intervention 18 décembre 2007 - 28 sept. 2005 à 11:21
Bonjour,





voilà j'ai fait une appli avec des tables paradox que j ouvre avec BDE,
le principe est que pour chaque client appellé, je crée une étiquette
avec des données que j'incrémente dans une table ou je fait bien un post a chaque fois.


Mon probléme est que si le PC plante pour x raison et que l'appli est mal quitter, je perd plein de données.

ex : j'ai créé 150 étiquettes si je quitte proprement mon appli je
l'ai retrouve bien dans ma table sinon j'en retrouve seulement 50
!!!!!!!





comme çi une partie des données restaient dans un cache.





si quelqu'un a une idée.





Merci d'avance.

7 réponses

jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
27 sept. 2005 à 11:29
Hello,



Pourrais tu nous donner le morceau de code avec lequel tu inseres tes données dans la table.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
0
vincentstryckmans Messages postés 228 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 25 octobre 2006
27 sept. 2005 à 11:55
Bonjour,



1ère piste : as-tu 'poster' les insertions que tu as faites ? Si non
utilises la méthode Post du TDataset qui lie ton appli à la table
paradox.



2ème piste : le BDE n'est pas 100% stable (sorry monsieur Borland). va
voir sur www.tory.net et tu trouveras, je pense, des composants d'accès
à des bases de données sans passer par le BDE.

Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans.
0
jcbais Messages postés 11 Date d'inscription jeudi 28 avril 2005 Statut Membre Dernière intervention 18 décembre 2007
27 sept. 2005 à 14:14
ci-joint mon code ,



data1.COLIS.Append;

if data1.COLIS.State = DsInsert then

begin


Data1.COLIS.FieldByName('NFACT').AsString :=
Data1.CLIENT.fieldByName('NFACT').AsString;

Data1.COLIS.FieldByName('DATEEXP').AsString := Datexp;

Data1.COLIS.FieldByName('NCOLIS').AsString := Ncolis;

Data1.COLIS.FieldByName('CAB').AsString := CABR;

if StrToFloat(Epoids.Text) = 0

then Data1.COLIS.FieldByName('POID').AsFloat := StrToFloat('0.35')

else Data1.COLIS.FieldByName('POID').AsFloat := StrToFloat(EPoids.Text);

if Data1.param.FindKey(['VL'+Midstr(ComboBox1.Text,1,1)])

then
Data1.COLIS.FieldByName('VOLUME').AsInteger :=
StrToInt(Data1.PARAM.fieldByName('TYPE').asstring)

else Data1.COLIS.FieldByName('VOLUME').AsInteger := 0;

if CheckB2.Checked = True

then Data1.COLIS.FieldByName('HORSG').AsString := 'O'

else Data1.COLIS.FieldByName('HORSG').AsString := 'N';

Data1.COLIS.FieldByName('RGTRANS').AsString := RTPT;

Data1.COLIS.FieldByName('CTVA').AsString := CTVA;

Data1.COLIS.FieldByName('MDPORT').AsString := MPRT;

if CheckB3.Checked = True

then Data1.COLIS.FieldByName('LIVSR').AsString := 'O'

else Data1.COLIS.FieldByName('LIVSR').AsString := 'N';

if CheckB4.Checked = True

then Data1.COLIS.FieldByName('LIVDU').AsString := 'O'

else Data1.COLIS.FieldByName('LIVDU').AsString := 'N';

if CheckB5.Checked = True

then Data1.COLIS.FieldByName('ALTPH').AsString := 'O'

else Data1.COLIS.FieldByName('ALTPH').AsString := 'N';

if (CheckB4.Checked True) And (CheckB5.Checked True)

then Data1.COLIS.FieldByName('IDTRAIT').AsString := '4'

else if (CheckB4.Checked True) And (CheckB5.Checked False)

then Data1.COLIS.FieldByName('IDTRAIT').AsString := '5'

else Data1.COLIS.FieldByName('IDTRAIT').AsString := '0';

if CheckB1.Checked = True

then Data1.COLIS.FieldByName('LVSAM').AsString := 'O'

else Data1.COLIS.FieldByName('LVSAM').AsString := 'N';

Data1.COLIS.FieldByName('DVCR').AsString := DVCR;

Data1.COLIS.FieldByName('DVAS').AsString := DVAS;

Data1.COLIS.FieldByName('CPAY').AsString := CPAY;

Data1.COLIS.FieldByName('DELA').AsString := DELA;

Data1.COLIS.FieldByName('NBCOLIS').AsInteger := 1;

Data1.COLIS.FieldByName('EXP').AsString := 'N';


Data1.COLIS.FieldByName('CROUT').AsString :=
midstr(CROUT,1,2)+MidStr(CROUT,4,2);

Data1.COLIS.FieldByName('CDEP').AsString := CDEP;

Data1.COLIS.Post;

end;



Merci d'avance
0
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
27 sept. 2005 à 14:22
Re,



Pourrais tu me decrire les composants que tu utilises pour te connecter a une table :

TDataBase

-TDataSource

-TTable



Qui est Data1 dans le morceau de code que tu nous as donné ci dessus ?


Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jcbais Messages postés 11 Date d'inscription jeudi 28 avril 2005 Statut Membre Dernière intervention 18 décembre 2007
27 sept. 2005 à 14:35
Oui pardon, alors



Data1 est mon unité ou sont toutes mes tables ensuite j'ai un TDataBase pour ma BDE et des TTable pour les tables paradox.

toutes mes bases et tables sont ouvertes au démarrage de l'appli, pour
la table COLIS qui me pose probléme, elle est ouverte en exclusif.



merci
0
vincentstryckmans Messages postés 228 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 25 octobre 2006
27 sept. 2005 à 17:53
Re-bonjour,



J'ai du développer une appli delphi - paradox, il y a quelques années
et je me souviens avoir utiliser les Tsession pour solutionner des
problèmes d'écriture dans les tables qui peuvent être similaire aux
tiens.

Si j'ai bonne mémoire, j'avais une session par table et j'ouvrais et
fermais la session avant d'insérer ou éditer un record dans la table.
Normalement le BDE va créer une session par déafut pour toi, mais
j'avais constaté qu'il était préférable de créer mes propres sessions.

De même, j'avais configurer toutes les TDatabase dans le code, sans
faire appel un alais du BDE, cela me causait moi de problèmes.

Voici ce que cela pourrait donner avec les sessions :



try

session.open;

with table do

begin

open;

if state = dsbrowse then

begin

append;

if state = dsinsert then

begin

fieldbyname('field1').as... := ...;

...

post;

end;

end;

close;

end;

session.close;

except

on exception do ...

end;


En espérant que cela puisse t'aider.
Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans.
0
jcbais Messages postés 11 Date d'inscription jeudi 28 avril 2005 Statut Membre Dernière intervention 18 décembre 2007
28 sept. 2005 à 11:21
désolé pour cette reponse tardive, merci à tous pour votre aide.



j'ai opté pour la solution suivante :



Dans le AfterPost

tu met :

DbiSaveChanges(Table1.HANDLE);

mais tu n'oublis pas dans la clause uses : dbiProcs



et aprés test, ça marche super bien.





encore MERCI

jc
0
Rejoignez-nous