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 :

Utiliser la valeur d'une variable string


Sujet :

Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de vador972
    Profil pro
    Inscrit en
    Août 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 71
    Par défaut Utiliser la valeur d'une variable string
    Bonjour @ tous,
    Je me pose la question suivante, peut-être quelqu'un d'entre vous en a déjà la réponse :

    Disons que dans un formulaire j'ai deux zones de texte : 'Champ1' et 'Champ2'.

    Soit le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim Test as String
     
    Test= Champ1.Name & "=" & Champ2.Name
    Je souhaiterais que le contenu de ma variable 'Test' Soit interprétée dans une conditionnelle. ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If Test then
       Msgbox "Egal"
    Else
       Msgbox "Pas égal"
    End If
    Me suis-je bien expliqué et est-ce possible ? Merci de votre contribution.

  2. #2
    Membre expérimenté
    Inscrit en
    Juin 2006
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 162
    Par défaut
    salut

    regarde ça


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     if me.champ1=me.champ2 then
         Msgbox "Egal"
    Else
       Msgbox "Pas égal"
    End If

    A+

  3. #3
    Membre éclairé Avatar de vador972
    Profil pro
    Inscrit en
    Août 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 71
    Par défaut
    Salut,
    Non ce serait trop facile ...

    En fait le choix de ma conditionnelle n'est pas figé...
    Pour exemple ayez en tête la recherche multicritère de Caféïne. Une variable récupère la string du recordset en fonction des critères de selection. La ce serait la même chose sauf qu'au final j'utiliserai cette variable pour définir les critères de ma conditionnelle.

    Merci d'avance.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    te fatigue surtout pas à ce jeu
    champ1.name renvoie "champ1"
    champ2.name renvoie "champ2"

    Test= Champ1.Name & "=" & Champ2.Name va donc renvoyer

    "champ1=champ2"

    ce qui est bien du texte

    if test va donner des résultats curieux...


    if champ1=champ2 then devrait suffire
    si tu as besoin de conserver test
    cela devient test=champ1=champ2
    if test then

  5. #5
    Membre expérimenté
    Inscrit en
    Juin 2006
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 162
    Par défaut exemple
    tu peux donner un exemple stp

    A+

  6. #6
    Membre éclairé Avatar de vador972
    Profil pro
    Inscrit en
    Août 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 71
    Par défaut
    Random,
    En effet 'if' renverra un booléen. Mais sachant que dans d'autre langages on peut considérer le contenu de la variable, je me demandais si cela était faisable sur vba.

  7. #7
    Membre éclairé Avatar de vador972
    Profil pro
    Inscrit en
    Août 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 71
    Par défaut
    Messieurs,
    Voici mon code :
    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
     
    Private Sub CmdChk_Click()
        On Error GoTo CmdChk_Err
     
        Dim MyRec As Recordset
        Dim MyRecV As Recordset
        Dim MyRec2 As Recordset
     
     
     
        Set MyRec = CurrentDb.OpenRecordset("SELECT * FROM EXEMPLAIRET;")
        If MyRec.RecordCount > 0 Then
            MyRec.MoveFirst
            While Not MyRec.EOF
                MyRec.Delete
                MyRec.MoveNext
            Wend
        End If
     
        Set MyRec = CurrentDb.OpenRecordset("SELECT * FROM EXEMPLAIRE;")
        Set MyRecV = CurrentDb.OpenRecordset("SELECT * FROM EXEMPLAIRE2;")
        Set MyRec2 = CurrentDb.OpenRecordset("SELECT * FROM EXEMPLAIRET;")
     
        MyRecV.MoveFirst
        MyRec.MoveFirst
        MyRec.MoveNext
     
        While Not MyRec.EOF
            If MyRec.Fields(3) = MyRecV.Fields(3) And MyRec.Fields(13) <> MyRecV.Fields(13) Then
                'MyRecV.Fields(3) And MyRec.Fields(2) = MyRecV.Fields(2) And MyRec.Fields(4) = MyRecV.Fields(4) And MyRec.Fields(5) = MyRecV.Fields(5) And MyRec.Fields(6) = MyRecV.Fields(6) And MyRec.Fields(7) = MyRecV.Fields(7) And MyRec.Fields(8) = MyRecV.Fields(8) And MyRec.Fields(9) = MyRecV.Fields(9) And MyRec.Fields(14) <> MyRecV.Fields(14) Then
                With MyRec2
                    .AddNew
                    .Fields(1) = MyRec.Fields(1)
                    .Fields(2) = MyRec.Fields(2)
                    .Fields(3) = MyRec.Fields(3)
                    .Fields(4) = MyRec.Fields(4)
                    .Fields(5) = MyRec.Fields(5)
                    .Fields(6) = MyRec.Fields(6)
                    .Fields(7) = MyRec.Fields(7)
                    .Fields(8) = MyRec.Fields(8)
                    .Fields(9) = MyRec.Fields(9)
                    .Fields(10) = MyRec.Fields(10)
                    .Fields(11) = MyRec.Fields(11)
                    .Fields(12) = MyRec.Fields(12)
                    .Fields(13) = MyRec.Fields(13)
                    .Fields(14) = MyRec.Fields(14)
                    .Fields(15) = MyRec.Fields(15)
                    .Fields(16) = MyRec.Fields(16)
                    .Fields(17) = MyRec.Fields(17)
                    .Update
                End With
            End If
     
            MyRecV.MoveNext
            MyRec.MoveNext
        Wend
        MyRec.Close
        MyRecV.Close
     
     
        Exit Sub
    CmdChk_Err:
        Select Case Err.Number
     
            Case Else
                MsgBox Err.Number & " : " & Err.Description
        End Select
    Explications :
    1) J'ai deux tables doublons : EXEMPLAIRE et EXEMPLAIRE2.
    Au départ je me place sur la deuxième ligne de EXEMPLAIRE et la première de EXEMPLAIRE2
    je fais une recherce pour chaque ligne de EXEMPLAIRE par rapport à la ligne précédente (donc celle de EXEMPLAIRE2) selon les critères défini lors de la clause 'if'.
    Seulement, si je veux changer ces critères je dois à chaque fois modifier directement le code.

    Avec un formulaire contenu des cases à cocher représentant les colones de ma table EXEMPLAIRE je peut stocher dans une variable (En l'ocurrence 'Test') les critères de ma conditionnelle; du genre :
    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
     
    if me.nomdelacheckbox1.selected then
       test=test & "myrec.fields(1)=myrec2.fields(1)"
    end if
     
    if me.nomdelachekbox2.selected then
       test=test & "myrec.fields(2)=myrec2.fields(2)
    end if
    ....
    ....
    if me.nomdelachekboxN.selected then
       test=test & " and myrec.fields(N)=myrec2.fields(N)
    end if
     
    if Test then 'c-a-d  if myrec.fields(2)=myrec2.fields(2) ... and myrec.fields(n)=myrec2.fields(n) then
       ...
       ...
    end if

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/08/2012, 15h09
  2. Réponses: 9
    Dernier message: 06/06/2011, 13h39
  3. Réponses: 4
    Dernier message: 10/10/2010, 23h06
  4. Filtrer en utilisant la valeur d'une variable
    Par Deciprog dans le forum Langage SQL
    Réponses: 6
    Dernier message: 15/04/2010, 18h38
  5. [EVAL] utiliser la valeur d'une variable à partir de son nom
    Par Julien Dufour dans le forum VBA Access
    Réponses: 0
    Dernier message: 24/04/2008, 13h15

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