Précédent   Forum des professionnels en informatique > Bases de données > Firebird > Connexion aux bases de données
Connexion aux bases de données Forum d'entraide sur la connectivité Firebird: composants, drivers, transactions, etc.
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 28/01/2008, 15h07   #1
Membre du Club
 
Inscription : octobre 2005
Messages : 285
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 285
Points : 41
Points : 41
Par défaut Problème de refresh avec clé auto

Bonjour, j'espère être sur le bon forum....

J'ai un soucis:

Je suis en train de développer une appli sous Delphi et BDD Firebird.

Pour faire simple, j'ai une form qui affiche dans un DBgrid la liste des clients avec un bouton ajout.
Une autre form qui affiche les données du client. Classique....

J'avais créé mes tables avec des index VARCHAR et créer les relations. Sur la form fiche client, sur l'évènement Activate, j'ai mis le code:

pour être certain d'afficher les dernières mises à jour.

J'ai testé, celà fonctionnait bien sur le réseau.

L'idée m'est venue (mauvaise idée sans doute) de changer mes clés par des champ AUTO et de refaire les mêmes relations.

Le problème est que maintenant lorsque j'appelle cette fiche en mode ajout:

Code :
1
2
3
 
DM.ibdClients.Append;
fmClients.ShowModal;
Il n'q a pas d'ajout d'enregistrement, c'est systématiquement le dernier qui s'affiche. En cherchant( en tatonnant dirais-je!!) j'ai enlevé le code
Code :
1
2
 
DM.ibdClients.Refresh;
de l'évènement Activate et celà fonctionne!!! Mais sur les postes clients je n'affiche plus les dernières mises à jour!!

J'avoue que je ne comprends pas pourquoi!

J'ai mis des clé AUTO car je n'arrive pas à générer une clè alphanumérique à partir du nom par exemple, mais c'est un autre sujet.

Voilà si quelqu'un à une idée ou une soultion je suis preneur.

D'avance merci

Cordialement
codial est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2008, 15h39   #2
Nouveau Membre du Club
 
Inscription : décembre 2007
Messages : 47
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 47
Points : 26
Points : 26
tu ne dois pas faire de commit au bon moment. Lis le thread sur les commit et commitretaining
jose.ignacio.agata est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2008, 16h05   #3
Membre du Club
 
Inscription : octobre 2005
Messages : 285
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 285
Points : 41
Points : 41
J'ai vérifié ils sont bien fait au bon endroit, me semble t il!!!!

Mais par ailleurs pourquoi ça marche avec une clé primaire Alphanumerique et pas avec une clé auto?

Mystère!

Cordialement
codial est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2008, 17h36   #4
Nouveau Membre du Club
 
Inscription : décembre 2007
Messages : 47
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 47
Points : 26
Points : 26
as tu un trigger sur ton insert ?

du genre :
Code :
1
2
3
4
5
6
7
 
SET TERM ^ ;
CREATE TRIGGER AI_CLIENT_REF FOR CLIENT ACTIVE
BEFORE INSERT POSITION 0
AS BEGIN   IF (NEW.REF IS NULL) THEN NEW.REF = GEN_ID(CLIENT_GEN, 1);
END^
SET TERM ; ^
jose.ignacio.agata est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2008, 08h19   #5
Membre du Club
 
Inscription : octobre 2005
Messages : 285
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 285
Points : 41
Points : 41
Bonjour,

oua le trigger est#bien créé sous IBEasy et à priori le numéro auto se met bien à jour:
Code :
1
2
3
4
5
6
7
8
9
10
11
 
Type
BEFORE INSERT 
 
AS
 begin 
   IF (new."CLICOD"  IS NULL) THEN 
   begin
        new."CLICOD"=  GEN_ID("G$_CLICOD, 1);
   end
end
il y a quelque chose qui m'échappe, mais je vois pas quoi
Grrrrrr!!!!
Cordialement
codial est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h45.


 
 
 
 
Partenaires

Hébergement Web