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

VBA Access Discussion :

Hier ca marchait aujourd'hui plus rien


Sujet :

VBA Access

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2006
    Messages : 250
    Points : 99
    Points
    99
    Par défaut Hier ca marchait aujourd'hui plus rien
    Bonjour à tous je me permets de poster mon code ici, hier mon appli fonctionnait parfaitement et aujourd'hui plus rien ! Je ne sais pas si j'ai effacer quelque chose par mesgarde c'est pourquoi j'aimerai que vous analisiez mon code car vous avez l'oeil avertit :
    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
    Option Compare Database
    Option Explicit
     
    Private Sub RefreshQuery()
    Dim SQL As String
    Dim SQLWhere As String
     
    SQL = "SELECT * FROM tbl_Pc WHERE tbl_Pc.ID <>" & "0"
     
    If Not Me.chk_Pc Then
        SQL = SQL & " And tbl_Pc.ID like '*" & Me.txt_Pc & "*'"
    End If
    If Not Me.Chk_Type Then
        SQL = SQL & " And tbl_PC.Type = '" & Me.lst_Type & "'"
    End If
    If Not Me.chk_User Then
        SQL = SQL & " And tbl_Pc.IDUser like '*" & Me.txt_User & "*'"
    End If
     
     
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") - 1))
     
    SQL = SQL & ";"
    'MsgBox (SQL)
    Me.lst_Results.RowSource = SQL
    Me.lst_Results.Requery
    End Sub
     
     
    Private Sub chk_Pc_Click()
      If Me.chk_Pc Then
            Me.txt_Pc.Visible = False
        Else
            Me.txt_Pc.Visible = True
        End If
    RefreshQuery
    End Sub
     
    Private Sub Chk_Type_Click()
        If Me.Chk_Type Then
            Me.lst_Type.Visible = False
        Else
            Me.lst_Type.Visible = True
        End If
    RefreshQuery
    End Sub
     
     
    Private Sub chk_User_Click()
        If Me.chk_User Then
            Me.txt_User.Visible = False
        Else
            Me.txt_User.Visible = True
        End If
    RefreshQuery
    End Sub
     
    Private Sub Form_Load()
    'Au chargement du formulaire on verifie et on met à vide ou à faux tous les éléments du formulaire [Me.(QuelqueChose)]
        Dim ctl As Control
     
    For Each ctl In Me.Controls
        Select Case Left(ctl.Name, 3)
            Case "chk"
                ctl.Value = -1
     
            Case "txt"
                ctl.Visible = False
                ctl.Value = ""
     
        End Select
    Next ctl
     
    Me.lst_Results.RowSource = "Select * From tbl_Pc ;"
    Me.lst_Results.Requery
     
    End Sub
     
     
    Private Sub lst_Results_DblClick(Cancel As Integer)
     
        DoCmd.OpenForm "frm_Pc", acNormal, , "[tbl_Pc.ID] like " & Me.lst_Results
    End Sub
     
     
    Private Sub lst_Type_BeforeUpdate(Cancel As Integer)
        Call RefreshQuery
    End Sub
     
    Private Sub txt_Pc_BeforeUpdate(Cancel As Integer)
        Call RefreshQuery
    End Sub
     
    Private Sub txt_User_BeforeUpdate(Cancel As Integer)
        Call RefreshQuery
    End Sub

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut
    Bonjour,

    Je n'ai pas vu encore ton bug mais par contre:

    - Pourquoi garde tu le SQLWhere alors que tu ne semble pas l'utiliser?
    - Ne peux tu pas supprimer tes Call devant RefreshQuery? chez moi ca marche sans!

    Je continue a regarder si vois je vois autre chose

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2006
    Messages : 250
    Points : 99
    Points
    99
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") - 1))
    Heuuuuuu tres bonne question
    Voila fini le SQLWhere qui sert a rien
    Merci
    Ok pour les Call ca marche aussi

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2003
    Messages : 53
    Points : 73
    Points
    73
    Par défaut
    salut,

    Petite question peut-être bête mais as-tu ajouté des enregistrements depuis hier?????

    C'est peut-être au niveau des datas????

    bon travail

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2006
    Messages : 250
    Points : 99
    Points
    99
    Par défaut
    Bonjour,
    Merci pour lecompliment
    Non je ne pense pas avoir ajouté de dates

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2003
    Messages : 53
    Points : 73
    Points
    73
    Par défaut
    Re,

    sorry loin de moi l'idée de te jeter l'opprobre... c'est juste pour faire avancer le scmilblik.... je ne parlait pas de DATE mais de DATA ou données??? cela arrive parfois notamment avec les apostrophe dans les noms...

    Tu obtiens quoi comme erreur????

    Si tu lances le formulaire sans sélectionner aucun item.... tu as des datas en résultat???

    Parce que personnellement, je ne vois rien de spécial au niveau du code sql.

    As-tu essayé de récupérer ton code SQl généré dans l'espion pour tester??

  7. #7
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2006
    Messages : 250
    Points : 99
    Points
    99
    Par défaut
    Re,
    Le truc c'est que je n'obtient pas d'erreur hors mi le :
    Type de données incompatible dans l'expression du critère

    cela arrive parfois notamment avec les apostrophe dans les noms...
    Est ce que syntaxiquement c'est correct :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM tbl_Pc WHERE tbl_Pc.ID <>" & "0"
    As-tu essayé de récupérer ton code SQl généré dans l'espion pour tester??
    Je ne connais pas trop ca l'espion

    Si tu lances le formulaire sans sélectionner aucun item.... tu as des datas en résultat???
    La premiere requete celle qui selance au formLoad() me retourne bien tous les resultats

  8. #8
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2006
    Messages : 250
    Points : 99
    Points
    99
    Par défaut
    Je savais bien ques codes faisait souvent bugguer mais habituellement j'en trouvais la cause...
    Appeller moi non pas le codeur mais le buggeur fou !

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2003
    Messages : 53
    Points : 73
    Points
    73
    Par défaut
    re,

    désole mais j'avais du boulot et je n'ai pu te répondre avant.

    Tu as ceci comme début d'instruction sql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim SQLWhere As String
     
    SQL = "SELECT * FROM tbl_Pc WHERE tbl_Pc.ID <>" & "0"
    Pourquoi mettre cette instruction en 2 morceaux??? cela ne sert pas à grand chose.

    indique plutôt ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim SQLWhere As String
     
    SQL = "SELECT * FROM tbl_Pc WHERE tbl_Pc.ID <> 0"
    Ensuite, si tu obtiens des données incompatible dans la sélection du critère.... il faut essayer les critères 1 à 1 et pas tous à la fois.

    Pour ce qui concerne l'espion..... tu fais dans ton code un click droit sur ta variable sql et dans le menu contextuel tu choisis "ajouter un espion" ensuite tu choisi l'option "arrêt lorsque la valeur change". Avec cette manœuvre.... ton code s'arrête à chaque fois que la valeur de ta variable SQL change.... tu récupères ce qu'elle contient via la petite fenêtre placée en bas à droite de l'éditeur VBA.... tu verras c'est très pratique pour débugguer

    Autre suggestion.... mais on suppose bien que pc.id est de format numérique? sinon à la place du <> 0 tu mets Is Not Null


    encore une autre suggestion:

    dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Not Me.Chk_Type Then
        SQL = SQL & " And tbl_PC.Type = '" & Me.lst_Type & "'"
    End If
    me.lst_type tu stockes du texte ? si c'est du numérique du dois enlever les simples quotes.

    Bon travail

  10. #10
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2006
    Messages : 250
    Points : 99
    Points
    99
    Par défaut
    Re,
    Merci pour ces indications , mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = "SELECT * FROM tbl_Pc WHERE tbl_Pc.ID <>" & "0"
    je ne peut me permettre de mettre le 0 hors quotes car dans la BDD c'est un type 'Texte' il s'agit des ID de mes PC qui seront par la suite dans la 'vraie' base une adresse MAC .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    il faut essayer les critères 1 à 1 et pas tous à la fois
    Je ne comprend pas de trop ce que cela veut dire.

    Merci pour l'espion je vais expérimenter cela tout de suite .

    En ce qui concerne lst_Type effectivement c'est du texte issu d'une requete

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2003
    Messages : 53
    Points : 73
    Points
    73
    Par défaut
    re,

    pour les critères .... je voulais dire d'essayer un critère à la fois pour voir sur lequel le code bloque...

    Comme ton champ pc.id est de format texte.... essaye ceci à la fin du sql à la place du <> 0 ----> Is Not Null

    Bonne chance avec l'espion

  12. #12
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2006
    Messages : 250
    Points : 99
    Points
    99
    Par défaut
    Re,
    C'est bon enfin j'espere l'erreur provennais de la requete de départ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM tbl_Pc WHERE tbl_Pc.ID <> '0' "
    Ton histoire de quote et de concaténation m'a fait réflechir , et j'ai mis des msgbox un peu partout pour voir les requetes les variables et cela me semblait bizzard , en tout cas ca marche pour le moment vivement demain !

    Merci à vous tous pour vos précieux conseils .
    Nb : J'ai une autre question en ce qui concerne les macros si tu as le temps de jeter un coup d'oeil ? Dis moi si cela ne te derange pas
    Je met résolut sur le sujet.
    Bonne continuation

  13. #13
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2003
    Messages : 53
    Points : 73
    Points
    73
    Par défaut
    bonne nouvelle alors.... effectivement le texte doit toujours etre entouré de simple quote...

    Oui vivement demain (c'est le week-end )

    OK pour la question mais pose la au bon endroit sur le forum.... si j'ai un peu de temps, je passerai y jeter un coup d'œil. Quoi que je ne sois pas un pro de la macro.... j'évite au possible au profit du vba... c'est plus propre

    Bon travail

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

Discussions similaires

  1. Tri le plus proche à la date d'aujourd'hui
    Par yamatoshi dans le forum Requêtes
    Réponses: 3
    Dernier message: 02/10/2008, 11h46
  2. Date la plus proche d'aujourd'hui
    Par santacrus dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 13/09/2008, 09h52
  3. KBluetoothd fonctionnait bien hier, mais plus aujourd'hui
    Par gifffftane dans le forum Réseau
    Réponses: 1
    Dernier message: 17/02/2007, 13h36
  4. [Dates] Date hier et aujourd'hui : mais si on est le 31 ?
    Par psychoBob dans le forum Langage
    Réponses: 4
    Dernier message: 10/06/2006, 16h44
  5. Réponses: 8
    Dernier message: 01/06/2006, 23h27

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