Test auto de champs sur une table à l'ouverture d'un formulaire non fondé sur la table
7 réponses
gaston
bonjour
sous Access 2002 XP_PRO
ma base comporte entre autres, une table d'inventaire à 10 champs.
un formulaire d'acceuil permet le controle de la base par l'ouverture d'X
formulaires fonctionnels.
je souhaite à chaque ouverture du formulaire d'acceuil, tester dynamiquement
toute la table sur deux champs et en modifier un troisième qui est le
résultat du test(oui/non).
je galère un peu avec SQL, VBA et les requêtes pour tester cycliquement les
enregistrements d'une table.
merci de votre aide
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jessy Sempere [MVP]
Bonjour
Il va nous falloir un peu plus de précision... Quel type de test souhaite tu faire ? Histoire de savoir si une simple requête de mise à jour avec critère peut suffir ou s'il faut faire une condition en passant par VBA.
@+ Jessy Sempere - Access MVP
------------------------------------ Site @ccess : http://access.fr.free.fr/ Pour l'efficacité de tous : http://www.mpfa.info/ ------------------------------------
"gaston" a écrit dans le message de news:
bonjour
sous Access 2002 XP_PRO ma base comporte entre autres, une table d'inventaire à 10 champs.
un formulaire d'acceuil permet le controle de la base par l'ouverture d'X formulaires fonctionnels.
je souhaite à chaque ouverture du formulaire d'acceuil, tester dynamiquement toute la table sur deux champs et en modifier un troisième qui est le résultat du test(oui/non).
je galère un peu avec SQL, VBA et les requêtes pour tester cycliquement les enregistrements d'une table. merci de votre aide
Bonjour
Il va nous falloir un peu plus de précision...
Quel type de test souhaite tu faire ? Histoire de savoir si une simple
requête de mise à jour avec critère peut suffir ou s'il faut faire une
condition en passant par VBA.
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"gaston" <gaston.py@wanadoo.fr> a écrit dans le message de news:
ep2A4O8BHHA.1300@TK2MSFTNGP03.phx.gbl...
bonjour
sous Access 2002 XP_PRO
ma base comporte entre autres, une table d'inventaire à 10 champs.
un formulaire d'acceuil permet le controle de la base par l'ouverture d'X
formulaires fonctionnels.
je souhaite à chaque ouverture du formulaire d'acceuil, tester
dynamiquement
toute la table sur deux champs et en modifier un troisième qui est le
résultat du test(oui/non).
je galère un peu avec SQL, VBA et les requêtes pour tester cycliquement
les
enregistrements d'une table.
merci de votre aide
Il va nous falloir un peu plus de précision... Quel type de test souhaite tu faire ? Histoire de savoir si une simple requête de mise à jour avec critère peut suffir ou s'il faut faire une condition en passant par VBA.
@+ Jessy Sempere - Access MVP
------------------------------------ Site @ccess : http://access.fr.free.fr/ Pour l'efficacité de tous : http://www.mpfa.info/ ------------------------------------
"gaston" a écrit dans le message de news:
bonjour
sous Access 2002 XP_PRO ma base comporte entre autres, une table d'inventaire à 10 champs.
un formulaire d'acceuil permet le controle de la base par l'ouverture d'X formulaires fonctionnels.
je souhaite à chaque ouverture du formulaire d'acceuil, tester dynamiquement toute la table sur deux champs et en modifier un troisième qui est le résultat du test(oui/non).
je galère un peu avec SQL, VBA et les requêtes pour tester cycliquement les enregistrements d'une table. merci de votre aide
gaston
re bonjour explications le premier champ est un nombre représentant l'année d'achat d'un matos le deuxième est un nombre qui représente une durée de vie du matos le troisième champ vrai/faux est le résultat d'un calcul:
il faut comparer pour chaque enregistrement de la table qui a une donnée durée de vie du matos actuellement cochée vrai, comparer l'annéee courante avec (l'année d'achat+durée de vie) et modifier en conséquence l'enregistrement de la table(vrai/faux) - si plus petit matos périmé = faux - si plus grand matos ops = vrai
Plus généralement pour info: comment se balader dans une table depuis un formulaire sans se placer depuis le formulaire sur cet enregistrement, passer d'un champ à un autre et chercher une valeur, la modifier, la supprimer.
merci d'avance.
re bonjour
explications
le premier champ est un nombre représentant l'année d'achat d'un matos
le deuxième est un nombre qui représente une durée de vie du matos
le troisième champ vrai/faux est le résultat d'un calcul:
il faut comparer pour chaque enregistrement de la table qui a une donnée
durée de vie du matos actuellement cochée vrai, comparer l'annéee courante
avec (l'année d'achat+durée de vie) et modifier en conséquence
l'enregistrement de la table(vrai/faux)
- si plus petit matos périmé = faux
- si plus grand matos ops = vrai
Plus généralement pour info: comment se balader dans une table depuis un
formulaire sans se placer depuis le formulaire sur cet enregistrement,
passer d'un champ à un autre et chercher une valeur, la modifier, la
supprimer.
re bonjour explications le premier champ est un nombre représentant l'année d'achat d'un matos le deuxième est un nombre qui représente une durée de vie du matos le troisième champ vrai/faux est le résultat d'un calcul:
il faut comparer pour chaque enregistrement de la table qui a une donnée durée de vie du matos actuellement cochée vrai, comparer l'annéee courante avec (l'année d'achat+durée de vie) et modifier en conséquence l'enregistrement de la table(vrai/faux) - si plus petit matos périmé = faux - si plus grand matos ops = vrai
Plus généralement pour info: comment se balader dans une table depuis un formulaire sans se placer depuis le formulaire sur cet enregistrement, passer d'un champ à un autre et chercher une valeur, la modifier, la supprimer.
merci d'avance.
ze Titi
Bonjour gaston
Je ne sais pas si ça pourrait répondre à ta demande mais d'après ce que j'ai compris, le lancement d'une requête Mise à jour pourrait faire le travail... Le code SQL de cette requête devrait ressembler à ça:
UPDATE taTable SET le3emeChampúlse WHERE Year(DateAdd("yyyy",ton2emeChamp,ton1erChamp))<Year(Date())
re bonjour explications le premier champ est un nombre représentant l'année d'achat d'un matos le deuxième est un nombre qui représente une durée de vie du matos le troisième champ vrai/faux est le résultat d'un calcul:
il faut comparer pour chaque enregistrement de la table qui a une donnée durée de vie du matos actuellement cochée vrai, comparer l'annéee courante avec (l'année d'achat+durée de vie) et modifier en conséquence l'enregistrement de la table(vrai/faux) - si plus petit matos périmé = faux - si plus grand matos ops = vrai
Plus généralement pour info: comment se balader dans une table depuis un formulaire sans se placer depuis le formulaire sur cet enregistrement, passer d'un champ à un autre et chercher une valeur, la modifier, la supprimer.
merci d'avance.
-- Voilou ! Bon code Cordialement,
Ze Titi
Bonjour gaston
Je ne sais pas si ça pourrait répondre à ta demande mais d'après ce que
j'ai compris, le lancement d'une requête Mise à jour pourrait faire le
travail... Le code SQL de cette requête devrait ressembler à ça:
UPDATE taTable SET le3emeChampúlse WHERE
Year(DateAdd("yyyy",ton2emeChamp,ton1erChamp))<Year(Date())
re bonjour
explications
le premier champ est un nombre représentant l'année d'achat d'un matos
le deuxième est un nombre qui représente une durée de vie du matos
le troisième champ vrai/faux est le résultat d'un calcul:
il faut comparer pour chaque enregistrement de la table qui a une donnée
durée de vie du matos actuellement cochée vrai, comparer l'annéee courante
avec (l'année d'achat+durée de vie) et modifier en conséquence
l'enregistrement de la table(vrai/faux)
- si plus petit matos périmé = faux
- si plus grand matos ops = vrai
Plus généralement pour info: comment se balader dans une table depuis un
formulaire sans se placer depuis le formulaire sur cet enregistrement,
passer d'un champ à un autre et chercher une valeur, la modifier, la
supprimer.
Je ne sais pas si ça pourrait répondre à ta demande mais d'après ce que j'ai compris, le lancement d'une requête Mise à jour pourrait faire le travail... Le code SQL de cette requête devrait ressembler à ça:
UPDATE taTable SET le3emeChampúlse WHERE Year(DateAdd("yyyy",ton2emeChamp,ton1erChamp))<Year(Date())
re bonjour explications le premier champ est un nombre représentant l'année d'achat d'un matos le deuxième est un nombre qui représente une durée de vie du matos le troisième champ vrai/faux est le résultat d'un calcul:
il faut comparer pour chaque enregistrement de la table qui a une donnée durée de vie du matos actuellement cochée vrai, comparer l'annéee courante avec (l'année d'achat+durée de vie) et modifier en conséquence l'enregistrement de la table(vrai/faux) - si plus petit matos périmé = faux - si plus grand matos ops = vrai
Plus généralement pour info: comment se balader dans une table depuis un formulaire sans se placer depuis le formulaire sur cet enregistrement, passer d'un champ à un autre et chercher une valeur, la modifier, la supprimer.
merci d'avance.
-- Voilou ! Bon code Cordialement,
Ze Titi
Jessy Sempere [MVP]
Bonjour
En supposant que la durée de vie soit exprimée en Année, il te suffit de lancer une requête de mise à jour sur ouverture du formulaire du genre :
UPDATE taTable SET ChampPerime = IIf(Year(Date())<([AnneeAchat]+[DureeVie],False,True);
@+ Jessy Sempere - Access MVP
------------------------------------ Site @ccess : http://access.fr.free.fr/ Pour l'efficacité de tous : http://www.mpfa.info/ ------------------------------------
"gaston" a écrit dans le message de news:
re bonjour explications le premier champ est un nombre représentant l'année d'achat d'un matos le deuxième est un nombre qui représente une durée de vie du matos le troisième champ vrai/faux est le résultat d'un calcul:
il faut comparer pour chaque enregistrement de la table qui a une donnée durée de vie du matos actuellement cochée vrai, comparer l'annéee courante avec (l'année d'achat+durée de vie) et modifier en conséquence l'enregistrement de la table(vrai/faux) - si plus petit matos périmé = faux - si plus grand matos ops = vrai
Plus généralement pour info: comment se balader dans une table depuis un formulaire sans se placer depuis le formulaire sur cet enregistrement, passer d'un champ à un autre et chercher une valeur, la modifier, la supprimer.
merci d'avance.
Bonjour
En supposant que la durée de vie soit exprimée en Année, il te suffit de
lancer une requête de mise à jour sur ouverture du formulaire du genre :
UPDATE taTable
SET ChampPerime = IIf(Year(Date())<([AnneeAchat]+[DureeVie],False,True);
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"gaston" <gaston.py@wanadoo.fr> a écrit dans le message de news:
ehsZ0O9BHHA.3476@TK2MSFTNGP04.phx.gbl...
re bonjour
explications
le premier champ est un nombre représentant l'année d'achat d'un matos
le deuxième est un nombre qui représente une durée de vie du matos
le troisième champ vrai/faux est le résultat d'un calcul:
il faut comparer pour chaque enregistrement de la table qui a une donnée
durée de vie du matos actuellement cochée vrai, comparer l'annéee
courante
avec (l'année d'achat+durée de vie) et modifier en conséquence
l'enregistrement de la table(vrai/faux)
- si plus petit matos périmé = faux
- si plus grand matos ops = vrai
Plus généralement pour info: comment se balader dans une table depuis un
formulaire sans se placer depuis le formulaire sur cet enregistrement,
passer d'un champ à un autre et chercher une valeur, la modifier, la
supprimer.
En supposant que la durée de vie soit exprimée en Année, il te suffit de lancer une requête de mise à jour sur ouverture du formulaire du genre :
UPDATE taTable SET ChampPerime = IIf(Year(Date())<([AnneeAchat]+[DureeVie],False,True);
@+ Jessy Sempere - Access MVP
------------------------------------ Site @ccess : http://access.fr.free.fr/ Pour l'efficacité de tous : http://www.mpfa.info/ ------------------------------------
"gaston" a écrit dans le message de news:
re bonjour explications le premier champ est un nombre représentant l'année d'achat d'un matos le deuxième est un nombre qui représente une durée de vie du matos le troisième champ vrai/faux est le résultat d'un calcul:
il faut comparer pour chaque enregistrement de la table qui a une donnée durée de vie du matos actuellement cochée vrai, comparer l'annéee courante avec (l'année d'achat+durée de vie) et modifier en conséquence l'enregistrement de la table(vrai/faux) - si plus petit matos périmé = faux - si plus grand matos ops = vrai
Plus généralement pour info: comment se balader dans une table depuis un formulaire sans se placer depuis le formulaire sur cet enregistrement, passer d'un champ à un autre et chercher une valeur, la modifier, la supprimer.
merci d'avance.
gaston
re re bonjour
merci de vos réponses:
j'ai écris vos codes------>mais rien n'est mis à jour.
j'ai fais une déclaration rsSQL="UPDATE NomTable SET ChampNaze=........" docmd.runSQL rsSQL le system semble comprendre le code mais aucun résultat. Faut-il faire une boucle DO WHILE sur tout les enregistrements de la table jusqu'à EOF? Comment se positionner sur le premier enregistrement et lancer la boucle contenant le test SQL? Faut-il faire une déclaration Dim rs as RecordSet???
Merci, je nage en fait car je n'ai pas travaillé avec Access depuis longtemps au profit d'Excel gaston
re re bonjour
merci de vos réponses:
j'ai écris vos codes------>mais rien n'est mis à jour.
j'ai fais une déclaration rsSQL="UPDATE NomTable SET ChampNaze=........"
docmd.runSQL rsSQL
le system semble comprendre le code mais aucun résultat.
Faut-il faire une boucle DO WHILE sur tout les enregistrements de la table
jusqu'à EOF?
Comment se positionner sur le premier enregistrement et lancer la boucle
contenant le test SQL?
Faut-il faire une déclaration Dim rs as RecordSet???
Merci, je nage en fait car je n'ai pas travaillé avec Access depuis
longtemps au profit d'Excel
gaston
j'ai écris vos codes------>mais rien n'est mis à jour.
j'ai fais une déclaration rsSQL="UPDATE NomTable SET ChampNaze=........" docmd.runSQL rsSQL le system semble comprendre le code mais aucun résultat. Faut-il faire une boucle DO WHILE sur tout les enregistrements de la table jusqu'à EOF? Comment se positionner sur le premier enregistrement et lancer la boucle contenant le test SQL? Faut-il faire une déclaration Dim rs as RecordSet???
Merci, je nage en fait car je n'ai pas travaillé avec Access depuis longtemps au profit d'Excel gaston
ze Titi
Bonjour gaston
Une requête parcourt tous les enregistrements d'une table, pas besoin d'un recordset. Tu devrais nous donner les types des champs de ta table, ça nous aiderait sûrement.
Par ailleurs, tu n'avais pas besoin de passer par du VBA pour tester cette requête. En créant une requête et en sélectionnant le mode SQL, tu peux écrire du SQL directement. En plus, ça te permet de savoir si la requête que tu as écrite effectue des opérations (boîte d'avertissement lors de l'exécution).
re re bonjour
merci de vos réponses:
j'ai écris vos codes------>mais rien n'est mis à jour.
j'ai fais une déclaration rsSQL="UPDATE NomTable SET ChampNaze=........" docmd.runSQL rsSQL le system semble comprendre le code mais aucun résultat. Faut-il faire une boucle DO WHILE sur tout les enregistrements de la table jusqu'à EOF? Comment se positionner sur le premier enregistrement et lancer la boucle contenant le test SQL? Faut-il faire une déclaration Dim rs as RecordSet???
Merci, je nage en fait car je n'ai pas travaillé avec Access depuis longtemps au profit d'Excel gaston
-- Voilou ! Bon code Cordialement,
Ze Titi
Bonjour gaston
Une requête parcourt tous les enregistrements d'une table, pas besoin
d'un recordset.
Tu devrais nous donner les types des champs de ta table, ça nous
aiderait sûrement.
Par ailleurs, tu n'avais pas besoin de passer par du VBA pour tester
cette requête. En créant une requête et en sélectionnant le mode SQL,
tu peux écrire du SQL directement. En plus, ça te permet de savoir si
la requête que tu as écrite effectue des opérations (boîte
d'avertissement lors de l'exécution).
re re bonjour
merci de vos réponses:
j'ai écris vos codes------>mais rien n'est mis à jour.
j'ai fais une déclaration rsSQL="UPDATE NomTable SET ChampNaze=........"
docmd.runSQL rsSQL
le system semble comprendre le code mais aucun résultat.
Faut-il faire une boucle DO WHILE sur tout les enregistrements de la table
jusqu'à EOF?
Comment se positionner sur le premier enregistrement et lancer la boucle
contenant le test SQL?
Faut-il faire une déclaration Dim rs as RecordSet???
Merci, je nage en fait car je n'ai pas travaillé avec Access depuis
longtemps au profit d'Excel
gaston
Une requête parcourt tous les enregistrements d'une table, pas besoin d'un recordset. Tu devrais nous donner les types des champs de ta table, ça nous aiderait sûrement.
Par ailleurs, tu n'avais pas besoin de passer par du VBA pour tester cette requête. En créant une requête et en sélectionnant le mode SQL, tu peux écrire du SQL directement. En plus, ça te permet de savoir si la requête que tu as écrite effectue des opérations (boîte d'avertissement lors de l'exécution).
re re bonjour
merci de vos réponses:
j'ai écris vos codes------>mais rien n'est mis à jour.
j'ai fais une déclaration rsSQL="UPDATE NomTable SET ChampNaze=........" docmd.runSQL rsSQL le system semble comprendre le code mais aucun résultat. Faut-il faire une boucle DO WHILE sur tout les enregistrements de la table jusqu'à EOF? Comment se positionner sur le premier enregistrement et lancer la boucle contenant le test SQL? Faut-il faire une déclaration Dim rs as RecordSet???
Merci, je nage en fait car je n'ai pas travaillé avec Access depuis longtemps au profit d'Excel gaston
-- Voilou ! Bon code Cordialement,
Ze Titi
gaston
re re re
merci à jessy et titi
en fait vous avez raison!!!
le code de jessy fonctionne tel que décrit sans pb!
il faut que je me recycle ou vole des neurones (car personne ne sait s'il lui en reste assez pour s'en séparer de qq uns). a plus gaston
re re re
merci à jessy et titi
en fait vous avez raison!!!
le code de jessy fonctionne tel que décrit sans pb!
il faut que je me recycle ou vole des neurones (car personne ne sait s'il
lui en reste assez pour s'en séparer de qq uns).
a plus
gaston