Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/03/2011, 14h31   #1
Invité de passage
 
Inscription : mars 2011
Messages : 23
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 23
Points : 4
Points : 4
Par défaut Filtrage de liste

Bonjour à tous,

j'aimerais pouvoir filter sur un formulaire une liste de materiel en fonction de leurs caractéristiques (objets et discipline)
je réussit à filtrer ma liste cependant j'ai un probleme lorsqu'il tombe sur un materiel qui n'exsite pas il m'affiche un formulaire blanc. j'aimerais au contraire qu'il me propose de créer le matériel si celui n'existe pas ou qu'il m'affiche une liste vide mais je n'arrive pas à trouver la bonne condition pour l requete SQL.
voici le code vba pour ma fonction de filtrage :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 
Sub SetFormFilter()
 
    Dim strFilter As String
    Dim strSQL As String
 
 
    strFilter = ""
    If Not IsNull(Me.cmbFilterItem) And Me.cmbFilterItem <> "" Then
        If strFilter = "" Then
           strFilter = " ItemID = " & Me.cmbFilterItem
        Else
            strFilter = strFilter & " AND ItemID = " & Me.cmbFilterItem
        End If
    End If
 
 
    If Not IsNull(Me.cmbFilterDiscipline) And Me.cmbFilterDiscipline <> "" Then
        If strFilter = "" Then
           strFilter = " DisciplineID = " & Me.cmbFilterDiscipline
        Else
            strFilter = strFilter & " AND DisciplineID = " & Me.cmbFilterDiscipline
        End If
    End If
 
    strSQL = "SELECT qryItemDropDown.MaterialDescriptionID, qryItemDropDown.MaterialDescription " _
            & " FROM qryItemDropDown WHERE " & strFilter _
            & " ORDER BY qryItemDropDown.MaterialDescription"
 
 
 
    Me.Filter = strFilter
    Me.FilterOn = True
 
    If strFilter = "" Then
 
        strSQL = "SELECT qryItemDropDown.MaterialDescriptionID, qryItemDropDown.MaterialDescription " _
            & " FROM qryItemDropDown  " _
            & " ORDER BY qryItemDropDown.MaterialDescription"
 
        Me.List0.RowSource = strSQL
 
    ElseIf strSQL = "" Then
        Me.List0.RowSource = ""
 
    Else
        Me.List0.RowSource = strSQL
    End If
 
End Sub
merci pour votre aide
Pierre-alain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 15h04   #2
Membre du Club
 
Homme hadrien
Apprenti Ingénieur
Inscription : mars 2011
Messages : 86
Détails du profil
Informations personnelles :
Nom : Homme hadrien
Localisation : France

Informations professionnelles :
Activité : Apprenti Ingénieur
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : mars 2011
Messages : 86
Points : 56
Points : 56
Bonjour,
tu pourrais créer une recordset basé sur ta requète, tu teste si il n'y a aucun résultat avec recordCount, et dans ce cas la tu n'active pas ta requète, mais tu envoi l'utilisateur dans un formulaire de création de produit, ou tu affiche des inputbox pour créer le nouveau produit.

Tu vois l'idée ?
FtF Nemesis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 15h42   #3
Invité de passage
 
Inscription : mars 2011
Messages : 23
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 23
Points : 4
Points : 4
je vois ce que tu veux dire mais je ne vois pas comment attribuer ma requete à un recordset tu aurais un exemple stp
merci beaucoup
Pierre-alain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 09h24   #4
Membre du Club
 
Homme hadrien
Apprenti Ingénieur
Inscription : mars 2011
Messages : 86
Détails du profil
Informations personnelles :
Nom : Homme hadrien
Localisation : France

Informations professionnelles :
Activité : Apprenti Ingénieur
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : mars 2011
Messages : 86
Points : 56
Points : 56
Bonjour, voici mon exemple :

J'ai mis ça dans l'evenement "après MAJ" (modification) de cboClnt la liste box.

Code :
1
2
3
4
5
6
dim strSQL as string
 
strSQL = "SELECT fldVilleAdres_tblUsn FROM tblUsn WHERE fldClnt_tblUsn" _
& "= Forms![frmRcp].cboClnt.Value"
Me.cboUsn.RowSource = strSQL
Me.cboUsn.Requery
et dans Access, dans propriété de cboUsn, la liste box qui se modifie, dans "contenu" :

Code :
SELECT fldVilleAdres FROM tblUsn WHERE fldClnt=Forms!frmRcp.cboClnt.Value;
Il faut les deux pour que ça marche, le code vba met à jour la requete.

Si tu as besoin de plus de détail ..
FtF Nemesis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 09h44   #5
Invité de passage
 
Inscription : mars 2011
Messages : 23
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 23
Points : 4
Points : 4
j'avais reussit à trouver avec le rstQry.recount comme tu me l'avais proposé avec le code ci dessous
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
Set rstQRY = CurrentDb().OpenRecordset(strSQL)
 
            If rstQRY.RecordCount = 0 Then
                strMessage = "No material found. Do you want to create one?"
                intOptions = vbQuestion + vbOKCancel
                bytChoice = MsgBox(strMessage, intOptions)
                Me.Requery
               If bytChoice = vbCancel Then
                    DoCmd.Close acForm, "frmAtteindreMateriel"
                    DoCmd.OpenForm "frmAtteindreMateriel"
 
                Else
                    DoCmd.OpenForm "frmAddMaterial"
                    cmdCreate_Click
                    DoCmd.Close acForm, "frmAtteindreMateriel"
                    rstQRY.Close
                End If
 
            Else
                Me.List0.RowSource = strSQL
            End If
il m'affichait quand même un formulaire vide j'ai donc bidouillé en fermant et en ouvrant le formulaire de nouveau
Pierre-alain est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h57.


 
 
 
 
Partenaires

Hébergement Web