Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Delphi > Bases de données
Bases de données Vos questions concernant les bases de données (BDE, Access, SqlServer...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 05/12/2012, 10h41   #1
looping
Membre actif
 
Inscription : mai 2007
Messages : 733
Détails du profil
Informations personnelles :
Âge : 48

Informations forums :
Inscription : mai 2007
Messages : 733
Points : 176
Points : 176
Par défaut conseil pour "after post"

Bonjour,

Concernant l'événement Afterpost:
Est ce qu'il est possible de différencier si il est appelé par un Edit ou un Insert ?

Dans le code qui suit, je voudrais que le code identifié "bloc" ne soit exécuté que dans le cas d'une insertion, mais pas en cas de modification.

J'ai essayé avec les événement "on before insert" ou "on new record" mais sans succes, ce qui est logique puisque il faut que l'enregistrement soit commité pour que le code du bloc fonctionne.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
procedure TForm14.IBQuery11AfterPost(DataSet: TDataSet);
begin
ibtransaction1.CommitRetaining;
 
//bloc
ibtransaction3.Active:=true;
IBSQL100.Close;
IBSQL100.SQL.Clear;
IBSQL100.SQL.Add('INSERT INTO TJ_CLIADR (TJAIDCLI, TJAIDCLIADR) VALUES (:idcli,:idadr)');
IBSQL100.ParamByName('idcli').AsInteger:=ibquery1CLIDCLI.Value;
IBSQL100.ParamByName('idadr').AsInteger:=ibquery11ADIDADRESS.Value;
IBSQL100.ExecQuery;
ibtransaction3.Commit;
//finbloc
 
end;
cordialement
looping est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2012, 10h47   #2
Rayek
Modérateur
 
Avatar de Rayek
 
Homme
Développeur informatique
Inscription : mars 2005
Messages : 5 015
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2005
Messages : 5 015
Points : 7 781
Points : 7 781
Tu peux jouer avec le BeforePost et une variable booléenne.

Code :
1
2
3
 
// dans le before
FINSERTMODE := (Dataset.State = dsInsert);
Code :
1
2
3
4
 
// Dans le after post
If FINSERTMODE Then
 // ton code
__________________
Modérateur Delphi Combattez la brute
Aucune réponse aux sollicitations techniques par MP

Le guide du bon forumeur :__________
[Projet en cours] Des unités pour faciliter l'utilisation d'indy : EasyIndy 1.3
Rayek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2012, 10h58   #3
Cl@udius
Modérateur
 
Avatar de Cl@udius
 
Homme Claude Renouleaud
Développeur informatique
Inscription : février 2006
Messages : 4 860
Détails du profil
Informations personnelles :
Nom : Homme Claude Renouleaud
Âge : 50
Localisation : France, Hautes Pyrénées (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2006
Messages : 4 860
Points : 9 946
Points : 9 946
Salut

Tu as la solution de Rayek, ou bien celle de confier cette tâche au SGDB via un trigger after insert. Ce que je privilegierais.

@+ Claudius.
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira.
Cl@udius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2012, 11h25   #4
Rayek
Modérateur
 
Avatar de Rayek
 
Homme
Développeur informatique
Inscription : mars 2005
Messages : 5 015
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2005
Messages : 5 015
Points : 7 781
Points : 7 781
Citation:
Envoyé par Cl@udius Voir le message
Salut

Tu as la solution de Rayek, ou bien celle de confier cette tâche au SGDB via un trigger after insert. Ce que je privilegierais.

@+ Claudius.
Ne connaissant pas son modèle de données et les sources de sa 2em requête venant aussi d'une autre requête (Ibquery1 et pas IbQuery11 comme celle appelant le afterpost .... au passage super les noms des composants ....) il est peut être plus difficile de mettre en place un Trigger.
__________________
Modérateur Delphi Combattez la brute
Aucune réponse aux sollicitations techniques par MP

Le guide du bon forumeur :__________
[Projet en cours] Des unités pour faciliter l'utilisation d'indy : EasyIndy 1.3
Rayek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2012, 11h44   #5
Cl@udius
Modérateur
 
Avatar de Cl@udius
 
Homme Claude Renouleaud
Développeur informatique
Inscription : février 2006
Messages : 4 860
Détails du profil
Informations personnelles :
Nom : Homme Claude Renouleaud
Âge : 50
Localisation : France, Hautes Pyrénées (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2006
Messages : 4 860
Points : 9 946
Points : 9 946
Citation:
Envoyé par Rayek Voir le message
Ibquery1 et pas IbQuery11 comme celle appelant le afterpost ....
Arrf je n'avais pas remarqué.
Citation:
Envoyé par Rayek Voir le message
au passage super les noms des composants
CQFD
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira.
Cl@udius est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 05h07.


 
 
 
 
Partenaires

Hébergement Web