[VBA]Requete & fonction
Résolu/Fermé
A voir également:
- [VBA]Requete & fonction
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Erreur 1004 vba ✓ - Forum VB / VBA
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
5 réponses
Bonjour,
J'ai trouvé dans un bouquin pour acces 97 une procédure
qui fait le travail à merveille pour modifier des requètes
par programmation.
Je l'ai suggérré plus d'une fois mais a prime abord elle peut
paraitre compliqué. En voici un apercu.
La fonction qui sert à modifier la requête :
Cette requete dans être placé dans la section Module de Access.
Au préalable, il te faut créer une requete standard.
Deux parametres sont passer à la fonction, soit le nom de la
requete et la requête elle même.
Pour faire appel a cette requete, voici comment proceder :
Lupin
J'ai trouvé dans un bouquin pour acces 97 une procédure
qui fait le travail à merveille pour modifier des requètes
par programmation.
Je l'ai suggérré plus d'une fois mais a prime abord elle peut
paraitre compliqué. En voici un apercu.
La fonction qui sert à modifier la requête :
Public Function ChangeRequeteDef(ChaineRequete As String, _ ChaineSQL As String) As Boolean Dim Definition As QueryDef 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
Cette requete dans être placé dans la section Module de Access.
Au préalable, il te faut créer une requete standard.
Deux parametres sont passer à la fonction, soit le nom de la
requete et la requête elle même.
Pour faire appel a cette requete, voici comment proceder :
Private Sub Liste_Cassette_AfterUpdate() ' Ici l'exemple porte sur ma BD de ma vidéothèque. ' Une liste déroulante me permet de sélectionner ' un paramètres quelconque de ma requete, ici ' c'est le numéro de cassette Dim Chaine As String Dim Critere As String Dim CassetteVidéo As String Dim Ensemble As Recordset On Error GoTo Liste_Cassette_Err ' Capture du paramètre CassetteVidéo = Forms![Formulaire Table Vidéo].[Liste Cassette] ' Création de la chaine SQL, ici la création se fait en 2 lignes ' par concaténation dans le but de simplifié la compréhension Chaine = "Select * from [Table Vidéo] where [Cassette] = " Critere = Chaine & """" & CassetteVidéo & """" ' La variable critere contient ici la chaine SQL If (ChangeRequeteDef("Requête Liste Spécifique Cassette", Critere)) Then ' Ouverture de la requete modifié Set Ensemble = CurrentDb.OpenRecordset("Requête Liste Spécifique Cassette") Ensemble.MoveLast Ensemble.MoveFirst ' Le but ici étant de déterminer le nombre d'enregistrement 'de la requete. NbrRecherche.Value = Ensemble.RecordCount Ensemble.Close ' Ouverture du formulaire accroché sur cette requete. DoCmd.OpenForm "Formulaire Liste Spécifique Cassette", acNormal, "", "[Cassette]", , acNormal End If Liste_Cassette_Exit: Exit Sub Liste_Cassette_Err: MsgBox Error$ Resume Liste_Cassette_Exit End Sub
Lupin
elle te sert a quoi cette requete precisement g pas compris
une autre façon,
problème posé :
je cite :
Je souhaiterais pouvoir créer une fonction me permettant (ameliorant cette derniere) de pouvoir chargé les listes en passant comme parametre (si cela est possible):
- le nom de la colonne dans la requete
-ainsi que le nom du controle
Fin citation
la requete ici dans mon exemple est :
Chaine = "Select * from [Table Vidéo] where [Cassette] = "
Critere = Chaine & """" & CassetteVidéo & """"
qui se traduit aussi par :
Critere = "Select * from [Table Vidéo] where [Cassette] = " & """" & CassetteVidéo & """"
en fait j'ai commencé par créer une simple requête global
de ma table, je n'accède que très rarement à une table
directement.
la variable "Critère" est la syntaxe de la requête de Type "String"
cette variable est modifiable facilement comme ceci :
Critere = "Sel" & "ect" & " " & "*" & " from " & monNomdeTable.macolonne & " ..."
si j'ai compris l'exercice soumis, il est plus efficace de modifier
la requete elle-même que de passer ces paramêtres à la requête.
la modification de la requete se fait à l'appel de :
If (ChangeRequeteDef("Requête Liste Spécifique Cassette", Critere)) Then
Le nom de la requête à modifier et la "syntaxe" de la requête.
de plus en procédant ainsi, si chaque liste est basé sur une requête, cela multiplit les possibilités de combiné des requëtes
sur les objets d'un formulaire.
c'est très efficace et ça me vient du boucquin sur VBA Access,
si je mets la main dessus je pourrai te fournir la référence
exact mais pour le moment il brille de son abscence :-(
la fonction ChangeRequeteDef est simple !
Lupin
problème posé :
je cite :
Je souhaiterais pouvoir créer une fonction me permettant (ameliorant cette derniere) de pouvoir chargé les listes en passant comme parametre (si cela est possible):
- le nom de la colonne dans la requete
-ainsi que le nom du controle
Fin citation
la requete ici dans mon exemple est :
Chaine = "Select * from [Table Vidéo] where [Cassette] = "
Critere = Chaine & """" & CassetteVidéo & """"
qui se traduit aussi par :
Critere = "Select * from [Table Vidéo] where [Cassette] = " & """" & CassetteVidéo & """"
en fait j'ai commencé par créer une simple requête global
de ma table, je n'accède que très rarement à une table
directement.
la variable "Critère" est la syntaxe de la requête de Type "String"
cette variable est modifiable facilement comme ceci :
Critere = "Sel" & "ect" & " " & "*" & " from " & monNomdeTable.macolonne & " ..."
si j'ai compris l'exercice soumis, il est plus efficace de modifier
la requete elle-même que de passer ces paramêtres à la requête.
la modification de la requete se fait à l'appel de :
If (ChangeRequeteDef("Requête Liste Spécifique Cassette", Critere)) Then
Le nom de la requête à modifier et la "syntaxe" de la requête.
de plus en procédant ainsi, si chaque liste est basé sur une requête, cela multiplit les possibilités de combiné des requëtes
sur les objets d'un formulaire.
c'est très efficace et ça me vient du boucquin sur VBA Access,
si je mets la main dessus je pourrai te fournir la référence
exact mais pour le moment il brille de son abscence :-(
la fonction ChangeRequeteDef est simple !
Public Function ChangeRequeteDef(ChaineRequete As String, ChaineSQL As String) As Boolean Dim Definition As QueryDef 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
Lupin
Merci de vos réponses,
Apres quelque heures de recherche j'ai finit par trouver ma reponse la ou je ne l'attendait pas :)
Encore un grand merci pour l'attention que vous m'avez accordé e;)
Apres quelque heures de recherche j'ai finit par trouver ma reponse la ou je ne l'attendait pas :)
Encore un grand merci pour l'attention que vous m'avez accordé e;)
bjr,
je voudrais savoir a quoi sert le public function!
je viens de commencer!
la reponse fonction publique ne m'interesse pas bien sur lol!
une explication serait mieux!
merci d'avance
alex
je voudrais savoir a quoi sert le public function!
je viens de commencer!
la reponse fonction publique ne m'interesse pas bien sur lol!
une explication serait mieux!
merci d'avance
alex
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
9 juin 2009 à 16:04
9 juin 2009 à 16:04
à quoi sert une requet dans l'access
à quoi sert formulaire dans l'access
à quoi sert les etats dans l'access
à quoi sert formulaire dans l'access
à quoi sert les etats dans l'access