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 :

Insert SQL + VBA


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 116
    Points : 43
    Points
    43
    Par défaut Insert SQL + VBA
    J'ai une incompatibilité de type ici, je me demande pourquoi?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim mySQL As String
    mySQL = "INSERT INTO A_D ( ID_A ) VALUES ('" + Suivant + "')"
    DoCmd.RunSQL mySQL
    Suivant est un Long, ID_A est un champs de type Numérique.

    Je ne peux pas mettre de valeurs numériques dans une String?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Points : 520
    Points
    520
    Par défaut
    Bonjour,
    Non tu ne peux pas si dans ta table le champ doit contenir un numérique.
    Enlève tes quotes, ça devrait aller beaucoup mieux

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 116
    Points : 43
    Points
    43
    Par défaut
    Merci, mais...j'ai enlevé mes quotes (j'ai essayé plusieurs combinaisons), mais ça a pas changé grand chose
    Pour résumer, je veux insérer le contenu de la variable Suivant (qui est un type Long) dans le champs de type numérique ID_A de la table A_D.
    Je m'y prends mal?

  4. #4
    Membre régulier Avatar de samuelsiffert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 98
    Points : 109
    Points
    109
    Par défaut
    Bonjour

    "Suivant est un Long, ID_A est un champs de type Numérique."
    Il faudrait vérifier que ID_A ait comme taille du champ "entier long" dans les propriétés générales du champ.

    "Je ne peux pas mettre de valeurs numériques dans une String?"
    Bien sûr que si.
    Et inversement, si ta string est en fait un entier, access la castera avant de l'affecter à la valeur du champ
    Logiquement il faut mettre les cotes uniquement pour affecter une string.

    @+

    Sam

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 116
    Points : 43
    Points
    43
    Par défaut
    J'ai bien enlevé les single quotes...Et mon ID_A est bien typé entier long.
    Je suis assez débutant en Access donc j'ai peut-être fait une erreur plus haut, je vous mets le code de la fonction complète, si ça peut aider...
    Ca peut sembler bizarre mais je travaille sur des tables en liaison 1à1 (prolongement, trop de champs sinon). Donc quand je crée un nouvel enregistrement j'ajoute une ID_A dans ma table principale A, mais je dois aussi ajouter un enregistrement ID_A dans les tables liées (A_D ici). J'ai pas trouvé d'autres méthodes...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Sub Numerotation()
     
        Set Db = CurrentDb
        Set Rs = Db.OpenRecordset("SELECT Last(ID_A) AS DernierId from R_ID_INF30K_Only", dbOpenSnapshot)
        Dim Suivant As Long
        Suivant = Rs!DernierId + 1
        Me.DateCreation = Date
        Me.ID_A = Suivant
        Dim mySQL As String
            mySQL = "INSERT INTO A_D ( ID_A ) VALUES (" + Suivant + ")"
         DoCmd.RunSQL mySQL
         End Sub
    Les variables locales au moment du problème sont Suivant := 2 (bonne valeur), mySQL := "" (null, plantage...)

    Doit manquer quelque chose quelque part...

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 047
    Points : 1 042
    Points
    1 042
    Par défaut
    bonjour,

    essai peut etre

    mySQL = "INSERT INTO A_D ( ID_A ) VALUES (" & Suivant & ")"

    Bonne journée

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 116
    Points : 43
    Points
    43
    Par défaut
    Ah ben c'était ça, merci !
    Pourquoi le & alors?

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 047
    Points : 1 042
    Points
    1 042
    Par défaut
    sur access en VBA la concatenation se fait avec & c'est d'ailleurs la meme chose avec le langage SQL d'ACCESS alors qu'en SQL cela serait +.

    Bon WE

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 116
    Points : 43
    Points
    43
    Par défaut
    Je vois... merci
    Ca vient du fait que j'ai plutôt travaillé en SQL avant :p

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

Discussions similaires

  1. [AC-2010] Query SQL VBA (Insert INTO) avec Conditions en variable (Date)
    Par Deustalos dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 12/03/2015, 22h15
  2. [AC-2010] Problème insert mémo sql & vba
    Par JordanITDev dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/01/2014, 12h25
  3. [AC-2000] Erreur insertion SQL VBA avec base répliquée
    Par Tydher dans le forum VBA Access
    Réponses: 4
    Dernier message: 14/06/2011, 10h04
  4. Réponses: 24
    Dernier message: 31/05/2005, 16h07
  5. Export sous forme d'INSERT SQL
    Par Kraken dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 04/09/2003, 12h40

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