Toute l'actualité de [self-access.com] en direct sur votre ordinateur !  Vous êtes ici : Accueil » Visual Basic » Initiation à VB » L'art de la concaténation » Concaténation multipleConnexion
 


Dans cet article... 
  • Concaténation multiple
  • Etape 1
  • Etape 2
  • Etape 3
  • Etape 4
  • Etape 5
  • Etape 6
  •  Article mis à jour le 16/03/2010

    Concaténation multiple

    Si vous avez lu tous les articles précédents sur la concaténation, vous pouvez maintenant éviter les pièges concernant les types de champs (Numérique, Texte, Date/Heure). Compliquons un peu le scénario en mélangeant plusieurs critères à la fois !

    Etape 1

    Comme précédemment, pensons SQL. Voici une instruction dont le critère repose sur 3 champs, de types différents (un nombre, un texte, une date) :

    Etape 2

    On intègre cette instruction SQL au langage VB :

    Etape 3

    On repère les valeurs variables.

    • Je n'affiche que la partie de la chaîne qui démarre au WHERE, sinon vous ne verrez plus rien à l'écran...
    • Vous remarquerez que cette fois, je considère que les signes # font partie de la valeur Date. Je suppose en effet que la date sera formatée par la fonction DateUS(), qui génère les # elle-même.

    C'est ici que ça commence à devenir lourd : on découpe la chaîne autour de toutes les valeurs brutes. Beaucoup de valeurs, donc beaucoup de segments au final...

    Ce qui donne, après la découpe :

    Etape 4

    Repérez tous les segments invariables (donc les chaînes de caractères "pures") et rectifiez-les pour les "fermer" par des guillemets :

     

    Etape 5

    On peut remplacer les valeurs brutes par des variables (que j'appelle v1, v2 et v3) :

    v3 étant une variable de type Date, n'oubliez pas de la retraiter via la fonction DateUS().

    Etape 6

    Ouf ! Apuka concaténer les différents segments :

    Et voici ce que pourrait donner le programme final.
    La ligne 13 est simple et digeste comme on les aime. Smiley 
    Et encore, je n'ai pas ajouté le Replace() pour retraiter valeur2, qui est de type Texte !

    1. Sub ExecuterSQL()
    2.   Dim sql As String
    3.   Dim valeur1 As Integer
    4.   Dim valeur2 As String
    5.   Dim valeur3 As Date
    6.  
    7.   ' Initialisation de l'instruction SQL
    8.   valeur1 = 12
    9.   valeur2 = "AB99"
    10.   valeur3 = #12/15/2017#
    11.  
    12.   ' Injection des valeurs par concaténation
    13.   sql = "DELETE * FROM [la table] WHERE [champ1] = " & valeur1 & " AND [champ2] = '" & valeur2 & "' AND [champ3] = " & DateUS(valeur3) & ";"
    14.  
    15.   ' Exécution de l'instruction SQL
    16.   CurrentDb.Execute sql
    17. End Sub

    Mes livres sur Access...
    [cliquez pour plus d'infos]





    Hit-Parade 
     
    [ Copyright 1997-2018 hervé inisan, self-access.com Reproduction interdite ]