[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
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!
A voir également:

51 réponses

Utilisateur anonyme
24 avril 2008 à 14:30
re :

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
0
seblekiller_oupas
24 avril 2008 à 14:33
et elle est ou cete routine je vois absolument pas comment y aller
0
Utilisateur anonyme
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
0
seblekiller_oupas
24 avril 2008 à 14:58
J'arrive toujours pas donc je vais le recommencer et on verra
0
seblekiller_oupas > seblekiller_oupas
24 avril 2008 à 15:23
VERDICT:.........................Toujours pas donc je sais pas si je suis totalement a la masse ou si il y a une toute petite erreur cachee mais ca ne fait pas ce que je voudrais
0
Utilisateur anonyme
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
0
seblekiller_oupas
24 avril 2008 à 15:45
ok jte remercie je regarde ca et je te laisse tranquille
A la prchaine
0
seblekiller_oupas > seblekiller_oupas
25 avril 2008 à 13:59
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 :-)
0
Utilisateur anonyme
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
0
seblekiller_oupas
25 avril 2008 à 14:38
euh oui je peux la metttre ou par exemple?
0

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
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
0
Utilisateur anonyme
25 avril 2008 à 17:26
re :

genre ici : http://www.cijoint.fr/

Lupin
0
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
Desole du retard mais voila ma base de donnee:

http://www.cijoint.fr/cjlink.php?file=cj200804/cijEhEWC9X.zip.
0
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
apparemment il ne permet pas de deposer des fichiers .MBD, tu n'aurais pas un autre sites?
0
Utilisateur anonyme
28 avril 2008 à 13:20
re :

peut-être juste le zippé !

Lupin
0
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
bin c'est fait!!!!!!!!
0
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
http://www.cijoint.fr/cjlink.php?file=cj200804/cijQkDa7yz.zip.
0
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
donc que puis je faire maintenant?
0
Utilisateur anonyme
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
0
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
0
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
bon ca marche mais j'ai mis le mauvais!
https://www.cjoint.com/?eCoYPMJylN
0
Utilisateur anonyme
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 :

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
0
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
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
0
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
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
0
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
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
0
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
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
'
0
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
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
0
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
il ne marche plus le lien donc tant pis
0
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
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
0
Utilisateur anonyme
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
0
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
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)
0