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

Requêtes et SQL. Discussion :

problème de Insert Into dans une base Access


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Points : 20
    Points
    20
    Par défaut problème de Insert Into dans une base Access
    Bonjour

    J'ai un problème 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
             Dim db As DAO.Database
        Dim db_source As DAO.Database
        Dim fic As DAO.Recordset
        Dim rub As DAO.Recordset
        Dim rub_source As DAO.Recordset
        Dim Req As QueryDef
        Dim strSQL As String
        Dim matricule_recup As String
        Dim valeur_temp As Integer
        Dim valeur_max As Integer
        Dim OTP As String
        Dim CProfit As String
        Dim Montant As String
        Dim Mois As Integer
        Dim compte As String
     
      ' j'ouvre la base qui contient mes données source
        Dim m_met, ind, q_met, d_met, nomreq, q_3quart, q_medi
        Set db = DBEngine.OpenDatabase("Import.mdb")
        Set rub = db.OpenRecordset("SELECT * FROM [CA] WHERE EX=2011 And CPROFIT BETWEEN  'FR020200' and 'FR020299'")
     
    'ici je recupère lechantillon que je veux
     
        ' j'ouvre la base qui va récuperer ces infos
        Set db_source = DBEngine.OpenDatabase (Application.CurrentProject.FullName)
        Set rub_source = db_source.OpenRecordset("SELECT * FROM [CA]")
     
     
     
        Do Until rub.EOF
            'Do Until rub_source.EOF
     
                 rub_source.MoveFirst
                 If rub("OTP") <> "" Then
     
                 OTP_lu = rub("OTP")
                 CProfit_lu = rub("CPROFIT")
                 Montant_lu = rub("MNT")
                 Mois_lu = rub("PERIODE")
                 compte_lu = rub("CPTE")
     
                 Set rub_source = db_source.OpenRecordset("INSERT INTO [CA] (OTP , CCProfit , MNT , CPE , MOIS) VALUES (" & OTP & "," & CProfit & "," & Montant & "," & compte & "," & Mois & ")")
     
     
     
    End if 
     
     
        db.Close
    End Function
    Je cherche à lire une table dans une base access, et ajouter le contenu de cette table dans une autre table d'une autre base Access. Malheureusement cela ne fonctionne pas pourriez vous m'aider? Stp

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Cela ne fonctionne pas , on fait comment pour deviner ce qui ne va pas ? Le code ne fait pas ce que tu attends ? Il y a un message d'erreur ?

    Dans un premier temps :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Do Until rub.EOF
            'Do Until rub_source.EOF
     
                 rub_source.MoveFirst
    Où est la fin de la boucle ? A chaque début tu reviens sur le premier enregistrement

    Dans ta requête Insert, la concaténation de toutes tes variables signifie que toutes tes données sont de type numérique, il faut utiliser les ' pour les champs de type texte.

    Philippe

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Points : 20
    Points
    20
    Par défaut
    Bonjour

    En fait le problème vient uniquement de la requête, apparement j'essaie de rentrer trop de champs dans la ta table.
    Je ne comprends pas car la table [Ca ALEA] contient bien 5 champs et j'essaie d'en ajouter 5. J'ai certainement un problème de type.
    Le problème c'est que j'essaie de récuperer des contenus de variables dans ma requête insert. J'ai l'impression que j'ai un souci de synthaxe.

    La fin de ma boucle est après de end if (pb de couper coller), merci de m'avoir indiquer le problème du MoveFirst Philippe


    Merci d'avance

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Juillet 2006
    Messages : 133
    Points : 90
    Points
    90
    Par défaut
    Bonjour,

    Etant donne que avant ta boucle tu ouvre deja le recordset rub_source n'aurait tu pas envie de faire quelquechose comme ca, qui serqi bcp plus simple ?

    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
    Set db_source = CurrentDB
    Set rub_source = db_source.OpenRecordset("SELECT * FROM [CA_ALEA]")
     
    Do Until rub.EOF
      If rub("OTP") <> "" Then
         rub_source.AddNew
         rub_source.fields("OTP").value = rub("OTP")
         rub_source.fields("CPROFIT").value = rub("CPROFIT")
         rub_source.fields("MNT").value = rub("MNT")
         rub_source.fields("PERIODE").value = rub("PERIODE")
         rub_source.fields("CPTE").value = rub("CPTE")
         rub_source.Update
      end if
      rub.movenext
    loop

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Points : 20
    Points
    20
    Par défaut
    Bonjour GabVoir,

    Sauf erreur de ma part ,je ne peux pas procéder comme ca, car je veux récupérer les données d'une base Access extérieur, lire les données et les ajouter dans une autre base de travail ( qui sera effectivement ma currentdatabase)

    Cordialement

  6. #6
    Membre régulier
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Juillet 2006
    Messages : 133
    Points : 90
    Points
    90
    Par défaut
    Bonjour,

    Si bien entendu !
    Ton recordset rub est bien ouvert sur ta base Import.mdb
    Ton recordset rub_source est bien ouvert sur ta table actuel.

    Juste une petite correction au niveau de la lecture ecriture des champs :
    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
    Set db_source = CurrentDB
    Set rub_source = db_source.OpenRecordset("SELECT * FROM [CA_ALEA]")
     
    Do Until rub.EOF
      If rub("OTP") <> "" Then
         rub_source.AddNew
         rub_source![OTP] = rub![OTP]
         rub_source![CPROFIT] = rub![CPROFIT]
         rub_source![MNT] = rub![MNT]
         rub_source![PERIODE] = rub![PERIODE]
         rub_source![CPTE].value = rub![CPTE]
         rub_source.Update
      end if
      rub.movenext
    loop
    Je viens de penser, si tes deux tables ont la meme structure, le plus simple serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    rqt = "SELECT OTP,CPROFIT,MNT,PERIODE,CPTE FROM [CA] IN ""Import.mdb"" WHERE EX=2011 And CPROFIT BETWEEN  'FR020200' and 'FR020299'"
    db_source.Execute("INSERT INTO [CA_ALEA] (OTP,CPROFIT,MNT,PERIODE,CPTE) " & rqt)

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Points : 20
    Points
    20
    Par défaut
    Merci à vous, ca marche bien.
    C'est génial!!!

    Merci encore

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

Discussions similaires

  1. Insert Into dans une base externe
    Par jnmab dans le forum VBA Access
    Réponses: 2
    Dernier message: 28/02/2013, 08h46
  2. [AC-2007] Insérer le résultat d'un calcul (INSERT INTO) dans une table access
    Par mrpropre99 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 19/04/2010, 00h10
  3. Requete INSERT INTO vers une base ACCESS
    Par Milyshyn76 dans le forum C#
    Réponses: 0
    Dernier message: 04/06/2009, 12h16
  4. Requête d'insertion dans une base ACCESS
    Par kurul1 dans le forum C++Builder
    Réponses: 5
    Dernier message: 02/11/2006, 17h41
  5. [C#] Insertion dans une base Access .mdb
    Par borgfabr dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/03/2005, 15h30

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