Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

requete sql en VB

3 réponses
Avatar
infomaroc
salut
svp jveux faire un traitement vb quand un changement quelquonque affecte une
table! comment savoir si une table sql a changé??
merci

3 réponses

Avatar
Jean-Marc
Hello,

c'est un problème difficile, qui en plus dépend (un peu) de la base de
données.
Si c'est toi qui décide du modèle de données, donc qui peut définir la
structure
des tables de la base, une bonne solution (qui a l'avanatage d'être
générique) est
de prévoir un champ supplémentaire "sentinelle" sur toutes tes tables.
Dès q'un enregistrement est modifié ou supprimé ou créé, ce champ sentinelle
prend une certaine valeur que tu peux détecter en faisant des queries à
intervalle
régulier depuis ton application VB.

Ce n'est pas génial, je sais, mais ce n'est pas évident de faire autrement.
Une autre
solution, si ta DB le supporte, est de créer des trigger sur chaque action
(ajout,
suppression, modification), ce trigger exécutant un statement SQL pour
mettre
à jour une table spéciale de surveillance. A ton application de faire des
requêtes
à intervalle régulier sur cette table pour ensuite faire l'action adéquate.

Rien de miraculeux, je sais, mais comme ça et sans autre détails, c'est ce
qui
me vient à l'esprit.


--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;




"infomaroc" a écrit dans le message de
news:
salut
svp jveux faire un traitement vb quand un changement quelquonque affecte


une
table! comment savoir si une table sql a changé??
merci


Avatar
infomaroc
merci!
j'etais entrain de faire qq recherche et j'ai trouvé la solution des
trigger, jpense que c la bonne! mais jsais pas comment le construire! l'ideé
ke j'ai est la suivante:

creer un trigger ki verifie tt ltemps si les données de la table ont été
modifiées, et si c le cas il insere dans une table ke je vais créer, le
numero de la ligne ki a eté modifiée!
de ma part, avec Vb, je consulte tt ltemps avec un timer cette table si
jtrouve une valeur, donc jsais ke la table est modifiée et j'ai mm la ligne,
jprend la valeur ke j'ai dans cette table et jefais un update et jla met a
"0", donc si jconsulte une nouvelle fois et jtrouve un "0", ca veut dire ke
le trigger n'est pas declenché donc la table n'a pas changé, etc....
cmt vous trouvez cette solution? et si elle est bonne, vous avez une idée
sur comment créer ce trigger??? la syntaxe,etc....
merci
Avatar
Jean-Marc
Hello,

ca ne marche pas exactement comme ça. Un trigger est une
fonctionnalité offerte par cetraines DB( Oracle, DB2). Cette
fonctionalité permet de placer du code SQL qui s'exécute en
fonction de certains évènements.

Ce que tu veux faire est différent: il s'agit de créer un programme
externe dont le boulot consite à scruter à intervalle régulier une ou
des tables pour vérifier si un changement à eu lieu.

C'est une bonne solution.

Cela implique dans la ou les tables de donnée un champ de controle
avec des valeurs de controle pour savoir si un enregistrement a été
créé, modifié ou supprimé (tu noteras que ça implique que les
suppressions ne soient pas faites physiquement).

J'ai peur que le détail de cela dépasse le cadre de ce forum car
il ne s'agit plus de VB mais de designe de base de données, même
si l'implémentation finale est en VB.

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;



"infomaroc" a écrit dans le message de
news:
merci!
j'etais entrain de faire qq recherche et j'ai trouvé la solution des
trigger, jpense que c la bonne! mais jsais pas comment le construire!


l'ideé
ke j'ai est la suivante:

creer un trigger ki verifie tt ltemps si les données de la table ont été
modifiées, et si c le cas il insere dans une table ke je vais créer, le
numero de la ligne ki a eté modifiée!
de ma part, avec Vb, je consulte tt ltemps avec un timer cette table si
jtrouve une valeur, donc jsais ke la table est modifiée et j'ai mm la


ligne,
jprend la valeur ke j'ai dans cette table et jefais un update et jla met a
"0", donc si jconsulte une nouvelle fois et jtrouve un "0", ca veut dire


ke
le trigger n'est pas declenché donc la table n'a pas changé, etc....
cmt vous trouvez cette solution? et si elle est bonne, vous avez une idée
sur comment créer ce trigger??? la syntaxe,etc....
merci