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 :

Test Egalité entre 2 string


Sujet :

VBA Access

  1. #1
    Membre régulier Avatar de Frog74
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 171
    Points : 70
    Points
    70
    Par défaut Test Egalité entre 2 string
    Bonjour à tous ,

    j'aurais voulu savoir s'il y avait des choses a savoir sur les tests d'égalité entre 2 strings car ça fais deux fois que j'essai d'élaborer un test entre 2 string et deux fois qu'aucune égalité ne ressort.A chaque fois aucune instruction du IF ne s'effectue.

    voila un 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
      Dim rsStock As DAO.Recordset
      Dim rsMode As DAO.Recordset
      Dim firstS As Integer
      Dim lastS As Integer
      Dim FirstM As Integer
      Dim lastM As Integer
      Dim date1 As Date
      Dim Date2 As Date
      Dim Temps As Long
      Dim sTab(100) As String
      Dim nbevt As Integer
     
      Set rsStock = CurrentDb.OpenRecordset("Stock", dbOpenDynaset)
      Set rsMode = CurrentDb.OpenRecordset("Modes", dbOpenDynaset)
     
      DoCmd.RunSQL "delete from Total"
      nbevt = DCount("*", "Evenements", "[IDMachine]=" & Me.IDMachine.Value)
     
      rsStock.MoveFirst
      firstS = rsStock("ID")
      rsStock.MoveLast
      lastS = rsStock("ID")
     
      rsMode.MoveFirst
      FirstM = rsMode("IDentrée")
      rsMode.MoveLast
      lastM = rsMode("IDentrée")
     
     
      For i = 0 To 2 ^ nbevt - 1
        rsMode.FindFirst ("[IDEntrée]=" & i + 1)
        sTab(i) = rsMode("Mode")
      Next i
     
     
     
      For j = 0 To 2 ^ nbevt - 1
      Temps = 0
      For i = firstS To lastS
        rsStock.FindFirst ("[ID]=" & i)
        If rsStock("NomMode") = sTab(j) Then
            date1 = rsStock("DateDébut")
            rsStock.MoveNext
            If rsStock.EOF = False Then
            Date2 = rsStock("DateDébut")
            Temps = Temps + DateDiff("s", date1, Date2)
            Else
                MsgBox ("Machine toujours en " & Me.Mode.Value)
            End If
        End If
       Next i
       DoCmd.RunSQL "Insert into Total(Mode,Total) values( '" & sTab(j) & "' , " & Temps & " )"
       Next j
     
    End Sub
    rsMode("Mode") est en Texte dans ma table .
    rsStock("NomMode") est en texte dans ma table

    je pense que le problème vient surement des différences de traitement des chaîne de caractère entre access et vba .. mais comme je n'y connait rien je suis un peu bloquer.
    Dois je concaténer de manière à ne prendre que les caractères devant être comparer ? si oui comment ?

    pouvez vous m'aider s'il vous plait?

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Tu peux en premier lieu faire unDebug.Print sur tes deux chaînes, tu sauras si elles sont identiques.

    Perso, pour faire une comparaison, je le fais soit en UCase ou en LCase, on évite ainsi les problèmes liées aux majuscules.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 626
    Points : 726
    Points
    726
    Par défaut Correspondance
    Salut,

    Pourquoi tu ne fais pas une requête de correspondance ? entre les 2 tables.
    a+

  4. #4
    Membre régulier Avatar de Frog74
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Je bosse pas le vendredi apres midi , et la je suis plongé dans les épisodes de claymore , je lache pas l'affaire , je vais persévérer biensur , mais pas avant ce soir ou demain biensur.
    Je ne sais pas encore ce que sont Lcase et Ucase , je ferai une recherche.
    Je ne connais pas debugprint , je suppose qu'il sort exactement ce que vaut la chaîne ..
    A propos de la requête , j'ai pensé en premier lieu à en faire une , mais vu tout ce que je dois faire en un seul traitement , la requete que j'ai pensé faire ne serait pas "insérable" dans le code ( si ça se dit ).

    Merci pour le moment , je met le poste a jour d'ici demain maximum.

  5. #5
    Membre régulier Avatar de Frog74
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    J'ai résolu le problème , mon tableau de string bouchai les trous avec des espaces .. donc il a fallu les enlever.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = 0 To 2 ^ nbevt - 1
        rsMode.FindFirst ("[IDEntrée]=" & i + 1)
        sTab(i) = rsMode("Mode")
      Next i
    Se transforme en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = 0 To 2 ^ nbevt - 1
        rsMode.FindFirst ("[IDEntrée]=" & i + 1)
        sTab(i) = rsMode("Mode")
        sTab(i) = replace(stab(i)," ",vbBullString) 
      Next i
    Ensuite la comparaison se fait a nombre de caractère égale et donc forcément je tomberai sur une égalité.

    A+

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Pour répondre à la Question de UCase et LCase.
    UCase : Upper Case transforme les caractères en Majuscule
    LCase : Lower Case fait le contraire.


    Une Debug.Print a affiche la valeur de a dans la fenêtre d'exécution obtenue par la combinaison Ctrl + G
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Membre régulier Avatar de Frog74
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Merci.

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

Discussions similaires

  1. Egalite entre 2 string
    Par Paniez dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 05/07/2011, 14h12
  2. Test Egalite string (super basique)
    Par ced600 dans le forum VBScript
    Réponses: 1
    Dernier message: 07/12/2007, 15h59
  3. Realiser des tests exhaustifs sur les String
    Par Sarrus dans le forum Langage
    Réponses: 9
    Dernier message: 07/07/2005, 11h52
  4. Différence entre un String et un string ?
    Par pepito62 dans le forum C++Builder
    Réponses: 4
    Dernier message: 24/03/2005, 15h11
  5. [.NET VC++] ou exclusif entre deux String
    Par benoitB dans le forum MFC
    Réponses: 7
    Dernier message: 25/11/2003, 11h20

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