[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
29 avril 2008 à 16:52
re :

maintenant, tu ajoute le code comme suit :

Private Sub Modifiable12_AfterUpdate()
    
    If (Me.Modifiable12.Text <> "") Then
        Me.Modifiable14.SetFocus
        If (Me.Modifiable14.Text <> "") Then
            MsgBox "Date début et final"
        Else
            MsgBox "Date début manquante"
        End If
    End If

End Sub
'

Private Sub Modifiable14_AfterUpdate()

    If (Me.Modifiable14.Text <> "") Then
        Me.Modifiable12.SetFocus
        If (Me.Modifiable12.Text <> "") Then
            MsgBox "Date début et Date final"
        Else
            MsgBox "Date final manquante"
        End If
    End If
    
End Sub
'


donc ici, dans un premier temps on valide l'évènement [ Après MAJ ]
de chaque liste.

Une fois ce code ajouter, si tu choisi des dates dans le formulaire,
vois-tu apparaître les [ MsgBox ] de dates ?

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:59
Tout a fait ca apparait par contre je suis desole mais je dois y aller et je ne re viens que vers 9h donc dit moi ce qu il reste a faire et si mes 2 neurones ont toujours pas reussi a se connecter, et bin je verrais en tout cas merci merci merci
0
Utilisateur anonyme
29 avril 2008 à 21:03
re :

j'ai modifié étape par étape pour obtenir le résultat escompté.

Regarde cela un peu, et dis moi ce que tu en comprends.

n.b. Le formulaire Tri-Date pourrait être complètement
......intégré dans le formulaire Formulaire_Maintenance_Globale

BasePorjet-Mod1.ndb
BasePorjet-Mod2.ndb
BasePorjet-Mod3.ndb

http://membre.oricom.ca/lupin/documents/baseprojet.zip

Avec ces étapes je pourrai te guider :-)

@+
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 à 21:58
la je n'arrive pas a lire les fichiers de chez moi donc je regarderais ça demain matin et je te dirais en tout cas merci bien
0
seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008 5 > seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008
30 avril 2008 à 09:33
Bon la ca y est j'ai compris je te remercie, je vais maintenant appliquer ceci aux autres parametres pour voir si j'ai assimile!!
Mon ultime petite question, c'est comment ca se fait qu'il manque certaine references dans le formulaire intermediaire "F_Selection" alors qu'elles sont toutes dans "Formulaire_Maintenance_Globale"?
En tout cas la c'est vraiment bon je crois que pour ce probleme, tu m'as montre la soluion merci beaucoup
0
seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008 5
30 avril 2008 à 10:02
Deuxieme petite remarque, j'ai change les < et > en <= et >= mais je n'ai que la valeur de la borne inferieure et pas la valeur de la borne superieure, comment se fais-ce?
0
Utilisateur anonyme
30 avril 2008 à 13:19
re :

J'ai observé un problème semblable lorsque j'ai ajouté le tri dans la requête :

ORDER BY [Maintenance].[Fin_garantie]

le tri ne s'effctuait pas, je soupconne un problème de typage !

Est-ce que les champs de dates sont bien des champs dates ?

Pour le formulaire F_Selection, celui-ci est accroché sur la requête modifiable
par programmation, alors lorsque celui-ci est ouvert, il réflète l'état de la requête.

Alors que le formulaire Formulaire_Maintenance_Globale est accroché sur une requête
fixe et globale qui prend toute la table.

Toujours suivre l'ordre : Table -> Requête -> Fromulaire

Le formulaire est accroché sur la requête et la requête sur la table.

@+
Lupin
0
seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008 5
30 avril 2008 à 13:49
si tu veut dire que les champs de date sont de type date, alors oui c'est bien ca; par contre je voudrais savoir comment tu fait pour accrocher un formulaire a une requete? car je crois que pour l instant c'est tout ce que je n'arrive pas a faire
0
seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008 5 > seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008
30 avril 2008 à 13:59
Par contre dans ce que tu m'as envoye y a un pb avec le formulaire "tri_date" car il me lance un debogage quand j'essaie de le faire marcher avec une copie de la meme table; ce seriat cette ligne qui ne fonctionnerait pas:

Definition.SQL = ChaineSQL

dans:
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
'
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
30 avril 2008 à 14:46
re :

Pour accrocher un formulaire sur un requête.

1.) Choisir une table
2.) Créer une requête globale sur cette table
3.) Créer un formulaire

// Formulaire / Nouveau / Assistant Formulaire

Dans la liste déroulante [ Tables/Requêtes ]

Sélectionner la requête visé.

Faire basculer les champs disponibles dans la colonne
des champs sélectionnés.

Suivant - Suivant - etc ...


Pour ce qui est du problème avec l'instruction : [ Definition.SQL = ChaineSQL ]
Cette fonction a été vérifié, testé, éprouvé, donc le problème ne vient pas de la.
En copiant la table, il faut s'assurer que la requête associé est toujours valide.

N'oublie pas, pour être capable de modifier une requête par programmation,
il faut connaître le nom de la requête et son contenu.

Cette requête pointe sur une table, alors si tu modifie le nom de la table,
il devient évident qu'il y aura un problème quelque part.

Toujours garder à l'esprit que les objets sont ainsi attachés :

[ Table ] -> [ Requête ] -> [ Formulaire ]

@+
Lupin



Lupin
0
seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008 5
30 avril 2008 à 15:18
Bon j'ai reessaye en faisant un copier-coller de tous les formulaires eet requetes en question et ca ne marche toujours pas! donc je vais refaire etape par etape comme tu as fait precedemment
Par contre un truc qui n'a rien a voir est ce que tu sais comment on fait pour faire une page de formulaire avec tous les champs (comme la base de video, formulaire "table video" ) parce que je ne vois pas trop non plus comment tu as fait! mais c'est exactement le resultat qu'il me manque
0
seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008 5 > seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008
30 avril 2008 à 15:33
De plus comment as tu fait pour faire le F_Selction2?
0
Utilisateur anonyme
30 avril 2008 à 15:55
re :

"une page de formulaire avec tous les champs"

1.) Choisir une table visé.
2.) Créer un requête visé.

// Requête / Nouveau / Assistant Requête

Dans la liste déroulante [ Tables/Requêtes ]

Sélectionner la table visé.

Faire basculer les champs disponibles dans la colonne
des champs sélectionnés.

Suivant - Suivant - etc ...

3.) Créer un formulaire accroché sur la requête

// Formulaire / Nouveau / Assistant Formulaire

Dans la liste déroulante [ Tables/Requêtes ]

Sélectionner la requête visé.

Faire basculer les champs disponibles dans la colonne
des champs sélectionnés.

Suivant - Suivant - etc ...

--------------------------

F_Selection2 n'est qu'un formulaire de test.
C'est le formulaire "Formulaire_Maintenance_Globale" qui est le bon !

Lupin
0
seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008 5
2 mai 2008 à 11:31
Bonjour,

En fait excuse moi je ne fus pas claire mais je voulais savoir comment mettre tous mes champs de toutes mes tables et les agencer comme tu l'as fait dans ton formulaire " formulaire Table video" de la base Video que tu m'as envoyee, enfin si c'est possible
0
Utilisateur anonyme
2 mai 2008 à 13:15
Bonjour,

1.) Créer une requête globale à l'aide de l'assistant
2.) Insérer toutes les tables une à une et les champs de chaque table ( suivre document word)
3.) Créer un formulaire de la même façon accroché sur la requête globale.

document word : http://membre.oricom.ca/lupin/documents/tables.zip

Avec ces images du doc word, ce devrait être assez simple.

@+
Lupin
0
seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008 5
2 mai 2008 à 13:57
Parfait, merci fort bien;
Premierement, ce que tu m'as explique pendant une semaine, j'ai ENFIN reussi a l'appliquer sur ma base et j'ai meme finalement compris certains codes de vb donc la c'est sur je ne te poserais normalement plus de questions la dessus.

Par contre, par rapport a mon dernier message, j'y suis arrive et dernier detail, je voudrais savoir comment remplace un champ par une liste deroulante, ce qui ferait qu'en selectionnant un nom (par exemple) dans un champ, tous les renseignements associes soient affiches
(toujours comme l'exemple des videos que tu m'avais envoye)
0
seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008 5 > seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008
2 mai 2008 à 14:26
De plus j'ai un petit probleme avec mon formulaire:
quand je met mes champs dans detail,(mode creation) je ne les voit pas en mode feuille de donnes et quand les met dans la partie pied de formulaire ils ne sont pas actifs!
( Ne t'inquietes pas normalement il ne me reste que cette partie a faire dans cette base, tu sera bientot tranquille!!!:-) )
0
Utilisateur anonyme
2 mai 2008 à 17:00
re :

1.) Pour remplacer un champs par une liste déroulante :

Clic droit sur le champ
Sélectionner "Remplacer par" et "zone de liste déroulante"

2.) En mode données, les champs sont invisibles !

Il faudra ajouter les tables une à une dans une requête
ainsi que les champs un à un et valider à chaque étape !

J'ai fait un test globale et j'obtiens le même résultat que toi !
À mon avis, il s'agit d'un problème du à la structure des tables et/ou
des noms de champs qui sont identiques ! Toutefois, je ne suis
pas expert de cette partie.

J'ai toujours fait l'encapsulation des données avant de créer une BD
dans Access, donc mes structures sont hyper simple.

@+
Lupin
0
seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008 5
2 mai 2008 à 17:03
ok bin je regarde ca ce week end merci d avoir depense gracieusement de ton temps pour moi et grace a toi ma prtite BD est presque terminee

a bientot
0
Utilisateur anonyme
2 mai 2008 à 17:19
re :

Bienvenue :-)

Je suis agréablement surpris que tu ais réussi à comprendre la partie
de modification de requête par programmation. Rare sont ceux qui
se sont rendu jusqu'au bout !

Bonne continuité.

Michel ( alias Lupin )
0
seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008 5
5 mai 2008 à 12:14
Bonjour,
La modification ne fut pas trop compliquee car ce n'est que de la logique (la comprehension de tous les codes sera quand meme beaucoup plus dur).
Par contre, au niveau du formulaire, je n'arrive pas a avoir ce que je voudrais: en faisant abstraction du probleme de disparition!, j'arrive a remplacer la textbox par la liste mais j'aimerais avoir une liste du champ en question et faire apparaitre tous les criteres relatifs au champ selectionne, or je n'ai strictement rien dans cette liste comme preselection.

Je ne crois pas etre bien claire mais pour plus de precision tu pourra me demander
0
seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008 5 > seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008
7 mai 2008 à 08:53
Bonjour Lupin.A,

Je te remercie de ta precieuse aide car le resultat obtenu est celui que je cherchais et mon chef en est assez content, ca m'a aussi permis de voir de quoi access etait capable.

Cependant il y a une ultime question dont je n'ai pas encore de reponse:
J'aimerai choisir l'intervalle de dates a partir d'un autre formulaire donc j'ai fait un copier/coller des listes en modifiant le code lie et je n'arrive pas a afficher ma selection dans l'autre formulaire lie( le formulaire F_Selection)

Donc si jamais tu es encore la je crois qu'il ne me reste que ca comme pb a ce jour!
0
seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008 5 > seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008
16 mai 2008 à 09:18
Bonjour Lupin.A

Je crois que je vais encore avoir besoin de tes lumieres!!
Parmi les mutiples choses que je t'avais demande auparavant, il y avait comment modifier les criteres d'une requete par un formulaire (en faisant un intervalle de dates), pour cela il n'ya plus de probleme et j'arrive meme a le transposer pour d'autres applications

En revanche j'aimerais maintenant ne pas choisir un intervalle de dates mais taper une date et en sortir les valeurs superieures.
Voila ce que j'ai tape comme code vba:

Option Compare Database
Sub Test()

'SELECT [Maintenance].[Refgarantie], [Maintenance].[Numlicence_cle], [Maintenance].[Fin_garantie], [Maintenance].[Fin_extension]
'FROM Maintenance
'WHERE ((([Maintenance].[Fin_garantie])>#1/1/2007# And ([Maintenance].[Fin_garantie])<#1/1/2008#));

Dim ChaineSQL As String, Critere1 As String

' Critere1 = "#1/1/2007#" ' Pourrait provenir de n'importe où, variable, textbox, etc ...

Critere1 = "#" & Me.Texte0 & "#"

DoCmd.Close acForm, "date_garantie"

ChaineSQL = "SELECT [Maintenance].[Refgarantie], [Maintenance].[Fin_garantie], "
ChaineSQL = ChaineSQL & " " & "FROM Maintenance "
ChaineSQL = ChaineSQL & "WHERE ((([Maintenance].[Fin_garantie])<=" & Critere1 & " "

If (ChangeRequeteDef("R_Validite_garantie2", ChaineSQL)) Then
DoCmd.OpenForm "Maintenance", acNormal, "", "[Fin_garantie]", , acNormal
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
'

Private Sub Texte0_Change()

End Sub

Je pense qu'il y a des erreurs( puisque ca marche pas) et je voudrais savoir si tu as une solution miracle!
merci
0
Utilisateur anonyme
20 mai 2008 à 14:12
Salut,

Je cite :
"et en sortir les valeurs superieures."
Fin de citation


La requête dit :
'WHERE ((([Maintenance].[Fin_garantie])>#1/1/2007# And ([Maintenance].[Fin_garantie])<#1/1/2008#));

ChaineSQL = ChaineSQL & "WHERE ((([Maintenance].[Fin_garantie])<=" & Critere1 & " "

Il me semble que cela devrait être plutôt :

'WHERE (([Maintenance].[Fin_garantie])>#1/1/2007#);

ChaineSQL = ChaineSQL & "WHERE ((([Maintenance].[Fin_garantie])>" & Critere1 & " "

@+
Lupin
0
seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008 5
20 mai 2008 à 14:18
Je suis desole de ne pas avoir repondu mais en fait c'est bon j'ai fait un petit bout de programme ou je click pour faire apparaitre le formulaire souhaite.

Au depart je voulais modifier un peu le programme precedent mais au final j'ai procede autrement. merci quand meme et a bientot
0
seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008 5
20 mai 2008 à 14:33
Par contre j'ai une question autre:

j'ai un sous formulaire contenant tous les champs de toutes mes bases. Il est controle par 3 liste deroulantes (quand chacune des 3 listes a une selection, ca m'affiche ce sous-formulaire)
J'aimerais donc pouvoir saisir de nouvelles references a partir d'un formulaire de ce type mais directement( juste apres avoir ouvert la page) j'ai essaye de faire une macro 'ouvrirFormulaire' avec l'option ajout mais ca ne marche pas, je n'arrive meme pas a modifier les donnees existantes; comment faire?
0
seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008 5
23 mai 2008 à 14:14
Bonjour Lupin.A

oublie ce qui a ete demande auparavant et j'aimerais savoir si tu serais capable de m'aider pour ceci:

http://www.commentcamarche.net/forum/affich 6537984 trois liste dependantes urgent

je te remercie d'avance car j'aimerais le finir avant la fin de journee et c'est ma derniere question sur cette base, apres elle sera utilisable.
0