[access vba] modifier une requete
Frankkkk
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
seblekiller_oupas Messages postés 397 Date d'inscription Statut Membre Dernière intervention -
seblekiller_oupas Messages postés 397 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'apprivoise tranquillement access. Je me suis fais un formulaire ou je choisi les critères afin de modifier ma requete. Ensuite j'ouvre l'état correspondant. Par contre, les criteres ne sont pas seulement dans la clause where, car j'ai plusieurs select imbriqué, si seulement dans la clause where, j'envoie le critère lors de l'ouverture de l'état, mais comment faire pour changer d'autres parties dans ma requete avant d'ouvrir mon état? Recordset? si oui, comment?
Merci beaucoup de bien vouloir me donner des pistes!
J'apprivoise tranquillement access. Je me suis fais un formulaire ou je choisi les critères afin de modifier ma requete. Ensuite j'ouvre l'état correspondant. Par contre, les criteres ne sont pas seulement dans la clause where, car j'ai plusieurs select imbriqué, si seulement dans la clause where, j'envoie le critère lors de l'ouverture de l'état, mais comment faire pour changer d'autres parties dans ma requete avant d'ouvrir mon état? Recordset? si oui, comment?
Merci beaucoup de bien vouloir me donner des pistes!
A voir également:
- Disons demain modifier mon profil
- Modifier dns - Guide
- Voir qui regarde mon profil facebook - Guide
- Qui regarde mon profil instagram - Guide
- Modifier liste déroulante excel - Guide
- Modifier story facebook - Guide
51 réponses
re :
tu devrais avoir la routine :
dans cette routine, il y a un appel à la fonction [ ChangeRequeteDef ] dans la ligne :
If (ChangeRequeteDef("nom_de_la_requete", ChaineSQL)) Then
celle-ci devient :
If (ChangeRequeteDef("R_tridate", ChaineSQL)) Then
et l'appel au second formulaire :
DoCmd.OpenForm "F_tridates", acNormal, "", "[Champs]", , acNormal
dans cette ligne le mot [ Champs ] devra être remplacer par un nom de champ de la table.
tu place donc la function à la suite de ce code.
Lupin
tu devrais avoir la routine :
Private Sub tbxDateDebut_AfterUpdate() Dim ChaineSQL As String, Critere1 As String, Critere2 As String If ((tbxDateDebut.Text <> "") And (tbxDateFin.Text <> "")) Then Critere1 = Me.tbxDateDebut.Text Critere2 = Me.tbxDateFinal.Text ChaineSQL = "SELECT [Maintenance].[Refmaintenance], [Maintenance].[Numlicence_cle], [Maintenance].[Fin_garantie], [Maintenance].[Fin_extension]" ChaineSQL = ChaineSQL & " " & "FROM Maintenance " ChaineSQL = ChaineSQL & "WHERE ((([Maintenance].[Fin_garantie])>" & Critere1 & " " ChaineSQL = ChaineSQL & "And ([Maintenance].[Fin_garantie])<" & Critere2 & "));" If (ChangeRequeteDef("nom_de_la_requete", ChaineSQL)) Then DoCmd.OpenForm "formulaire_Specifique", acNormal, "", "[Champs]", , acNormal End If End If End Sub '
dans cette routine, il y a un appel à la fonction [ ChangeRequeteDef ] dans la ligne :
If (ChangeRequeteDef("nom_de_la_requete", ChaineSQL)) Then
celle-ci devient :
If (ChangeRequeteDef("R_tridate", ChaineSQL)) Then
et l'appel au second formulaire :
DoCmd.OpenForm "F_tridates", acNormal, "", "[Champs]", , acNormal
dans cette ligne le mot [ Champs ] devra être remplacer par un nom de champ de la table.
tu place donc la function à la suite de ce code.
Lupin
seblekiller_oupas
et elle est ou cete routine je vois absolument pas comment y aller
re :
message 19 :
maintenant, sur les 2 textboxs en mode création, fenêtre des propriétés, onglet évènement
ligne après MAJ, choisir Procédure événementiel ...
clic sur l'icon (le bouton) du bout qui a 3 petits points
tu attéris directement dans le module VBA du formulaire !
C'est là que tu va placé le code :
Private Sub tbxDateDebut_AfterUpdate()
...
et la fonction à la suite :
Public Function ChangeRequeteDef(ChaineRequete As String, ChaineSQL As String) As Boolean
Lupin
message 19 :
maintenant, sur les 2 textboxs en mode création, fenêtre des propriétés, onglet évènement
ligne après MAJ, choisir Procédure événementiel ...
clic sur l'icon (le bouton) du bout qui a 3 petits points
tu attéris directement dans le module VBA du formulaire !
C'est là que tu va placé le code :
Private Sub tbxDateDebut_AfterUpdate()
...
et la fonction à la suite :
Public Function ChangeRequeteDef(ChaineRequete As String, ChaineSQL As String) As Boolean
Lupin
re :
voici un exemple complet :
http://membre.oricom.ca/lupin/documents/video.zip
ce lien ne sera valide que pour la journée ! désolé
Ouvre le formulaire : Formulaire Table Vidéo
Tu trouveras 3 listes déroulantes
Lorsque tu sélectionne une valeur la requête associé est modifié
par programmation et ouvre un second formulaire basé sur cette
même requête.
Dans le second formulaire, un double clic sur le début de la ligne
amène l'enregistrement pointé dans le premier formulaire !
Lupin
voici un exemple complet :
http://membre.oricom.ca/lupin/documents/video.zip
ce lien ne sera valide que pour la journée ! désolé
Ouvre le formulaire : Formulaire Table Vidéo
Tu trouveras 3 listes déroulantes
Lorsque tu sélectionne une valeur la requête associé est modifié
par programmation et ouvre un second formulaire basé sur cette
même requête.
Dans le second formulaire, un double clic sur le début de la ligne
amène l'enregistrement pointé dans le premier formulaire !
Lupin
Bonjour ca faisait longtemps
Donc en gros je vais essayer de dire ce qui ne va pas et ce que je cherche a faire ou a savoir.
Ce que j'ai fait:
j'ai bien ecrit ce qu il fallait en SQL
j'ai bien ecrit les formules :
Private Sub tbxDateDebut_AfterUpdate()
Dim ChaineSQL As String, Critere1 As String, Critere2 As String
If ((tbxDateDebut.Text <> "") And (tbxDateFin.Text <> "")) Then
Critere1 = Me.tbxDateDebut.Text
Critere2 = Me.tbxDateFinal.Text
ChaineSQL = "SELECT [Maintenance].[Refmaintenance], [Maintenance].[Numlicence_cle], [Maintenance].[Fin_garantie], [Maintenance].[Fin_extension]"
ChaineSQL = ChaineSQL & " " & "FROM Maintenance "
ChaineSQL = ChaineSQL & "WHERE ((([Maintenance].[Fin_garantie])>" & Critere1 & " "
ChaineSQL = ChaineSQL & "And ([Maintenance].[Fin_garantie])<" & Critere2 & "));"
If (ChangeRequeteDef("nom_de_la_requete", ChaineSQL)) Then
DoCmd.OpenForm "formulaire_Specifique", acNormal, "", "[Champs]", , acNormal
End If
End If
End Sub
'
Public Function ChangeRequeteDef(ChaineRequete As String, ChaineSQL As String) As Boolean
Dim Definition As Variant
If ((ChaineRequete = "") Or (ChaineSQL = "")) Then
ChangeRequeteDef = False
Else
Set Definition = CurrentDb.QueryDefs(ChaineRequete)
Definition.SQL = ChaineSQL
Definition.Close
RefreshDatabaseWindow
ChangeRequeteDef = True
End If
End Function
'
Legerement modifie,le tout dans apres MAJ
j'ai aussi cree une requete liee a ma requete R_Tridates
et un formulaire que je suppose lie a celui-ci( c'est a dire que j'ai fait une iste modifiable dans ce formulaire)
C'est tout ce que j'ai fait donc si tu pouvais me dire ce qu'il manque ou ce qui ne va pas car ji est passe une partie de la nuit et toute la matinee et ca ne me plait pas trop merci :-)
Donc en gros je vais essayer de dire ce qui ne va pas et ce que je cherche a faire ou a savoir.
Ce que j'ai fait:
j'ai bien ecrit ce qu il fallait en SQL
j'ai bien ecrit les formules :
Private Sub tbxDateDebut_AfterUpdate()
Dim ChaineSQL As String, Critere1 As String, Critere2 As String
If ((tbxDateDebut.Text <> "") And (tbxDateFin.Text <> "")) Then
Critere1 = Me.tbxDateDebut.Text
Critere2 = Me.tbxDateFinal.Text
ChaineSQL = "SELECT [Maintenance].[Refmaintenance], [Maintenance].[Numlicence_cle], [Maintenance].[Fin_garantie], [Maintenance].[Fin_extension]"
ChaineSQL = ChaineSQL & " " & "FROM Maintenance "
ChaineSQL = ChaineSQL & "WHERE ((([Maintenance].[Fin_garantie])>" & Critere1 & " "
ChaineSQL = ChaineSQL & "And ([Maintenance].[Fin_garantie])<" & Critere2 & "));"
If (ChangeRequeteDef("nom_de_la_requete", ChaineSQL)) Then
DoCmd.OpenForm "formulaire_Specifique", acNormal, "", "[Champs]", , acNormal
End If
End If
End Sub
'
Public Function ChangeRequeteDef(ChaineRequete As String, ChaineSQL As String) As Boolean
Dim Definition As Variant
If ((ChaineRequete = "") Or (ChaineSQL = "")) Then
ChangeRequeteDef = False
Else
Set Definition = CurrentDb.QueryDefs(ChaineRequete)
Definition.SQL = ChaineSQL
Definition.Close
RefreshDatabaseWindow
ChangeRequeteDef = True
End If
End Function
'
Legerement modifie,le tout dans apres MAJ
j'ai aussi cree une requete liee a ma requete R_Tridates
et un formulaire que je suppose lie a celui-ci( c'est a dire que j'ai fait une iste modifiable dans ce formulaire)
C'est tout ce que j'ai fait donc si tu pouvais me dire ce qu'il manque ou ce qui ne va pas car ji est passe une partie de la nuit et toute la matinee et ca ne me plait pas trop merci :-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
oui en fait c'etait pour savoir sur quelle site je pouvais la copier pour que tu la voit car je n'en connais aucun
Desole du retard mais voila ma base de donnee:
http://www.cijoint.fr/cjlink.php?file=cj200804/cijEhEWC9X.zip.
http://www.cijoint.fr/cjlink.php?file=cj200804/cijEhEWC9X.zip.
re :
Je n'accède pas au fichier ! !!! Fichier non accessible !!!
Et si tu esssayais sur ce site :
https://www.cjoint.com/
Lupin
Je n'accède pas au fichier ! !!! Fichier non accessible !!!
Et si tu esssayais sur ce site :
https://www.cjoint.com/
Lupin
re :
re :
Voilà, maintenant j'ai ton fichier.
1.) La routine qui porte le nom de [ Test ], n'est appellé d'aucune façon.
a) Ouvrir le formulaire [ Tri_Date ].
b) Un clic sur la première liste déroulante "Date Début"
c) Un clic sur icon de barre d'outils [ Propriétés ]
d) Dans la nouvelle fenêtre [ Zone de liste déroulante: Modifiable14 ], choisir onglet [ Évènement ]
e) Deuxième ligne [ Après MAJ ], sèlectionner dans liste déroulante [ Procédure événementielle ]
f) Un clic sur icon [ ... ] à côté de la liste déroulante [ Procédure événementielle ]
tu attérit :
dans la routine [ Test ], il faut modifier :
et ici, il faut indiquer quel est le formulaire que l'on veut ouvrir !
DoCmd.OpenForm "formulaire_Specifique", acNormal, "", "[Fin_garantie]", , acNormal
où [ formulaire_spécifique ] doit être un nom valide de formulaire de la BD.
alors je recherche lequel doit être ouvert ?
Lupin
re :
Voilà, maintenant j'ai ton fichier.
1.) La routine qui porte le nom de [ Test ], n'est appellé d'aucune façon.
a) Ouvrir le formulaire [ Tri_Date ].
b) Un clic sur la première liste déroulante "Date Début"
c) Un clic sur icon de barre d'outils [ Propriétés ]
d) Dans la nouvelle fenêtre [ Zone de liste déroulante: Modifiable14 ], choisir onglet [ Évènement ]
e) Deuxième ligne [ Après MAJ ], sèlectionner dans liste déroulante [ Procédure événementielle ]
f) Un clic sur icon [ ... ] à côté de la liste déroulante [ Procédure événementielle ]
tu attérit :
Private Sub Modifiable12_AfterUpdate() ' Tu ajoute ces lignes ... If ((Me.Modifiable12.Text <> "") And (Me.Modifiable14.Text <> "")) Then Call Test End If End Sub ' Private Sub Modifiable14_AfterUpdate() ' Tu ajoute ces lignes ... If ((Me.Modifiable12.Text <> "") And (Me.Modifiable14.Text <> "")) Then Call Test End If End Sub '
dans la routine [ Test ], il faut modifier :
Critere1 = "#" & Me.Modifiable14.Text & "#" Critere2 = "#" & Me.Modifiable12.Text & "#"
et ici, il faut indiquer quel est le formulaire que l'on veut ouvrir !
DoCmd.OpenForm "formulaire_Specifique", acNormal, "", "[Fin_garantie]", , acNormal
où [ formulaire_spécifique ] doit être un nom valide de formulaire de la BD.
alors je recherche lequel doit être ouvert ?
Lupin
Le truc, en fait c'est que j'ai la base originale et je l'ai cop[iee 2 fois pour pouvoir essayer plein de truc sans faire n'importe quoi sur la base originale donc je commence a me melanger serieusement les pinceaux. Je crois que je vais pas tarder a te reposer d'autres questions!!!!! et j'en suis desole
If ((Me.Modifiable12.Text <> "") And (Me.Modifiable14.Text <> "")) Then
Cette ligne ne marche pas apparemment (j'ai mis ceci tout a la fin:
Private Sub Modifiable12_AfterUpdate()
' Tu ajoute ces lignes ...
If ((Me.Modifiable12.Text <> "") And (Me.Modifiable14.Text <> "")) Then
Call Test
End If
End Sub
'
Private Sub Modifiable14_AfterUpdate()
' Tu ajoute ces lignes ...
If ((Me.Modifiable12.Text <> "") And (Me.Modifiable14.Text <> "")) Then
Call Test
End If
End Sub
'
Cette ligne ne marche pas apparemment (j'ai mis ceci tout a la fin:
Private Sub Modifiable12_AfterUpdate()
' Tu ajoute ces lignes ...
If ((Me.Modifiable12.Text <> "") And (Me.Modifiable14.Text <> "")) Then
Call Test
End If
End Sub
'
Private Sub Modifiable14_AfterUpdate()
' Tu ajoute ces lignes ...
If ((Me.Modifiable12.Text <> "") And (Me.Modifiable14.Text <> "")) Then
Call Test
End If
End Sub
'
en fait je ne serias plus la a partir de 5h donc je te laisse ma base et si tu as envie d'y jeter un oeil, ne te prive pas!
En tout cas merci beaucoup
https://www.cjoint.com/?eCqUbpWaY5
En tout cas merci beaucoup
https://www.cjoint.com/?eCqUbpWaY5
Bon au final n'etant pas vraiment doue et n'etant pas sur d'avoir de reponse je voudrais juste savoir commenton fait pour juste ecrire une valeur a paritr d'un formulaire,dans les criteres d'une requete
re :
Partons d'un point commun :
Ta base que tu m'as fournit :
http://membre.oricom.ca/lupin/documents/baseprojet.zip
Celui-ci contient :
Base-Projet-Org.mdb [ Le fichier tel que tu me l'as envoyé ]
Base-Projet-Mod.mdb [ Le fichier avec la première étape ]
Étape1
Automatisé l'évènement sur le changement des valeurs dans le formulaire [ Tri_Date ].
Ouvrir le formulaire en mode "modification"
Un clic sur la première liste déroulante ayant l'étiquette [ Date début ] ayant pour nom [ Modofiable14 ]
Un clic sur l'icon Propriétés dans la barre d'outils
Sélectionner l'onglet évènement :
Sélectionner la ligne [ Après MAJ ]
Choisir dans la liste déroulante [ Procédure évènementiel ], clic sur le bouton [ ... ]
arrivé dans le code :
Private Sub Modifiable14_AfterUpdate()
End Sub
Tu dois obtenir, la même chose que dans la BD BaseProjet-Mod.mdb
Y es-tu ?
Lupin
Partons d'un point commun :
Ta base que tu m'as fournit :
http://membre.oricom.ca/lupin/documents/baseprojet.zip
Celui-ci contient :
Base-Projet-Org.mdb [ Le fichier tel que tu me l'as envoyé ]
Base-Projet-Mod.mdb [ Le fichier avec la première étape ]
Étape1
Automatisé l'évènement sur le changement des valeurs dans le formulaire [ Tri_Date ].
Ouvrir le formulaire en mode "modification"
Un clic sur la première liste déroulante ayant l'étiquette [ Date début ] ayant pour nom [ Modofiable14 ]
Un clic sur l'icon Propriétés dans la barre d'outils
Sélectionner l'onglet évènement :
Sélectionner la ligne [ Après MAJ ]
Choisir dans la liste déroulante [ Procédure évènementiel ], clic sur le bouton [ ... ]
arrivé dans le code :
Private Sub Modifiable14_AfterUpdate()
End Sub
Tu dois obtenir, la même chose que dans la BD BaseProjet-Mod.mdb
Y es-tu ?
Lupin