IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

[Access2k]Formulaire de recherche


Sujet :

Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 21
    Points : 12
    Points
    12
    Par défaut [Access2k]Formulaire de recherche
    Bonjour,
    J'ai un probleme avec un formulaire de recherche que j'ai créé a partir de vos tutoriels.
    Voila rapidement la structure de mes tables:
    tblService
    IdentServ identifiant du service
    Service nom du service

    tblPersServ
    IdentifiantEmployé l'identifiant de l'employé
    IdentServ l'identifiant du service
    Date_debut date de l'entré dans le service
    Date_fin date de départ du service

    tblPersonnel
    Identifiant Employé Identifiant de l'employé
    Nom_pers Nom de la personne
    ...

    Voici mes relations:
    Nom : relation.jpg
Affichages : 149
Taille : 12,2 Ko

    et voici le code que j'utilise pour créer le formulaire de recherche pour ma table tblPersServ:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
     
    Option Compare Database
    Private Sub chkNom_Click()
     
    If Me.chkNom Then
        Me.txtNom.Visible = False
    Else
        Me.txtNom.Visible = True
    End If
     
    RefreshQuery
     
    End Sub
     
    Private Sub chkAnnée_Click()
     
    If Me.chkAnnée Then
        Me.txtAnnée.Visible = False
    Else
        Me.txtAnnée.Visible = True
    End If
     
    RefreshQuery
     
    End Sub
     
    Private Sub chkService_Click()
     
    If Me.chkService Then
        Me.cmbService.Visible = False
    Else
        Me.cmbService.Visible = True
    End If
     
    RefreshQuery
     
    End Sub
     
    Private Sub cmbService_BeforeUpdate(Cancel As Integer)
     
       RefreshQuery
     
    End Sub
    Private Sub Form_Load()
     
    Dim ctl As Control
     
    For Each ctl In Me.Controls
        Select Case Left(ctl.Name, 3)
            Case "chk"
                ctl.Value = -1
     
            Case "lbl"
                ctl.Caption = "- * - * -"
     
            Case "txt"
                ctl.Visible = False
                ctl.Value = ""
     
            Case "cmb"
                ctl.Visible = False
     
        End Select
    Next ctl
     
    Me.lstResults.RowSource = "SELECT tblPersServ.IdentifiantEmployé, _
     tblPersonnel.Nom_pers, tblPersServ.IdentServ, tblService.Service, _
     tblPersServ.Date_debut, tblPersServ.Date_fin FROM tblService INNER JOIN _
     (tblPersonnel INNER JOIN tblPersServ ON tblPersonnel.IdentifiantEmployé = _
     tblPersServ.IdentifiantEmployé) ON tblService.IdentServ = _
     tblPersServ.IdentServ;"
    Me.lstResults.Requery
     
    End Sub
     
    Private Sub RefreshQuery()
    Dim SQL As String
    Dim SQLWhere As String
     
    SQL = "SELECT tblPersServ.IdentifiantEmployé, tblPersonnel.Nom_pers, _
     tblPersServ.IdentServ, tblService.Service, tblPersServ.Date_debut, _
     tblPersServ.Date_fin FROM tblService INNER JOIN (tblPersonnel INNER JOIN _
     tblPersServ ON tblPersonnel.IdentifiantEmployé = _
     tblPersServ.IdentifiantEmployé) ON tblService.IdentServ = _
     tblPersServ.IdentServ Where tblPersServ!IdentifiantEmployé <> 0 "
     
    If Not Me.chkNom Then
       SQL = SQL & "And tblPersServ!IdentifiantEmployé like '*" & Me.txtNom & "*' "
    End If
    If Not Me.chkAnnée Then
       SQL = SQL & "And Year(tblPersServ!Date_debut) = '" & Me.txtAnnée & "' "
    End If
    If Not Me.chkService Then
       SQL = SQL & "And tblPersServ!IdentServ = '" & Me.cmbService & "' "
    End If
     
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
     
    SQL = SQL & ";"
     
    Me.lblStats.Caption = DCount("*", "tblPersServ", SQLWhere) & " / " & DCount("*", "tblPersServ")
    Me.lstResults.RowSource = SQL
    Me.lstResults.Requery
     
    End Sub
     
     
    Private Sub lstResults_DblClick(Cancel As Integer)
     
       DoCmd.OpenForm "FormtblPersServ1", acNormal, , "[IdentifiantEmployé] = " & Me.lstResults
     
    End Sub
    Private Sub txtNom_BeforeUpdate(Cancel As Integer)
     
    RefreshQuery
     
    End Sub
    Private Sub txtAnnée_BeforeUpdate(Cancel As Integer)
     
    RefreshQuery
     
    End Sub
    Tout fonctionne sauf la combo box Service qui quand je la decoche pour faire mon choix provoque une erreur d'execution '3464'
    et me renvoi a la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.lblStats.Caption = DCount("*", "tblPersServ", SQLWhere) & " / " & DCount("*", "tblPersServ")
    avec comme definition:
    "l'identificateur sous le curseur n'est pas reconnu."

    quand je met cet ligne en commentaire , les champ apparaisse bien dans la combo box Service mais ne renvoi aucun résultat.

    Avez vous une solution ??

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 552
    Points
    24 552
    Par défaut
    Bonjour,

    Je ne connais pas bien ce tuto mais regarde si le controle lblStats est une étiquette et non une zone texte.

    Ensuite je remarque que dans tes requete et composition tu utilise le ! comme séparateur table.champ alors qu'il faut normalement un . (point).

    Cela a t-il une influence ? c'est à vérifier.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Merci de ta réponse,
    je viens de changer les "!" par des points cela ne change rien. Pour lblStats c'est bien un intitulé (label) et non une zone de texte.
    Ce code marche tres bien avec le Nom et l'Année mais pas avec la cmbService.
    J'ai essayé aussi de remplacer la ComboBox par une zone de texte comme Année et Nom et ca produit toujours la meme erreur.
    Pour le tutoriel je met le liens au cas ou.
    http://cafeine.developpez.com/access...echerchemulti/

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 552
    Points
    24 552
    Par défaut
    C'est quoi le type de données de Service ?
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Dans Service
    IdentServ ===> NumeroAuto
    Service ===> Texte

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 552
    Points
    24 552
    Par défaut
    L'erreur vient donc de cette ligne de code. Cette syntaxe est prévue pour du texte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If Not Me.chkService Then
       SQL = SQL & "And tblPersServ!IdentServ = '" & Me.cmbService & "' "
    End If
    NumeroAuto est en Entier long donc numérique. Ecris ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If Not Me.chkService Then
       SQL = SQL & "And tblPersServ!IdentServ = " & Me.cmbService & " "
    End If
    Pour plus d'info regarde les la syntaxe des conditions Where soit dans l'aide en ligne soit dans 3 liens figurant dans le tuto sur la recherche (volume 1) dans mon espace perso. (vers le milieu du tuto, tu ne peux pas les rater ils sont les un à la suite des autres)

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Un grand merci a toi , tout fonctionne a merveille.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Formulaire de recherche multitables
    Par SpyesX dans le forum Access
    Réponses: 7
    Dernier message: 24/11/2005, 11h50
  2. [MySQL] Formulaire de recherche PHP + un script d recherche en HTML
    Par Dsphinx dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 09/11/2005, 19h44
  3. alléger un formulaire de recherche
    Par jarod71 dans le forum Langage
    Réponses: 4
    Dernier message: 28/10/2005, 11h11
  4. Réponses: 3
    Dernier message: 20/10/2005, 12h42
  5. Réponses: 5
    Dernier message: 18/10/2005, 14h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo