Exuter une requête dans un formulaire access
superbatto
-
Le Pingou Messages postés 12349 Date d'inscription Statut Contributeur Dernière intervention -
Le Pingou Messages postés 12349 Date d'inscription Statut Contributeur Dernière intervention -
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
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
A voir également:
- Exuter une requête dans un formulaire access
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Formulaire de reclamation instagram - Guide
- Formulaire de contact le bon coin introuvable - Forum Réseaux sociaux
- Access runtime ✓ - Forum Access
28 réponses
Bonsoir superbatto,
Merci de votre courriel.
Vous parlez de : en choisissant une option dans le formulaire ("ajout" ou" cloture"), il est bien clair que se sera un nouveau formulaire, n'est-ce pas.
Si vous avez besoin d'aide, faite le savoir.
Merci de votre courriel.
Vous parlez de : en choisissant une option dans le formulaire ("ajout" ou" cloture"), il est bien clair que se sera un nouveau formulaire, n'est-ce pas.
Si vous avez besoin d'aide, faite le savoir.
Bonjour superbatto,
Merci pour le courriel.
Le formulaire "F_Modif" permet d'entrer un nouvel enregistrement ou un cumul du nombre des contrats sur la table que l'on choisie dans le champ "Etat choix" "Actif, AutreSortie, Décès et Rachat".
A se propos il peut y avoir un problème avec la table "T_actif" qui à un champ "Décès" dans le cas ou le champ "Année sortie"du "F_Motif" n'est pas renseigner.....!
Question : est-il nécessaire d'avoir le champ "Année sortie" dans la table "T_Actif"
Récapitulation :
si Ajout --> vers T_Actif
Si Clôture ---> vers table ciblé T_AutreSortie, T_Deces ou T_Rachat ---> plus supprimer ligne contrat ou Diminuer le nombre de contrat si différent de 1.
Est-bien comme cela ????
A la suite des réponses il faut simplement ajouter un champ de choix "Ajout Clôture" sur le formulaire et ensuite quelques adaptations conditionnelles dans la procédure est le compte sera bon.
--
Salutations.
Jean-Pierre
Merci pour le courriel.
Le formulaire "F_Modif" permet d'entrer un nouvel enregistrement ou un cumul du nombre des contrats sur la table que l'on choisie dans le champ "Etat choix" "Actif, AutreSortie, Décès et Rachat".
A se propos il peut y avoir un problème avec la table "T_actif" qui à un champ "Décès" dans le cas ou le champ "Année sortie"du "F_Motif" n'est pas renseigner.....!
Question : est-il nécessaire d'avoir le champ "Année sortie" dans la table "T_Actif"
Récapitulation :
si Ajout --> vers T_Actif
Si Clôture ---> vers table ciblé T_AutreSortie, T_Deces ou T_Rachat ---> plus supprimer ligne contrat ou Diminuer le nombre de contrat si différent de 1.
Est-bien comme cela ????
A la suite des réponses il faut simplement ajouter un champ de choix "Ajout Clôture" sur le formulaire et ensuite quelques adaptations conditionnelles dans la procédure est le compte sera bon.
--
Salutations.
Jean-Pierre
Bonjour,
Vous avez parfaitement raison !
Il est vrai que pour l'ajout d'un nouveau contrat, il n'y aura pas de date de sortie spécifiée puisque pas de sortie..
Est il possible de faire en sorte que si l'on choisit "ajout" dans la case "Type de modification" (qui n'existe pas) du formulaire, alors la case annéesortie disparaisse ? et réapparaisse si on choisit "clôture" ?
Sinon, il est vrai qu'on peut carremment supprimer le champ AnnéeSortie de la table T_Actifs, mais cela ne résoud pas le problème si ?
On ne peut pas modifier le code uniquement dans le cas de l'ajout d'un produit actif, ou alors peut etre faut-il créer un autre sub avec l'instruction d'insérer la date de sortie en moins ?
Vous avez parfaitement raison !
Il est vrai que pour l'ajout d'un nouveau contrat, il n'y aura pas de date de sortie spécifiée puisque pas de sortie..
Est il possible de faire en sorte que si l'on choisit "ajout" dans la case "Type de modification" (qui n'existe pas) du formulaire, alors la case annéesortie disparaisse ? et réapparaisse si on choisit "clôture" ?
Sinon, il est vrai qu'on peut carremment supprimer le champ AnnéeSortie de la table T_Actifs, mais cela ne résoud pas le problème si ?
On ne peut pas modifier le code uniquement dans le cas de l'ajout d'un produit actif, ou alors peut etre faut-il créer un autre sub avec l'instruction d'insérer la date de sortie en moins ?
Bonjour superbatto,
Merci pour l'information.
Ci joint le cadeau de Pâques https://www.cjoint.com/?dtrGdV56HK
Merci pour l'information.
Ci joint le cadeau de Pâques https://www.cjoint.com/?dtrGdV56HK
Bonsoir superbatto,
Merci, de rien.
Pour la position, si je travaille avec une application (non pas en création) j'ai toujours la fenêtre agrandie au maximum de l'écran et dans se cas il se positionne en haut à gauche. Si vous êtes en niveau inférieur, il doit y avoir une possibilité d'auto centrer le formulaire, voir dans les propriétés du formulaire.... en fait il n'y a pas grand choix dans se domaine.
Bonne fin de soirée.
Salutations.
Jean-Pierre
Merci, de rien.
Pour la position, si je travaille avec une application (non pas en création) j'ai toujours la fenêtre agrandie au maximum de l'écran et dans se cas il se positionne en haut à gauche. Si vous êtes en niveau inférieur, il doit y avoir une possibilité d'auto centrer le formulaire, voir dans les propriétés du formulaire.... en fait il n'y a pas grand choix dans se domaine.
Bonne fin de soirée.
Salutations.
Jean-Pierre
Rebonjour!
J'ai du délaisser ma base de données temporairement faute de temps, je m'y remets pour quelques dernières retouches (c'est presque terminé !)
Je rencontre (évidemment, ça ne peut jamais aller comme sur des roulettes avec moi -_- ) un petit problème:
Je dispose d'un formulaire (F_Contrats) où je souhaite rendre visualisables mes tables (les 4)
J'insère donc un sous formulaire (qui s'appelle "Subform"), dont la source devra varier en fonction de ce que l'on veut visualiser, disons par un combo box "Choix_Table", qui peut prendre les valeurs "Actifs" "Deces" "AutreSortie" et "Rachat".
Bien.
Où que je cherche, je tombe sur la syntaxe suivante :
Me.Subform.Form.RecordSource = blabla..
J'écris donc bêtement (peut être un peu trop même) :
Private Sub Bouton_Click()
Dim TableActifs, TableRachats, TableDeces, TableAutreSortie As String
TableActifs = "T_Actif"
TableRachats = "T_Rachat"
TableDeces = "T_Deces"
TableAutreSortie = "T_AutreSortie"
If Me.Choix_Table.Value = "Actifs" Then
Me.Subform.Form.RecordSource = TableActifs
Else
If Me.Choix_Table.Value = "Deces" Then
Me.Subform.Form.RecordSource = TableDeces
Else
If Me.Choix_Table.Value = "AutreSortie" Then
Me.Subform.Form.RecordSource = TableAutreSortie
Else
Me.Subform.Form.RecordSource = TableRachat
End If
End If
End If
Me.Subform.Requery
Helas, ce ne marche pas, me disant que Me.Subform.Form.RecordSource n'existe pas..
Sauriez vous me dire quelle est la syntaxe exacte ?
J'ai mis la base de données ici http://cjoint.com/data/dBoDsyjlW6.htm , au cas où vous seriez curieux de voir ce que devient la base de données que vous avez si grandement aidé à développer.
Merci d'avance !
Superbatto
J'ai du délaisser ma base de données temporairement faute de temps, je m'y remets pour quelques dernières retouches (c'est presque terminé !)
Je rencontre (évidemment, ça ne peut jamais aller comme sur des roulettes avec moi -_- ) un petit problème:
Je dispose d'un formulaire (F_Contrats) où je souhaite rendre visualisables mes tables (les 4)
J'insère donc un sous formulaire (qui s'appelle "Subform"), dont la source devra varier en fonction de ce que l'on veut visualiser, disons par un combo box "Choix_Table", qui peut prendre les valeurs "Actifs" "Deces" "AutreSortie" et "Rachat".
Bien.
Où que je cherche, je tombe sur la syntaxe suivante :
Me.Subform.Form.RecordSource = blabla..
J'écris donc bêtement (peut être un peu trop même) :
Private Sub Bouton_Click()
Dim TableActifs, TableRachats, TableDeces, TableAutreSortie As String
TableActifs = "T_Actif"
TableRachats = "T_Rachat"
TableDeces = "T_Deces"
TableAutreSortie = "T_AutreSortie"
If Me.Choix_Table.Value = "Actifs" Then
Me.Subform.Form.RecordSource = TableActifs
Else
If Me.Choix_Table.Value = "Deces" Then
Me.Subform.Form.RecordSource = TableDeces
Else
If Me.Choix_Table.Value = "AutreSortie" Then
Me.Subform.Form.RecordSource = TableAutreSortie
Else
Me.Subform.Form.RecordSource = TableRachat
End If
End If
End If
Me.Subform.Requery
Helas, ce ne marche pas, me disant que Me.Subform.Form.RecordSource n'existe pas..
Sauriez vous me dire quelle est la syntaxe exacte ?
J'ai mis la base de données ici http://cjoint.com/data/dBoDsyjlW6.htm , au cas où vous seriez curieux de voir ce que devient la base de données que vous avez si grandement aidé à développer.
Merci d'avance !
Superbatto
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour superbatto,
Je télécharge votre fichier, beau travail, bravo.
La réponse, à votre demende; d'ici demain au plus tard.
Bonne journée.
Je télécharge votre fichier, beau travail, bravo.
La réponse, à votre demende; d'ici demain au plus tard.
Bonne journée.
Rebonjour JP,
Je suis rassuré de voir que vous n'avez pas stoppé l'envoi d'emails pour ce post !
J'ai une autre situation à vous soumettre:
Dans mon formulaire F_Stats, je veux afficher des champs de 3 requêtes différentes.
J'ai donc inséré 18 zones de texte, 6 par requête, qui sont reliées aux champs des requêtes.
Le problème est que je n'arrive pas à choisir plusieurs requêtes sources simultanées pour le formulaire (dans la propriété source de form, je ne peux mettre qu'une requête). Donc les 12 champs qui ne sont pas reliés à la bonne table contiennent #NAME ?
Sauriez vous m'aider ?
J'ai essayé de mettre Statistiques1;Statistiques2;Statistiques3 dans la propriété source (ce sont les noms des 3 requêtes) mais cela ne marche pas..
J'ai reup ma base de données si vous préferez jeter un coup d'oeil:
http://cjoint.com/data/dBrl1u4P8G.htm
Merci !
Superbatto
Je suis rassuré de voir que vous n'avez pas stoppé l'envoi d'emails pour ce post !
J'ai une autre situation à vous soumettre:
Dans mon formulaire F_Stats, je veux afficher des champs de 3 requêtes différentes.
J'ai donc inséré 18 zones de texte, 6 par requête, qui sont reliées aux champs des requêtes.
Le problème est que je n'arrive pas à choisir plusieurs requêtes sources simultanées pour le formulaire (dans la propriété source de form, je ne peux mettre qu'une requête). Donc les 12 champs qui ne sont pas reliés à la bonne table contiennent #NAME ?
Sauriez vous m'aider ?
J'ai essayé de mettre Statistiques1;Statistiques2;Statistiques3 dans la propriété source (ce sont les noms des 3 requêtes) mais cela ne marche pas..
J'ai reup ma base de données si vous préferez jeter un coup d'oeil:
http://cjoint.com/data/dBrl1u4P8G.htm
Merci !
Superbatto
Bonsoir superbatto,
Oui j'ai déjà remarqué la préparation du formulaire pou les statistiques ainsi que les requêtes.
Dans un premier temps je viens de finir la première partie du "F_Contrats".
Pour les statistiques je suis sur un os cela ne fonctionne pas, c'est pour demain .....
Ci-joint le fichier en attendant : https://www.cjoint.com/?dBxGPepTGd
Oui j'ai déjà remarqué la préparation du formulaire pou les statistiques ainsi que les requêtes.
Dans un premier temps je viens de finir la première partie du "F_Contrats".
Pour les statistiques je suis sur un os cela ne fonctionne pas, c'est pour demain .....
Ci-joint le fichier en attendant : https://www.cjoint.com/?dBxGPepTGd
Bonjour superbatto,
J'espère que cela vous conviendra .. https://www.cjoint.com/?dCoghnJYsh
J'espère que cela vous conviendra .. https://www.cjoint.com/?dCoghnJYsh
Merci beaucoup Jean Pierre.
Je vais essayer de trouver quelque chose d'un peu moins lourd si c'est possible, mais votre solution me va très bien aussi !
Par contre, je me demandais, n'y a t-il pas moyen de "fusionner" certaines de mes requetes ? (il y en a trop)
Par exemple les deux requetes qui calculent le nombre de contrats de type 1, et le nombre de contrats de type 2, je me demandais si on pouvait créer une unique requete qui calcule ces deux valeurs en même temps.. A priori en mode création ce n'est pas possible, mais on ne sait jamais..
Je vais essayer de trouver quelque chose d'un peu moins lourd si c'est possible, mais votre solution me va très bien aussi !
Par contre, je me demandais, n'y a t-il pas moyen de "fusionner" certaines de mes requetes ? (il y en a trop)
Par exemple les deux requetes qui calculent le nombre de contrats de type 1, et le nombre de contrats de type 2, je me demandais si on pouvait créer une unique requete qui calcule ces deux valeurs en même temps.. A priori en mode création ce n'est pas possible, mais on ne sait jamais..
Bonjour superbatto,
Merci, ne vous faite pas de soucis si cela vous parait lourd, je dirais plutôt répétitif. Il est possible de condenser certaine partie mais cela n'en vaut pas la peine. Pour les requêtes il est possible en ajoutant une colonne pour chaque produit et il suffira de faire le total.
Le principal est que cela fonctionne correctement.
Vous avez pris note du petit encas... contactez-moi par l'autre canal....merci j'ai un suplément.
Bonne fin de semaine.
Merci, ne vous faite pas de soucis si cela vous parait lourd, je dirais plutôt répétitif. Il est possible de condenser certaine partie mais cela n'en vaut pas la peine. Pour les requêtes il est possible en ajoutant une colonne pour chaque produit et il suffira de faire le total.
Le principal est que cela fonctionne correctement.
Vous avez pris note du petit encas... contactez-moi par l'autre canal....merci j'ai un suplément.
Bonne fin de semaine.
Et bien il ne me semble pas qu'il y ait besoin d'un autre formulaire, mais peut etre que je me trompe !
Le principe de la base de données est qu'elle est censée être évolutive:
On doit pouvoir ajouter des contrats actifs (les nouveaux contrats donc)
Lorsqu'un des contrats actifs (de la table ACTIFS) est clôturé, le déplacer dans une des trois autres tables (selon qu'il devient clôturé pour DECES, pour RACHAT, ou pour une autre raison (AUTRE SORTIE))
On a jusque là réussi à faire en sorte qu'un contrat soit ajouté à une des tables (n'importe laquelle des quatre), ce qui permet entre autres d'ajouter un nouveau contrat dans la table ACTIFS.
Cependant, lors de la clôture d'un contrat, il faut, en plus de l'ajouter dans une des trois autres tables, le supprimer de la table ACTIF (ce qui revient en fait à le déplacer).
Il me semblait que pour faire cela il suffirait de rajouter une case dans le formulaire, disons "type de modification".
Si dans cette case on choisit "Ajout", alors il suffit d'ajouter un nouveau contrat dans le tableau actif, ce que l'on est déjà en mesure de faire.
Si c'est une "clôture", alors les données que l'ont rentre dans le formulaire correspondraient nécessairement à un contrat existant dans la table ACTIF (hypothèse que l'on se fait), et il conviendrait de le supprimer de cette table et de l'ajouter à une des trois autres (selon le choix de la case ETAT du formulaire). On sait déjà l'ajouter à une des trois autres tables, je pense qu'il sufffirait de quelques lignes de code pour faire en sorte qu'il soit également supprimé de la table ACTIF:
Si dans type de modification il y a "ajout", on INSERT la ligne dans la table ACTIF.
S'il s'agit d'une cloture, on le supprime de la table ACTIFS et on l'insert dans la table ciblée par la case Etat
Dites moi si je me trompe et si ceci n'est pas facilement faisable !
Merci pour votre disponibilité et votre altruisme :-)