Précédent   Forum des professionnels en informatique > Bases de données > Firebird > Débuter
Débuter Forum d'entraide pour débuter avec Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/06/2004, 14h42   #1
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
Par défaut problème d'insertion de données


bonjour à tous
j'ai un problème qui me pourri le vie depuis plusieurs
jours. en effet c'est un pb que j'ai exposé au forum
delphi et les bases de données sur conseil de barbibulle
mais je n'ai obtenu de reponse.
j'ai mon application que j'ai écrite sous delphi 6.
en utilisant les ibx je me connect à ma base de données
sous interbase 6 ver open source.
dans mon application voici les particularités:
j'ai un IBDatabase que je connect à ma base données
un IBTransaction
un IBquery
un IBUpdateSQL
un datasource
et à partir d'un DBgrid et DBnavigator
je visualise,inserre, modifie, valide
les données.
pour me rendre compte que les données inserreés sont
vraiment inscrite dans la base.
je lance IBexpert et la à ma grande surprise rein!
je fais une insertion à parir de IBexpert et la
aprés rafraichissement au niveau de ma base je vois
la donnée inserrée a partir de IBexpert.

En fait je sais plus s'il me faut écrire un code spécifique
pour commiter les insertions ou autres MAJ je suis debousoler
je vous demande de m'aider
merci à tous
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2004, 15h18   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Sur l'évènement OnAfterPost du IBQuery faites
Code :
IBQuery.Transaction.CommitRetaining;
ou si vous voulez fermer la transaction.
Code :
IBQuery.Transaction.Commit;
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2004, 17h10   #3
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
j'essai et je vous fait signe
merci
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2004, 13h27   #4
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
bonjour Barbibulle
j'ai essaiyer ça marcher juste pour une insertion et après plus rien, le meme pb survient.
en faite j'ai oublier de la dire dans ma table l'Id de ma table (clé primaire) est autoincrémenté. c'est peut etre a cause de cela.
bon pour ma part je continu de creuser
merci
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2004, 13h50   #5
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Il y a un message d'erreur ?
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2004, 14h07   #6
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
non il n'ya pas de message d'erreurs et c'est bien ce qui me géne.

lorsque je fais une insertion au niveau de mon application pas de pb.
mais il suffit que je quitte mon aplli et lorsque je la relance elle n'arrive meme pas avoir le dernière valeur entrée.

alors que du coté de IBexpert ca marche sans pb.

j'ai comme l'impression que IBexpert a une certaine exclusivité sur la table. car mon apllication ce met a jour à partir des données entrées du coté de IB expert.
en faite c'est juste une table de 3 colones IDnuméro, nom , prénom
merci.
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2004, 14h18   #7
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Je ne comprend pas bien votre probleme. A mon a vous oubliez de faire quelque chose comme un commit par exemple.

Dites comment vous avez configuré votre transaction dans votre application ? (Read commited ?)

Et décrivez pas à pas ce que vous faites dans IBExpert et dans votre application, jusqu'à l'apparition de ce que vous pensez être un problème...
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2004, 14h34   #8
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
dans mon application les IBX ont été configurés en read commited.

pour la description pas à pas voila ce que je fais:
dans IBexpert j'ouvre ma table en mode insertion
- j'inserre une ligne: 20 dino1 devalender
je valide et je committe.

je rabat la fenetre de IBexpert et j'agrandit celle de mon application là
- j'inserre une autre ligne: 20 dino devalender je valide. a ma grande surprise il n'ya pas de message d'érreur(hors numéro est PK). ce qui veut dire que la donnée n'a pas atteint la donnée!

je quitte mon apllication et je relance, apres un refresh dans la barre du DBnavigator j'apercois dans ma table

-20 dino devalender
donc la donnée venant de IBexpert !
je ne comprend plus rien
merci
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2004, 15h04   #9
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
en attendant d'y voir plus claire et si vous n'avez pas de solution je vais essaiyer de tout reprendre
merci
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2004, 15h32   #10
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
C'est pas très clair vos explications....

Structure de la table :
Code :
1
2
3
4
5
6
CREATE TABLE MATABLE (
    ID     INTEGER NOT NULL,
    NOM  VARCHAR(20) NOT NULL,
    PRENOM    VARCHAR(25));
 
ALTER TABLE MATABLE ADD PRIMARY KEY (ID);
Dans IBExpert :

Insertion d'une nouvelle donnée :

Code :
1  Barbibulle  Barbouille
Validation et COMMIT

j'iconise IBExpert

je lance mon application, je visualise bien la ligne insérée. J'iconise mon application (je ne la ferme pas)

je réouvre IBExpert j'insère une autre ligne
Code :
2  Devalender  Jevaisyarriver
je valide et COMMIT
j'iconise IBExpert
je réouvre mon application je ne vois pas la ligne 2, mais c'est normale car je n'ai pas redemandé la lecture de la table. Je fais donc un IBDataSet.Close; (remplissage éventuel des paramètres... puis ) suivit de IBDataSet.Open;
Cette fois je vois bien les deux lignes.

J'insère une nouvelle ligne dans mon application :
je la valide (IBDataSet.Post;) message d'erreur PK primary key...
je modifie le 2 en 3, je valide (IBDataSet.Post;) cette fois il n'y a pas d'erreur.
J'iconise.
J'ouvre IBExpert, je valide la transaction (pour rafraichir les données) je ne vois que les deux lignes (c'est normal j'ai pas commité dans l'application...)

Je reviens dans l'application, je commit (IBDataSet.transaction.Commit;)
J'iconise,je reviens dans IBExpert, je valide la transaction pour rafraichir et cette fois je vois bien les 3 lignes...

Voilà une description pas à pas avec les infos importantes (Insert, post, commit)
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2004, 16h05   #11
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
bonjour
apparament c'est bien expliqué, mais ce que comprend pas ou ce que je ne vois (ne sais pas faire), c'est l'endroit exacte ou il faut aposer les differents codes dont tu fait allusion dans ton explication:

exemple:
pour le IBDataSet.Close; (remplissage éventuel des paramètres... puis ) suivit de IBDataSet.Open;
en effet c'est bien le pb que j'avais
merci
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2004, 16h45   #12
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
merci beaucoup barbibulle ça marche
merci encore
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h20.


 
 
 
 
Partenaires

Hébergement Web