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 qui ne marche pas [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 683
    Points : 237
    Points
    237
    Par défaut INSERT INTO qui ne marche pas
    Bonsoir,

    Je souhaite copier un enregistrement d'une table à une autre. J'ai beau essayer dans tous les sens, ma requête ne marche pas. J'obtiens "incompatibilité de type" sur la requête SQL.
    Comme vous pouvez le voir, j'ai besoin d'insérer des variables, des champs venant de l'autre table et du texte. Je pense que je me trompe dans la formulation mais je ne sais pas où.


    Voici le 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
    Dim Message, Title, Default, MyValue
    Message = "Saisir le N° du document à copier"  ' Set prompt.
    Title = "Création d'un BC à partir d'un document existant"    ' Set title.
    Default = "1"    ' Set default.
    ' Display dialog box at position 100, 100.
    MyValue = InputBox(Message, Title, Default, 5000, 3000)
     
    Dim oDb As DAO.Database
    Dim oRst As DAO.Recordset
    Set oDb = CurrentDb
    marequete = "SELECT * FROM dbo_ENTETES_VTES"  'XXXXXXXXXXXX
    Set oRst = oDb.OpenRecordset(marequete)
    NBF = oRst.RecordCount
        If NBF > 0 Then
            While Not oRst.EOF
                    'lecture de la ligne et récup des champs
                    Var0 = oRst.Fields(0)   '   TYP_PIE
                    Var1 = oRst.Fields(1)   '   NUM_SER
                    Var2 = oRst.Fields(2)   '   NUM_PIE
                    Var3 = oRst.Fields(0)   '   COD_CLT
                    Var4 = oRst.Fields(1)   '   DAT_PIE
                    Var5 = oRst.Fields(2)   '   Date_PiŠce
                    Var6 = oRst.Fields(0)   '   p‚riode_piece
                    Var7 = oRst.Fields(1)   '   ann‚e_piece
                    Var8 = oRst.Fields(2)   '   mois_piece
                    Var9 = oRst.Fields(0)   '   jour_piece
                    Var10 = oRst.Fields(1)   '   COD_REP
                    Var11 = oRst.Fields(2)   '   CLT_FAC
                    Var12 = oRst.Fields(0)   '   FLG_MAJ
                    Var13 = oRst.Fields(1)   '   MONTANT_HT
                    Var14 = oRst.Fields(14) '   REF_CMD
                    datejour = Now()
                    vide = Null
                    CO = "CO"
                    E = "E"
    '                    INSERT INTO Store_Information (store_name, Sales, Date)
    '                    SELECT store_name, Sales, Date
    '                    FROM Sales_Information
    '                    WHERE Year(Date) = 1998
                sql = "INSERT INTO [ACCESS_ENTETES_VTES] " _
                & "(TYP_PIE, CODE_STATUT, COD_CLT, DAT_PIE, COD_REP, CLT_FAC, FLG_MAJ, MT_HT, REF_CMD, SERIE_PIECE, " _
                & "TYP_LIGNE, COM1, COM2, COM3, COM4, COM5) " _
                & "SELECT ' " + CO + " ', ' " + CO + " ', ' " + Var3 + " ',  ' " + datejour + " ', ' " + Var10 + " ', " _
                & " ' " + Var11 + " ', ' " + vide + " ',  ' " + vide + " ',  ' " + vide + " ',  ' " + vide + " ',  " _
                & "' " + vide + " ', ' " + E + " ', ' " + vide + " ', ' " + vide + " ', ' " + vide + " ', ' " + vide + " ', " _
                & "' " + vide + " ', " _
                & "FROM [ACCESS_ENTETES_VTES] WHERE NUM_ORD =MyValue;"
     
                CurrentDb.Execute sql
            Wend
        End If
    Quelqu'un saurait-il me dire ce que j'ai de faux ?

    Merci bien

  2. #2
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 899
    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 : 2 899
    Points : 4 789
    Points
    4 789
    Par défaut
    Bonsoir,
    Essaie quelque chose comme ci-dessus, ça pourrait suffire si num_ord est un champ de dbo_entete_vies (mais tu n'en dis pas assez sur la relation entre entre dbo_entete_vies et access_entete_vies) ...

    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
     
    Dim oDb As DAO.Database
     
    Message = "Saisir le N° du document à copier"  ' Set prompt.
    Title = "Création d'un BC à partir d'un document existant"    ' Set title.
    Default = "1"    ' Set default.
    ' Display dialog box at position 100, 100.
    MyValue = InputBox(Message, Title, Default, 5000, 3000)
     
     
                sql = "INSERT INTO [ACCESS_ENTETES_VTES] " _
                & "(TYP_PIE, CODE_STATUT, COD_CLT, DAT_PIE, COD_REP, CLT_FAC,  TYP_LIGNE )  " _
                & " SELECT 'CO ', 'CO',  COD_CLT,  ' " +  now + " ', COD_REP,
    CLT_FAC,  'E' " _
                & "FROM [dbo_ENTETES_VTES] WHERE NUM_ORD =MyValue;"
                debug.print sql
                CurrentDb.Execute sql
     
            Wend
        End If

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour
    J'obtiens "incompatibilité de type"
    A piori un des champs mis à jour n'est pas du type de la variable ( un numérique qui reçoit du texte).
    Mais pour être sût, il faudrait que l'on connaisse le type de données des champs à mettre à jour.

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 703
    Points : 57 276
    Points
    57 276
    Billets dans le blog
    41
    Par défaut
    bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...& "FROM [ACCESS_ENTETES_VTES] WHERE NUM_ORD =MyValue;"
    ce serait pas plutôt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...& "FROM [ACCESS_ENTETES_VTES] WHERE NUM_ORD =" & MyValue & ";"

  5. #5
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 343
    Points : 19 586
    Points
    19 586
    Billets dans le blog
    65
    Par défaut
    Salut,

    Pour compléter toutes ces remarques:

    Le champ DAT_PIE est de quel type ?

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 683
    Points : 237
    Points
    237
    Par défaut
    Merci pour vos réponses.

    Il n'y a aucune relation entre les 2 tables. Je dois copier les données de l'une dans l'autre et elle n'ont pas la même structure. Par contre, sauf erreur de ma part, les champs d'origine et de destination sont du même type.
    En voyant vos réponses, j'ai décidé de tester champ par champ. Ansi je finirais par trouver où ça coince.


    Merci pour votre aide à tous

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

Discussions similaires

  1. INSERT INTO qui ne passe pas !
    Par laurentbatch dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 26/08/2013, 19h38
  2. [MySQL] INSERT INTO qui ne fonctionne pas mais qui fonctionne
    Par quiky dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 09/12/2009, 15h31
  3. [A-03] Insert Into qui n'insère PAS.
    Par Milyshyn76 dans le forum VBA Access
    Réponses: 10
    Dernier message: 23/10/2008, 15h29
  4. Insert into qui ne fonctionne pas ?
    Par Little_flower dans le forum VBA Access
    Réponses: 3
    Dernier message: 05/08/2008, 10h12
  5. [MySQL] INSERT INTO qui ne veut pas marcher
    Par Tee shot dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/03/2007, 17h42

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