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 :

INSERT INTO depuis recordset [AC-2003]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Octobre 2009
    Messages : 127
    Par défaut INSERT INTO depuis recordset
    Bonjour à tous,

    J'essaye donc de réaliser un recordset puis d'ajouter le résultat de ce recordset à une table.

    ( J'ai cherché à créer une table qui soit l'image de mon recordset mais en vain alors j'essaye ainsi ... )

    J'ai essayé avec le code suivant :

    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
    Public Sub Interface()
     
    Dim strSQL As String
    Dim taBdd As Database
    Dim rst As DAO.Recordset
    Set Db = Application.CurrentDb
    Dim var1 As String
    Dim var2 As String
     
    strSQL = "SELECT d.Compte, f.Compte_Magnitude " _
           & "FROM DIM_compte AS d, FAC_Interface AS f " _
           & "WHERE d.Compte LIKE '*' + f.Account + '*' ;"
     
     
    Set rst = Db.OpenRecordset(strSQL)
     
    i = 0
     
    While (i < rst.RecordCount)
     
    var1 = rst.Fields("d").Value
    DoCmd.RunSQL ("INSERT INTO TABLE VALUES (" & var1 & "," & var2 & ") ")
    i = i + 1
     
    Wend
     
    End Sub
    Mais j'ai l'erreur :

    " Element non trouvé dans cette collection "

    Une idée ?

    Cordialement,

  2. #2
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 050
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 050
    Par défaut
    Bonsoir,

    1 - Tu n'as pas déclaré DB

    2 - var1 est un String
    3 - où initialises tu var2 ?

    alors il faut :
    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
     
    Public Sub Interface()
     
    Dim strSQL As String
    Dim Db As DAO.Database
    Dim rst As DAO.Recordset
    Dim var1 As String
    Dim var2 As String
     
    Set Db = Application.CurrentDb
     
    strSQL = "SELECT d.Compte, f.Compte_Magnitude " _
           & "FROM DIM_compte AS d, FAC_Interface AS f " _
           & "WHERE d.Compte LIKE '*' + f.Account + '*' ;"
     
    Set rst = Db.OpenRecordset(strSQL)
     
    While not rst.EOF
     
    var1 = nz(rst!d)
     
     
    DoCmd.RunSQL ("INSERT INTO TABLE (champ1, champ2)  VALUES ('" & var1 & "','" & var2 & "') ")
     
    wend
     
    set rst=nothing
    set db=nothing
    End Sub

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Octobre 2009
    Messages : 127
    Par défaut
    Bonsoir !

    En premier lieu merci de cette réponse,

    En effet je n'avais pas déclaré ma base ... Et voulant essayer si ma méthode marchait avec var1 je n'ai même pas attribué var2 ...

    Cependant à quoi correspont nz(rst!d) ?

    J'ai compris qu'il sagissait de trouver la valeur du champ d dans le recordset rst mais à quoi sert nz ?( google m'aiderai mais bon ... )

    Cordialement,

  4. #4
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 050
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 050
    Par défaut
    rst!d
    renvoie la même valeur que rst("d") ou rst.fields("d") mais en plus condensé
    Quant à la fonction NZ() elle retourne toujours une valeur non nulle : vois l'aide par F1


  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Octobre 2009
    Messages : 127
    Par défaut
    Ok ! Merci bien ;-)

    Je n'arrive décidement pas à faire ce qu'il faut ....

    J'ai ,dans une table "LISTE", un champ A contenant une suite de compte :
    A : A2020,A4030,A5060 <---( 1 seule enregistrement tel quel)

    Auquel est associé dans cette même table un champ B :
    B : MG045

    En gros aux comptes A2020,A4030,A5060 est associé le compte MG045

    D'un autre coté j'ai une table "DIM" répertoriant tous les comptes A, cette fois bien structuré, i.e 1enregistrement = 1compte.

    Je cherche là à associé chaque enregistrement de ma table "DIM" au champ B qui lui est associé ...

    Une idée ?

    Merci d'avance,

  6. #6
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 050
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 050
    Par défaut
    e cherche là à associé chaque enregistrement de ma table "DIM" au champ B qui lui est associé
    Pense à utiliser la fonction de domaine Dlookup(),
    quelquechose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     SELECT DIM.Compte , Dlookup( "B", "Liste", "A Like '*" & DIM.compte & "*'")
    FROM DIM
    à adapter à tes champs, of course

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

Discussions similaires

  1. "INSERT INTO" et recordsets
    Par zouhenlai dans le forum VBA Access
    Réponses: 6
    Dernier message: 30/05/2008, 12h58
  2. insert into depuis formulaire avec condition
    Par vinc54 dans le forum VBA Access
    Réponses: 1
    Dernier message: 22/05/2008, 11h37
  3. Insert into depuis une autre base
    Par frikazoide dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 27/07/2007, 22h29
  4. INSERT INTO et recordset: date inseree le 30/12/1899
    Par catoucat dans le forum Access
    Réponses: 4
    Dernier message: 05/07/2006, 06h30
  5. Requete insert into depuis une zone de liste
    Par fredhali2000 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 07/06/2006, 15h23

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