[access vba] modifier une requete
Fermé
Frankkkk
Messages postés
1
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
25 juillet 2006
-
25 juil. 2006 à 22:50
seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008 - 23 mai 2008 à 14:14
seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008 - 23 mai 2008 à 14:14
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
- 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
Utilisateur anonyme
24 avril 2008 à 14:30
24 avril 2008 à 14:30
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
Utilisateur anonyme
24 avril 2008 à 14:47
24 avril 2008 à 14:47
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
Utilisateur anonyme
24 avril 2008 à 15:33
24 avril 2008 à 15:33
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 :-)
Utilisateur anonyme
25 avril 2008 à 14:29
25 avril 2008 à 14:29
re:
peux-tu déposer ta BD quelques part que je la télécharge pour voir ce qui ne va pas ?
Lupin
peux-tu déposer ta BD quelques part que je la télécharge pour voir ce qui ne va pas ?
Lupin
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
seblekiller_oupas
Messages postés
397
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
13 juin 2008
5
25 avril 2008 à 16:43
25 avril 2008 à 16:43
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
seblekiller_oupas
Messages postés
397
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
13 juin 2008
5
28 avril 2008 à 08:59
28 avril 2008 à 08:59
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.
seblekiller_oupas
Messages postés
397
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
13 juin 2008
5
28 avril 2008 à 09:18
28 avril 2008 à 09:18
apparemment il ne permet pas de deposer des fichiers .MBD, tu n'aurais pas un autre sites?
Utilisateur anonyme
28 avril 2008 à 13:20
28 avril 2008 à 13:20
re :
peut-être juste le zippé !
Lupin
peut-être juste le zippé !
Lupin
seblekiller_oupas
Messages postés
397
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
13 juin 2008
5
28 avril 2008 à 13:23
28 avril 2008 à 13:23
bin c'est fait!!!!!!!!
seblekiller_oupas
Messages postés
397
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
13 juin 2008
5
28 avril 2008 à 13:26
28 avril 2008 à 13:26
http://www.cijoint.fr/cjlink.php?file=cj200804/cijQkDa7yz.zip.
seblekiller_oupas
Messages postés
397
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
13 juin 2008
5
28 avril 2008 à 14:42
28 avril 2008 à 14:42
donc que puis je faire maintenant?
Utilisateur anonyme
28 avril 2008 à 14:47
28 avril 2008 à 14:47
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
seblekiller_oupas
Messages postés
397
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
13 juin 2008
5
28 avril 2008 à 14:49
28 avril 2008 à 14:49
seblekiller_oupas
Messages postés
397
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
13 juin 2008
5
28 avril 2008 à 14:50
28 avril 2008 à 14:50
bon ca marche mais j'ai mis le mauvais!
https://www.cjoint.com/?eCoYPMJylN
https://www.cjoint.com/?eCoYPMJylN
Utilisateur anonyme
28 avril 2008 à 15:27
28 avril 2008 à 15:27
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
seblekiller_oupas
Messages postés
397
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
13 juin 2008
5
28 avril 2008 à 16:03
28 avril 2008 à 16:03
le fichier que tu as regarder s'appelle comment car j'ai modifier les parametres et ca ne marche toujours toujours pas donc j'espere que ca vient de mon formulaire, et que je t enerve pas trop
seblekiller_oupas
Messages postés
397
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
13 juin 2008
5
28 avril 2008 à 16:11
28 avril 2008 à 16:11
Bon vu que je n'y arrive pas je vais tout refaire depuis le debut, je te renverrais, si tu es d'accord la nouvelle base et tu me diras ce qui ne va pas, si elle ne fonctionne toujours pas et apres je te laisserais tranquille
seblekiller_oupas
Messages postés
397
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
13 juin 2008
5
28 avril 2008 à 15:42
28 avril 2008 à 15:42
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
seblekiller_oupas
Messages postés
397
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
13 juin 2008
5
28 avril 2008 à 16:26
28 avril 2008 à 16:26
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
'
seblekiller_oupas
Messages postés
397
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
13 juin 2008
5
28 avril 2008 à 16:46
28 avril 2008 à 16:46
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
seblekiller_oupas
Messages postés
397
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
13 juin 2008
5
28 avril 2008 à 16:47
28 avril 2008 à 16:47
il ne marche plus le lien donc tant pis
seblekiller_oupas
Messages postés
397
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
13 juin 2008
5
29 avril 2008 à 15:31
29 avril 2008 à 15:31
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
Utilisateur anonyme
29 avril 2008 à 16:14
29 avril 2008 à 16:14
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
seblekiller_oupas
Messages postés
397
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
13 juin 2008
5
29 avril 2008 à 16:31
29 avril 2008 à 16:31
oui la j'obtient juste
Private Sub Modifiable14_AfterUpdate()
End Sub
(juste encore merci de gaspiller ton temps pour moi, aujourd'hui ce sera pas long)
Private Sub Modifiable14_AfterUpdate()
End Sub
(juste encore merci de gaspiller ton temps pour moi, aujourd'hui ce sera pas long)
24 avril 2008 à 14:33