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 :

Problème requête SELECT condition WHERE string


Sujet :

VBA Access

  1. #1
    Membre régulier
    Inscrit en
    Août 2008
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 86
    Points : 77
    Points
    77
    Par défaut Problème requête SELECT condition WHERE string
    Bonjour,

    Je chercher à faire quelque chose de simple, à savoir une requête SQL qui recopie dans une table différente des données en evitant les doublons, en utilisant des recordset.

    Je cherche pour l'instant à sélectionner une plage de données et à l'insérer dans un recordset, mais je ne comprends pas seulement la première donnée est insérée dans le recordset, qui ne contient qu'un champ!

    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
     
    private Sub MAJ_Demandeur()
     
    Dim db As DAO.Database
    Dim rst_Demandeur As DAO.Recordset
    Dim SQL_Demandeur As String
    Dim rcd As DAO.Recordset
     
    Set db = CurrentDb
     
    Set rcd = db.OpenRecordset("SELECT Pays FROM T_EBC1")
     
    'Boucles de test, le second msgbox retourne le message "objet requis" !
    If rcd.EOF Then MsgBox "Erreur" Else MsgBox rcd.Fields(0).Value
         rst.MoveNext
    If rcd.EOF Then MsgBox "Erreur" Else MsgBox rcd.Fields(1).Value
     
    rcd.Close
    rcd = Nothing
     
    End Sub
    Merci, c'est frustrant.

  2. #2
    Membre actif

    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : Luxembourg

    Informations forums :
    Inscription : Septembre 2007
    Messages : 120
    Points : 257
    Points
    257
    Par défaut Problème requête SELECT [basique]
    Bonjour,

    Voilà déjà la boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    'On attache les tables à la variable table
    Set rstTblTemp_1 = CurrentDb.OpenRecordset("TblTemp_1", dbOpenDynaset)
    Set rstTblFinal_1 = CurrentDb.OpenRecordset("TblFinal_1", dbOpenDynaset)
     
        rstTblTemp_1.MoveFirst
            Do While Not rstTblTemp_1.EOF
                rstTblFinal_1.AddNew
                        rstTblFinal_1!Champ1 = rstTblTemp_1! Champ1
                        rstTblFinal_1! Champ2 = rstTblTemp_1! Champ2
                        rstTblFinal_1! Champ3 = rstTblTemp_1! Champ3
                    rstTblFinal_1.Update
                rstTblTemp_1.MoveNext
            Loop
    Bonne soirée

  3. #3
    Membre régulier
    Inscrit en
    Août 2008
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 86
    Points : 77
    Points
    77
    Par défaut
    Merci, ça marche bien.

    Je met mon code par la suite pour ceux qui tomberont sur le topic avec ce genre de problème.

    Par contre, j'ai une question simple, comment faire une requête SELECT sur un string? Comment faut il le mettre en forme? Par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set rstT_Programme = CurrentDb.OpenRecordset("SELECT * FROM T_Programme WHERE T_Programme.Nom = '" Francis "' ")
    ne marche pas! Comment faut-il mettre en forme ce " T_Programme.Nom = '" Francis "' " ?

    Merci beaucoup!

    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
     Dim db As DAO.Database
    Dim rstT_Demandeur, rstT_EBC1 As DAO.Recordset
    Dim a As Boolean
     
    Set db = CurrentDb
    a = False
     
    'On attache les tables à la variable table
    Set rstT_EBC1 = CurrentDb.OpenRecordset("T_EBC1", dbOpenDynaset)
    Set rstT_Programme = CurrentDb.OpenRecordset("T_Programme", dbOpenDynaset)
     
    'Mise à jour des champs de nom
    Do While Not rstT_EBC1.EOF
            ' Si le champ Nom de l'EBC est nul on passe à la case suivante, sinon
            'on parcourt la table demandeur pour voir si le nom existe déja.
            ' A noter que les colonnes de programme sont programme, origine, pays, demandeur, budget, budget oui/non,
            'les colonnes numéro 5, 3, 4, 13,
       If IsNull(rstT_EBC1.Fields(5)) = False Then
     
            If rstT_Programme.RecordCount > 0 Then
                rstT_Programme.MoveFirst
             Do While (Not rstT_Programme.EOF) And a = False
                  If rstT_Programme.Fields(0).Value = rstT_EBC1.Fields(5).Value Then a = True Else rstT_Programme.MoveNext
             Loop
      End If
           'Si le nom n'existe pas, autrement dit a = False, on l'insère
             If a = False Then
               rstT_Programme.AddNew
              rstT_Programme.Fields(0).Value = rstT_EBC1.Fields(5).Value
               rstT_Programme.Fields(1).Value = rstT_EBC1.Fields(3).Value
              rstT_Programme.Fields(2).Value = rstT_EBC1.Fields(4).Value
              rstT_Programme.Fields(3).Value = rstT_EBC1.Fields(13).Value
              rstT_Programme.Update
             End If
        End If
        a = False
        rstT_EBC1.MoveNext
    Loop
     
    'Fermeture des objets
    rstT_EBC1.Close
    rstT_Programme.Close
     
    Set rstT_EBC1 = Nothing
    Set rstT_Programme = Nothing

  4. #4
    Invité
    Invité(e)
    Par défaut
    Essaies ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OpenRecordset ("Select * From T_Programme Where T_Programme.Nom Like 'Francis' "

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

Discussions similaires

  1. Problème requête SELECT ORACLE
    Par vizlebiz dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/02/2008, 16h20
  2. Problème requête avec condition
    Par Flo88 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 22/02/2008, 11h43
  3. Problème requête avec condition
    Par Flo88 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 22/02/2008, 10h59
  4. Problème Requête SELECT sur champ texte
    Par arnaud_verlaine dans le forum WinDev
    Réponses: 5
    Dernier message: 02/10/2007, 21h19
  5. [SQL] Problème requête SELECT
    Par dolf13 dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 04/07/2006, 23h54

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