Exuter une requête dans un formulaire access

Fermé
superbatto - 13 mars 2008 à 14:18
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 - 28 mars 2008 à 16:37
Bonjour à tous !

J'aurais besoin d'un petit coup de main, je suis sur un projet Access nécéssitant la création d'un formulaire. Je débute un peu et me trouve déjà confronté à un problème:

Je dispose d'une table contenant en colonne : type de produit, année de souscription, année de résiliation, nombre de contrats.
Chaque ligne contient donc le nombre de contrats selon les 3 autres caractéristiques.

Le but est de pouvoir gérer la base de données par formulaire, et donc de la mettre à jour lors de l'ajout de nouveaux contrats.

Le problème étant, pour ajouter un contrat, il faut vérifier si la ligne existe déjà ou pas ( si oui, augmenter le nombre de contrats, sinon non, créer la ligne correspondante).

J'ai une requête mise à jour et une requête ajout pour chacun des cas, ainsi qu'une requête affichage qui m'affiche la ligne existante si elle existe, et qui affiche une table vide sinon.

J'aimerais, lorsque je clique sur le bouton du formulaire, qu'Access lance la requête affichage (facile), puis qu'il vérifie si le tableau affiché est vide ou non (si oui, lancer la requête ajout de ligne, si non, augmenter le nombre de contrats de la ligne existante).

Bêtement, j'écris:

Dim requeteaffichage As String
requeteaffichage = "AfficheLigneSiElleExisteDeja"
Dim requeteajout As String
requeteajout = "ajoutligne"
Dim MAJ As String
MAJ = "requeteMAJ"

If requeteaffichage.dtt.Rows.Count > 0 Then DoCmd.OpenQuery MAJ, acNormal, acEdit
else DoCmd.OpenQuery requeteajout, acNormal, acEdit

Mais.. comme vous vous en doutez, ça ne marche pas..

Si vous pouvez m'aider, je vous serais bien reconnaissant !

Cordialement,

Yves

28 réponses

Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 425
13 mars 2008 à 18:59
Bonsoir,
Pouvez-vous mettre une copie de votre base sur https://www.cjoint.com/ se sera plus simple !
1
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 425
13 mars 2008 à 16:30
Bonjour,
C'est pas simple.... je résume se que je comprend:
Un table avec champs : type de produit, année de souscription, année de résiliation, nombre de contrats !

Qestion: pourquoi nombre de contrats ? ......

Si vous ajoutez un nouveau contrat qu'elles sont les champs qui doivent être différents ??

Par principe on va ouvrir le formulaire pour ajouter un contrat et à se niveau on contrôle si oui ou non ?
0
Bonjour,

Merci de votre attention.

C'est plutôt simple:
imaginons qu'il y ait 2 types de produits, le produit A et le produit B.
Si j'ai 3 contrats de type A (dans mon portefeuille ie dans ma table) qui ont été souscrits en 2002 et résiliés en 2005, j'aurai 3 dans la case "nombre de contrats" de la ligne correspondante. C'est pour éviter d'avoir une ligne par contrat (et donc d'avoir des tonnes de lignes !)

Mettons que je veuille ajouter un contrat qui répond à ces même caractéristiques, je vais alors simplement passer le nombre de contrat à 4. Si par contre je veux ajouter un contrat A souscrit égalemment en 2002, mais résilié en 2006, et que mon portefeuille n'en contient aucun pour le moment , alors il n'y a aucune ligne dans ma table qui réponde à ces caractéristiques, et il faudra l'ajouter.

Alors effectivement on pourrait à chaque ajout de contrat vérifier si la ligne existe déjà, mais j'aimerais justement qu'on n'ait pas besoin de le faire :-)
0
fmvgld Messages postés 117 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 30 décembre 2015 9
13 mars 2008 à 18:40
salut
quel version d'access
sur la 2000 tu peut ecrire ceci
If requeteaffichage.recordcount> 0 Then DoCmd.OpenQuery MAJ, acNormal, acEdit
else DoCmd.OpenQuery requeteajout, acNormal, acEdit

le test requeteaffichage.recordcount va teconter le nombre d'enregistrement présent dans tas requete
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 425
13 mars 2008 à 18:30
Bonsoir,
Si je vous comprends bien le contrôle se fait sur le type date souscription et date résiliation.
Je pense qu'il est mieux pour vous de réaliser cela avec le tableur Excel, on dirait que c'est de la statistique ou je me trompe.
Dans le cas ou vous désirez absolument passer par Access il faut créer un formulaire indépendant de la table ou vous entrez les valeurs pour les 3 champs : type de produit, année de souscription, année de résiliation et créer un code qui va prendre ces 3 valeurs et les comparer à votre table. le résultat de la comparaison vous donneras soit vers nouvel enregistrment soit augmentation du nombre de contrats.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Exactement ce que je veux faire (et je suis obligé d'utiliser Access ) !

C'est dans le code que j'ai des soucis justement, je n'arrive pas à mettre une condition sur l'exécution d'une requete ou d'une autre lors du clic sur le bouton du formulaire.

J'ai déjà une requête pour tester si la ligne existe ou s'il faut l'ajouter, mais je n'arriver pas à coder tout ca.. (cf mon premier message où j'ai détaillé :-) )

Merci !
0
Ma base de données dépasse 500 ko je ne peux pas la mettre sur cjoint.. :(

Alors que pour l'instant elle ne contient pas grand chose !

Le formulaire est quasi vide, il ne s'agit que d'une maquette.

J'ai cependant un autre problème (si vous les jugez débile, ce qui est probable vu mon niveau en access / vba, n'hésitez pas à me dire de trouver tout seul !)

J'ai une table Choix qui contiendra les données remplies dans le formulaire, et je n'arrive pas à lier les zones de texte du formulaire avec les champs de la table Choix, pour que ces dernières se remplissent automatiquement lorsque l'on rempli le formulaire ! Ca doit être pourtant simple..

Mais là n'est pas le vrai problème:
le principe est que la table choix soit remplie justement avec le nouveau contrat que l'ont veut ajouter.
Ma requete VérificationPrésence vérifie si la table des contrats contient déjà une ligne similaire à celle de la table Choix.
Si oui, au augmente le nombre de contrats, si non, on crée une ligne.

La syntaxe que tu me proposes (fmvgld) ne marche malheureusement pas, j'ai le message d'erreur INVALID QUALIFIER si lje tape
"If Vérif.RecordCount = 0 Then DoCmd.OpenQuery ajout, acNormal, acEdit"

J'espère que je ne vous assomme pas avec la longueur de mes posts !
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 425
13 mars 2008 à 20:23
Bonsoir,
oui je vous comprend, essayez de compacter votre base de données, pour cela vous l'ouvrer et sur Outils / Utilitaires de la base de données et clic sur Compacter un base de données .....
La taille va diminuer et il vous sera possible de l'envoyer......

Ou passer par la concurence http://www.cijoint.fr/

Salutations.
Jean-Pierre
0
Bonjour !

Merci pour cette astuce:
La base de données est là:
http://cjoint.com/data/dnuAQs1qmV.htm

Cordialement,
0
fmvgld Messages postés 117 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 30 décembre 2015 9
13 mars 2008 à 20:44
Dim Vérif, mabd
Set mabd = DBEngine.Workspaces(0).Databases(0)
Set Vérif = mabd.openrecordset("Vérification Présence")

ajout = "Ajoute Ligne Dans AutreSortie"


If Vérif.RecordCount = 0 Then DoCmd.OpenQuery ajout, acNormal, acEdit
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 425
13 mars 2008 à 20:46
Bonsoir,
OK j'ai téléchargé votre base.
Pouvez-vous me préciser quelle est la table et la requete à prendre en compte..!
Merci.
0
Il s'agit dans notre exemple de l'ajout dun contrat dans la table AUTRE SORTIE
Les données seront rentrées dans la table CHOIX à l'aide du formulaire.
La requete VERIFICATION PRESENCE affiche une table contenant la ligne si des contrats contenant le meme produit, la meme année de souscription et la meme année de résiliation existent déjà dans la table AUTRE SORTIE, et est vide sinon.

Il faut donc effectuer le test sur cette requete VERIFICATION PRESENCE, si elle est vide, ajouter la ligne grace à la requete "ajout ligne dans autre sortie", sinon augmenter le nombre de contrat de la ligne existante avec une requete que je n'ai pas encore crée. :)
0
Bonsoir fmgvld,

Le code a l'air de marcher !
Il m'a bien ajouté la ligne dans AUTRE SORTIE puisqu'elle n'existait pas.

Si vous acceptez toujours de continuer à m'aider, je bloque sur l'autre requête, à savoir celle qui augmente le nombre de contrats de la ligne si elle existe déjà (le then..)
Pas évident pour moi, car il faut ajouter le nombre de contrats figurant dans la ligne de la table CHOIX à la ligne correspondante de la table AUTRE SORTIE trouvée par la requête vérification présence..

Je n'ai absolument aucune idée de comment faire cela !
0
fmvgld Messages postés 117 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 30 décembre 2015 9
13 mars 2008 à 21:16
explique moi un peu plus precisement quel valeur tu veut ajouter et dans quoi (pb de comprehension)
je pense qu'il va falloir passer par la creation de sql via vba
0
superbatto > fmvgld Messages postés 117 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 30 décembre 2015
13 mars 2008 à 21:27
Alors en gros:

Tous mes contrats qui sont dans l'état (il y a 4 états) AUTRE SORTIE figurent dans la table "autre sortie"

Dans la table Choix, figure un contrat que l'on veut ajouter (via le formulaire)
Quand on rempli le formulaire avec les données du contrat à ajouter, elles vont automatiquement dans la table choix (ce que je n'arrive pas non plus à faire au passage)

Il faut ensuite comparer les tables choix et autre sortie, car en effet dans la table choix on n'a pas une ligne par contrat, mais une ligne pour tous les contrats qui ont le meme produit, la meme année de souscription, la meme année de naissance et la meme année de sortie.
Deux cas possibles :

Il y a déjà des contrats qui ont les caractéristiques (les 3 années et le types de produit) identiques à celles du ou des contrat que l'on veut ajouter. Dans ce cas, il faut augmenter (dans la table autre sortie) le nombre de contrats dans la case qui existe déjà (s'il y en avait 4 et qu'on en ajoute 3, il faut modifier le 4 par un 7).

Il n'y a pas de contrat qui ont ces caractéristiques, et il faut ajouter une ligne, ce qui marche très bien grace au code que tu m'as fourni tout à l'heure.

Merci pour tout ce temps consacré à mon problème !
0
fmvgld Messages postés 117 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 30 décembre 2015 9 > superbatto
13 mars 2008 à 21:33
je regarderais demain a tete reposer car pas beaucoup de temps ce soir
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 425
13 mars 2008 à 21:05
Bonsoir superbatto,
Merci pour les informations.
Se soir je m'arrête et je reprendrai le tout dès demain.
Bonne soirée.
0
Merci beaucoup pour ton aide !
0
D'accord, merci beaucoup !
0
fmvgld Messages postés 117 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 30 décembre 2015 9
14 mars 2008 à 08:47
je cite
"Il y a déjà des contrats qui ont les caractéristiques (les 3 années et le types de produit) identiques à celles du ou des contrat que l'on veut ajouter. Dans ce cas, il faut augmenter (dans la table autre sortie) le nombre de contrats dans la case qui existe déjà (s'il y en avait 4 et qu'on en ajoute 3, il faut modifier le 4 par un 7). "

peut il existe plusieurs lignes correspondant a ces criteres et dans cd cas on incremente quoi
- tous les lignes
-.....

de plus voici ta base revu https://www.cjoint.com/?doiWIbLjqq
changement du code du bouton + changement des champs
doit tu obligatoirement transferer les données que tu saisi dans tes champs dans ta table choix? en vu d'une tracabilité?
0
superbatto > fmvgld Messages postés 117 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 30 décembre 2015
14 mars 2008 à 21:07
Bonjour,
Merci pour toute cette aide !

A priori, toutes les lignes concernent deux contrats différents : il ne peut pas y avoir deux lignes qui contiennent des contrats ayant comme objet le même type de produit, la même année de souscription, de naissance et de sortie (ces quatres critères définissent entièrement un contrat).
D'ou la colonne "Nb contrats" qui contient le nombre de contrats vérifiant exactement les 4 critères.

Il n'y a donc normalement pas de doublons (à moins que ma base de données soit truffée d'erreurs..)

S'il n'y en a pas, pas de problème, on incrémente simplement le nombre de contrats de la ligne qui vérifie les 4 critères du contrat que l'on a à ajouter (si celle ci existe), sinon on la crée.

Il est vrai que je ne suis pas obligé de passer par la table Choix, mais c'est l'idée la plus simple qui m'est venue à l'esprit !
Je suis ouvert à d'autres propositions.. :)

Il va me falloir un peu de temps pour comprendre la requete sql que tu m'as codée vu que je ne connais pas du tout ce langage !

Merci beaucoup,

Yves
0
fmvgld Messages postés 117 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 30 décembre 2015 9 > superbatto
14 mars 2008 à 21:30
donc pas besoin de cette table. par contre il faudra rajout une cle de parcour afin de pouvoir recherche l'enregistrement a modifier et donc le modifier.
je regarderais des que je peut afin de modifier le code en question
0
superbatto > fmvgld Messages postés 117 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 30 décembre 2015
14 mars 2008 à 21:33
Si je comprends bien, une clé primaire dans la table autre sortie suffirait à repérer la ligne qu'il faut incrémenter, pour pouvoir la mettre à jour simplement avec une requete ?

Merci pour l'aide, ne t'encombre pas avec ça ce soir je pars prendre un train !
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 425
14 mars 2008 à 11:44
Bonjour superbatto,
Première étape :
Vous dites : je n'arrive pas à lier les zones de texte du formulaire avec les champs de la table Choix

Solution: vous ouvrez le formulaire "Form1" en mode création (Modifier) puis ouvrir les propriétés du formulaire, faire clic droit sur le petit carrée noir à gauche en haut juste au dessous du nom "Form1 : Formulaire" puis clic sur "Propriétés".
Ensuite clic onglet "Données" et pour la propriété "Source" clic sur la flèche du menue déroulant (à droite de la case) et clic sur le nom de votre table.
Une fenêtre s'affiche avec les noms des champs disponibles. Il vous suffit de faire un glisser/coller pour les mettre sur le formulaire.
Note vous pouvez supprimer les autres champs déjà présents.
Et voila pour cette partie.
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 425
14 mars 2008 à 13:38
Bonjour superbatto,
Merci de préciser la table contrat n'existe pas; alors ou j'enregistre "Si oui, au augmente le nombre de contrats, si non, on crée une ligne" ?
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 425
14 mars 2008 à 18:47
Bonjour superbatto,
J'ai admis que la table contrat est "AutreSortie".
Dans un premier temps : le formulaire Fo_Choix" (ancien Form1) fonctionne. J'ai renommé la légende du bouton de commande, c'est plus explicite. Elle fonctionne pour le cas d'un ajout d'un contrat dans la table Ta_AutreSortie
Pour le cumul du nombre de contrats elle ne fait rien pour l'instant.

Votre table Ta_AutreSortie comporte une grande quantité de doublons (visible dans la requête "Rechercher les doublons pour Ta_AutreSortie") ---- que doit’ on faire ?

Dans votre requête "Re_Vérification Présence" vous avez 4 critères d'égalités alors que dans vos textes vous parlez toujours de 3 ----- qu'est ce qui est correct ?

En pièce jointe l'ébauche de votre BD https://www.cjoint.com/?dosVLQhiqB

Merci de vos renseignements pour la suite
0
Bonsoir,

Merci grandement d'aider les néophytes comme moi !

Alors, la manip pour lier les champs de la table Choix avec les cases du formulaire marche nickel !

Pour ce qui est de la table contenant les contrats, il s'agit bien de la table AUTRE SORTIE, désole de ne pas l'avoir bien précisé.

La distinction des contrats se fait quant à elle sur 4 critères distincts, et non pas 3 comme je l'ai malheureusement dit:
Le type de produit
L'année de souscription
L'année de naissance (du souscripteur)
L'année de sortie

Il n'y a donc finalement pas de problème de doublon.

La partie du boulot consistant à créer la ligne dans AUTRE SORTIE si aucun contrat existant n'a les mêmes caractéristiques que le contrat que l'on veut ajouter est donc réglée.
Il faudrait maintenant une requete qui augmente le nombre de contrats de la ligne correspondante si elle existe déjà.
Mettons que la ligne 26 de la table contienne des contrats ayant exactement les mêmes caractéristiques que ceux que je veux rajouter. Il convient donc de faire :
AUTRESORTIE.ligne_26.NbContrats <- AUTRESORTIE.ligne_26.NbContrats + Choix.NbContrats
Je n'arrive malheureusement pas à créer cette requete :(

Je vous remercie sincèrement pour votre aide.

A bientôt j'espère !
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 425
14 mars 2008 à 22:52
Bonsoir superbatto,
Merci pour les informations, maintenant c'est tout clair.
J'arrive à la même conclusion que fmvgld, la table "Choix" n'est pas nécessaire et de plus on évite d'avoir les informations en double (table AutreSortie et Choix).
Il reste à réaliser le cas de cumul des nombres de contrats, je vais dans le même sens que fmvgld qui certainement sera prêt avant moi car je suis absent ce samedi.
Merci à fmvgld de vous rendre service.
0
fmvgld Messages postés 117 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 30 décembre 2015 9 > Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024
15 mars 2008 à 13:23
https://www.cjoint.com/?dpnwiHN5NZ
derniere mouture de ta base. Test si un enregistrement existe en fonction des 3 date et du produit
creation d'un ligne si pas d"'enregistrement et incrementation du nb de contrat si existe

voila je reste a ta dispo si besoin
0
Bonjour fmvgld

Merci beaucoup pour tout ce travail !
Je vois que ça marche et j'en suis très content, mais j'aimerais quand même comprendre quelques trucs:
(Je n'ai jamais programmé en SQL)
Je comprends le principe de ce qui suit (requete selection dans la table AutreSortie selon les 4 critères rentrés dans le formulaire), mais j'aimerais savoir:
Pourquoi ces guillemets partout ?
pourquoi avoir séparé ainsi les bouts de la définition de s ? je veux dire, pourquoi ne pas avoir tout collé tout simplement ? est ce que c'est le langage sql qui l'oblige ?

Const guillemet = """"
Const bout1 = "SELECT AutreSortie.Produits, AutreSortie.AnnéeSouscrip, AutreSortie.AnnéeNaiss, AutreSortie.AnnéeSortie, AutreSortie.NbContrats FROM AutreSortie "
Const bout3 = "WHERE (((AutreSortie.Produits) Like " & guillemet
Const bout4 = ")AND ((AutreSortie.AnnéeSouscrip) Like "
Const bout5 = ") AND ((AutreSortie.AnnéeNaiss) Like "
Const bout6 = ") AND ((AutreSortie.AnnéeSortie) Like "
s = bout1 & bout3 & [Forms]![form2]![type_produit] & guillemet & bout4 & [Forms]![form2]![dsous] & bout5 & [Forms]![form2]![anaiss]
s = s & bout6 & [Forms]![form2]![asortie] & "));"


pourquoi pas tout betement qqch comme ca ?
s="SELECT AutreSortie.Produits, AutreSortie.AnnéeSouscrip, AutreSortie.AnnéeNaiss, AutreSortie.AnnéeSortie, AutreSortie.NbContrats FROM AutreSortie WHERE (((AutreSortie.Produits) Like "[Forms]![form2]![type_produit]") AND ((AutreSortie.AnnéeSouscrip) Like "[Forms]![form2]![dsous]") AND ((AutreSortie.AnnéeNaiss) Like "[Forms]![form2]![anaiss]") AND ((AutreSortie.AnnéeSortie) Like "[Forms]![form2]![asortie]));"

En ce qui concerne ceci :

Set mabd = DBEngine.Workspaces(0).Databases(0)
Set result = mabd.createquerydef("")
result.sql = s
Set Verif = result.openrecordset()


Je ne comprends pas trop ce que veut dire DBEngine.Workspaces(0).Databases(0) .
De plus, est ce que result est bien le nom de la requete, à laquelle est également attribué un code sql ( ici s ) ?


Et enfin:
Verif.NbContrats = Verif.NbContrats + 1
Comment ca se fait que la modification s'ffectue bien dans la table AutreSortie alors que (pour moi) ici Verif.NbContrats n'"existe" pas (est-il directement lié à AutreSortie.NbContrats ?)


Vraiment désolé de t'assomer avec toutes ces questions, mais j'aimeras comprendre ce que tu as fait pour pouvoir l'assimiler !

Merci beaucoup si tu peux répondre à tout ca !

Superbatto
0
fmvgld Messages postés 117 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 30 décembre 2015 9
17 mars 2008 à 08:24
s="SELECT AutreSortie.Produits, AutreSortie.AnnéeSouscrip, AutreSortie.AnnéeNaiss, AutreSortie.AnnéeSortie, AutreSortie.NbContrats FROM AutreSortie WHERE (((AutreSortie.Produits) Like "[Forms]![form2]![type_produit]") AND ((AutreSortie.AnnéeSouscrip) Like "[Forms]![form2]![dsous]") AND ((AutreSortie.AnnéeNaiss) Like "[Forms]![form2]![anaiss]") AND ((AutreSortie.AnnéeSortie) Like "[Forms]![form2]![asortie]));"

si tu fait ton sql comme ca tu essayera de trouver par ex l'année de naiss = "form!form2 cad a la chaine de caractere et non pas au champ relatif. Pour pouvoir faire une requete "dynamique" en fonction d'un champ qui evolu tu est oblige de separer ce qui est fixe cad les "bout" et ce qui est dynamique cad les champ que tu renseigne. Le meilleur moyen que tu est pour bien comprendre pourquoi on ne peut pas c qu'il suffit que tu copy le code sql ci dessus dans une requete en creation et en mode sql et tu verra

Je ne comprends pas trop ce que veut dire DBEngine.Workspaces(0).Databases(0) .

La propriété DBEngine de l'objet Application représente le moteur de base de données Microsoft Jet
DBEngine contient et contrôle tous les autres objets d'accès aux données.
workspace est un espace de travail sous dbengine
database est une base de données qui se situe dans workspace

En fait je declare la base de données que je vais utilisé comme étant celle ouverte. cad ma mienne la toute de suite maintenant

pour plus de précision F1 dans visual basic access

En résume pour t'explique comment ca marche je cree une requete virtuelle result=mabd.createquerydef("") auquel j'affecte le code sql. Ensuite je "ouvre" cette requete en affectant les enregistrements a verif pour les manipuller
J'aurais pu cree une requete normal modifier et l'appeler a chaque fois mais pour moi c plus simple de faire comme ca a toi de modifier si le coeur t'en dit

Verif.NbContrats = Verif.NbContrats + 1
Comment ca se fait que la modification s'ffectue bien dans la table AutreSortie alors que (pour moi) ici Verif.NbContrats n'"existe" pas


bien sur que si verif.nbcontrat existe c comme si tu faisait une requete modification ou ajout c la meme chose
En code si tu cree un recordset sur une table ou une requete tu peut manipuler les données. C le meme systeme sauf que des que tu sort du formulaire ta requete n'existe plus et ne peut etre manipuler par aucun autre element de ta base c tout

J'espere que j'ai ete assez clair dans mes explications N'hesite pas a revenir vers moi si tu a des probleme de compréhension avec ma prose ou pour d'autre probleme

@+
0
superbatto > fmvgld Messages postés 117 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 30 décembre 2015
17 mars 2008 à 20:40
Bonjour fmvgld

Merci pour la requête sql elle marche impec !
J'aurais encore besoin de ton aide celà dit.. je galère en sql !
Il y a deux choses :

Il faudrait que je puisse faire le même genre de requete sql pour ajouter une ligne si jamais elle n'existe pas (pour l'instant l'ajout se fait avec la requete "Ajoute ligne dans AutreSortie" qui utilise encore la table Choix).
Je n'arrive pas à la coder tout seul en sql ..

De plus, la mise à jour est à terme amenée à se faire sur chacune des tables.
Alors je me dis qu'avec les connaissances que j'ai, je serai obligé de reproduire 4 fois le code (pour les 4 tables de contrats) et faire 4 boutons différents.. c'est plutôt moyen..
Sinon, ce qui ne me parait pas si évident parce que la table concernée est un élément indispensable du code, rajouter dans le formulaire une case "Etat" qui indiquerait dans quelle table faire la modif:
S'il s'agit d'une modification type "nouveau contrat", ajouter le contrat dans la table actif.
S'il s'agit d'une modif type "clôture", l'ajouter dans une des 3 autres tables selon ce qui est précisé dans le formulaire..

Je me vois une autre possibilité (que je serais peut etre capable de faire seul, mais c'est pas dit):
Selon ce qui est choisi dans la case état, le bouton change (on fait 4 boutons dont 1 seul qui apparait selon l'état choisi, il me semble que c'est possible), ce qui n'alourdi pas le code (mais le répète 4 fois en fait..)

Que peux tu me conseiller ?

Merci beaucoup si tu veux bien m'aider encore un peu ! :)
0
superbatto > fmvgld Messages postés 117 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 30 décembre 2015
17 mars 2008 à 20:40
Bonjour fmvgld

Merci pour la requête sql elle marche impec !
J'aurais encore besoin de ton aide celà dit.. je galère en sql !
Il y a deux choses :

Il faudrait que je puisse faire le même genre de requete sql pour ajouter une ligne si jamais elle n'existe pas (pour l'instant l'ajout se fait avec la requete "Ajoute ligne dans AutreSortie" qui utilise encore la table Choix).
Je n'arrive pas à la coder tout seul en sql ..

De plus, la mise à jour est à terme amenée à se faire sur chacune des tables.
Alors je me dis qu'avec les connaissances que j'ai, je serai obligé de reproduire 4 fois le code (pour les 4 tables de contrats) et faire 4 boutons différents.. c'est plutôt moyen..
Sinon, ce qui ne me parait pas si évident parce que la table concernée est un élément indispensable du code, rajouter dans le formulaire une case "Etat" qui indiquerait dans quelle table faire la modif:
S'il s'agit d'une modification type "nouveau contrat", ajouter le contrat dans la table actif.
S'il s'agit d'une modif type "clôture", l'ajouter dans une des 3 autres tables selon ce qui est précisé dans le formulaire..

Je me vois une autre possibilité (que je serais peut etre capable de faire seul, mais c'est pas dit):
Selon ce qui est choisi dans la case état, le bouton change (on fait 4 boutons dont 1 seul qui apparait selon l'état choisi, il me semble que c'est possible), ce qui n'alourdi pas le code (mais le répète 4 fois en fait..)

Que peux tu me conseiller ?

Merci beaucoup si tu veux bien m'aider encore un peu ! :)
0
Ha oui par contre, si on veut vraiment se débarasser de la table choix, alors il faut aussi une requête sql qui ajoute la ligne si elle n'existe pas non ?
Parce que on s'est dbarassé de l'utilité de la table Choix pour vérifier si la ligne existe, mais si elle n'existe pas, on utilise toujours la requête Ajoute Ligne dans AetreSortie qui fait intervenir la table Choix :)
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 425
17 mars 2008 à 20:55
Bonsoir,
Votre bonheur est peut-être par là : https://www.cjoint.com/?dru2g1M7qB
Voir formulaire "Form2"
0
Enorme !
Excellent :) merci beaucoup pour tout ca
Je reviens vers vous dès que j'aurai réussi à décortiquer tout ce code, pour des questions qui m'aideront à tout comprendre :)
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 425
18 mars 2008 à 18:17
Bonjour superbatto,
Ci joint ma version remaniée.
https://www.cjoint.com/?dsso03aekC
Bonne fête de Pâques.
0
superbatto > Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024
18 mars 2008 à 23:09
génial !
excellent !
c'est tout à fait dans l'esprit de ce que je veux faire :)
Merci beaucoup pour le temps que vous y avez passé..
C'est vraiment un bon coup de main parce que j'aurais mit bien longtemps à trouver comment coder tout ça tout seul !
Maintenant je vais essayer de faire en sorte qu'on choisissant une option dans le formulaire ("ajout" ou" cloture"), on puisse dans le cas d'une cloture, en plus d'ajouter le contrat dans une des trois tables de contrats non actifs, l'enlever de la table des contrats actifs ! (le déplacer, en somme).

Je reviens vers vous des que j'ai un soucis.

Tres bonne soirée !
0