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 :

[VBA-A] requete d insertion,avec valeur provenant de zone de texte.


Sujet :

VBA Access

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 11
    Points
    11
    Par défaut [VBA-A] requete d insertion,avec valeur provenant de zone de texte.
    Pour commencer,bonjour a tous ceux qui vont me lire.

    Etudiant en 1ere annee de bts iris (prog et reseaux) en alternance, je decouvre les joies de l informaique .
    Je suis actuellement en train de developper un projet sur une base de donnee (acces) avec des formulaires proposant aux utilisateurs diverses choix et possibilités (sans rentrer dans le detail) pour mon entreprise.

    J ai passé enormement de temps sur vos faq, et c est une des 1eres fois ou je ne trouve pas le renseignement cherché.

    Venons en aux faits:
    J ai donc un formulaire qui comporte, entre autres, 5 zones de texte et etiquettes correspondant a 5 champs d une même table.
    Je souhaiterai, par un clic sur un bouton commande, que le contenu de ces zones de texte soit inséré dans une table, sur la meme ligne.L utilisateur pourrait alors passer a l enregistrement suivant, et choisir ou non de recliquer sur le bouton commande afin d inserer ou pas l enregistrement suivant dans la table et ainsi de suite.
    Je pense avoir compris qu il fallait que j utilise du sql et l instruction insert pour etre plus precis. J ai lu sur les faq que les zones de texte se nommaient zdt en sql.
    Cependant, je ne sais pas comment preciser le nom de la zone de texte.

    Je recherche donc l instruction sql a insérer dans le code du controle commande(pour vba donc) afin de realiser l operation expliquée ci dessus.

    J espere avoir été clair, demandez moi des precisions si ce n est pas le cas.

  2. #2
    Membre actif Avatar de riesseg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 415
    Points : 251
    Points
    251
    Par défaut
    les zones de texte se nommaient zdt en sql.
    Oo ???

    Ah ?

    C'est pas des tinytext en sql des zones de texte (ouais, bon, moi je connais que le SQL MySQL-PHP, mais bon...)

    enfin, qu'importe...

    Normalement, ta requete SQL devrait ressembler a:


    REQUETE = "INSERT INTO table (texte1, texte2, ...) VALUES "& text1.texte &", "& text2.texte ...

    Ca C'est du SQL sur, mais ptet pas du VBA..

    Mais dans l'enregistrement SQL, si tu es sur de tes variables, tu n'as pas besoin d'en verifier le type

    Edit:
    A la vue du post suivant, il ext vrai que tu doit ptet mettre des simple quote autour de tes variables texte. dans mon exemple ( qui varie un peu de celui de
    malhivertman1 ça donnerai:
    REQUETE = "INSERT INTO table (texte1, texte2, ...) VALUES '"& text1.texte &"',' "& text2.texte &"'...
    n'oubliez pas la balise

  3. #3
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    Salut,

    Dans le sql, pour dire que tu prend une zone de texte, il faut faire par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "INSERT INTO tatable values ('" & tazonedetexte1 & "' , '" & tazonedetexte2 & "' , ect..."
    j'espere qua ca sera clair a tes yeux (la présence de ' puis " et enfin & )
    la simple cote intervient pour le type string il me semble, sinon " & tazone & " suffise

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    j avais oublier de preciser que les valeurs seront de types numeriques et texte.

    J ai lu les faq et connait maintenant la difference au niveau des signes de ponctuation dans la requete sql, je saurais donc (enfin j espere) me debrouiller avec ca.

    Je viens de comprendre que j avais mal compris le contenu de la faq et que zdt indiquait le nom de la zone de texte. Je suis surpris de la simplicité de la solution.
    Je vous remercie pour vos reponses.
    Je vais tester de ce pas, et edit le tag si mon probleme est resolu.
    merci encore, je crois (encore une fois j espere) que vous venez de lever le dernier obstacle pour finir mon projet.

  5. #5
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    n'hesite pas a nous dire si ca ne marche tjs pas

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    heu....ca marche pas.

    voici ce qui est inséré dans la table :
    "& fournisseur.texte &"
    alors que c est le contenu que j essais d inserer.

    Je precise (si c etait pas clair et bien que cela ai surement peu d influence sur le code sql) que je lance cette requete depuis une form par l instruction: "requete.execute"
    La form d ou je lance cette requete etant bien sur la meme que celle ou se trouve les zones de texte.

    voici ma requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO TblNewCommande ( fournisseur )
    VALUES ('"& fournisseur &"');
    TblNewCommande etant la table de destination, fournisseur le champs et le nom de la zone de texte.

  7. #7
    Membre actif Avatar de riesseg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 415
    Points : 251
    Points
    251
    Par défaut
    tu peux faire un copier-coller de ton code en mme temps stp ^^
    juste la requete bien sur


    Mais malhiverman1 arrete de me voler mes repliques
    n'oubliez pas la balise

  8. #8
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    donne ta requete entiere stp


    Dsl on se croise a chaque fois

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    je vens d editer mon precedent message avec les infos demandées.

  10. #10
    Membre actif Avatar de riesseg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 415
    Points : 251
    Points
    251
    Par défaut
    essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    "INSERT INTO TblNewCommande ( fournisseur )
    VALUES ('"& fournisseur.text &"');"
    puis si ca marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    "INSERT INTO TblNewCommande ( fournisseur )
    VALUES ("& fournisseur.text &");"
    Edit; j,ai rajouter des quotes a la fin et au debut de la requete.
    n'oubliez pas la balise

  11. #11
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Juste une remarque

    voici ce qui est inséré dans la table :
    "& fournisseur.texte &"


    Ce ne serait pas plutot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    voici ce qui est inséré dans la table :
    "& fournisseur.text &"

  12. #12
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    Ah oui je n'avais pas precisé, mais qd je mettait
    '" & tontexte & "', je parlais en fait pour l'utilisation d'une variable.

    Donc c'est vrai qu'il est plus judicieux, comme le dit si bien riesseg, de mettre un .text

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    desole mais ca ne marche pas.
    Ce qui est insére dans la table est toujours :
    & fournisseur.text &
    et non pas le contenu de la zoine de texte.

    l erreur pourrait elle venir d autre part?
    le nom de la table, du champs sont les bons, l instruction sql inscrivant bien quelque chose.
    La zone de texte s appelle bien aussi fournisseur.

    edit: j ai enlevé le "e" de texte dans le second test.

  14. #14
    Membre actif Avatar de riesseg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 415
    Points : 251
    Points
    251
    Par défaut
    on peut voir le code en meme temps ( met le a chaque fois que tu change aqqch)
    n'oubliez pas la balise

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    la j en suis a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO TblNewCommande ( fournisseur )
    VALUES ("& fournisseur.text &");
    j ai aussi essayé avec le ' avant puis apres "
    ps: est ce que si stocke le contenu de la zone de texte dans une variable ca serait plus simple??

  16. #16
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    Sinon juste pour voir, essaye

    dim a
    a = fournisseur.text
    INSERT INTO TblNewCommande(fournisseur) values ('" & a & "')
    et essaye aussi de juste enlever le ';' de ta requete

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    la requete n est pas creer en vba, mais sous l editeur d access, qui permet de faire du sql.
    Je ne peux donc enlever le ; de la fin de l instruction, access l interdit.
    Je vais essayer avec la variable, j edite ce message en consequence.
    ps: merci a tous pour le coup de main.

  18. #18
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    ah maic c'est du vba? moi je te parle en vb6 depuis tout a l'heure

  19. #19
    Membre actif Avatar de riesseg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 415
    Points : 251
    Points
    251
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO TblNewCommande ( fournisseur )
    VALUES ("& fournisseur.text &");
    si se code t'affiche [ & fournisseur.text & ] dans ta base de donnée, c'est un probleme de quote...

    perso, ce code, je le garantie pour vb6, mais pour vba ... ...
    atta...


    si il t'insert bien ca dans TblNewCommande, alors fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO TblNewCommande ( fournisseur )
     VALUES ( fournisseur.text );
    raisonnement:
    Il remplace tres bien TblNewCommande par sa vrai valeur, alors qu'il n'y a pas le "& &" donc ca veut dire que vba ne prend pas "& pour differencier des variables de textes...
    n'oubliez pas la balise

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    voila ce qu il m affiche en enlevant "& .....&" :
    fournisseur.text

    j ai l impression que le probleme vient du controle (une propriete mal reglee) car quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim a as string
    a = fournisseur.text
    msgbox a
    le compilo bloque sur "a = fournisseur.text" et m indique :
    "erreur d execution '2185'
    Impossible de faire reference a une propriété ou de la definir pour un controle si ce dernier n est pas activé"

    je crois pas m etre trompé dans la definition de la variable, aussi bien son type que sa valeur. C est la premiere fois que je vois ca.
    Je vais jeter un oeuil dans les propriétés du controle en question , ma tres chere zone de texte.

    edit: a priori le controle est activé......je continu a chercher.

Discussions similaires

  1. [ODBC] Requete d'insertion avec php
    Par rolph dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/11/2006, 13h18
  2. Requete d'insertion avec n° auto
    Par zapatta dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 24/07/2006, 10h37
  3. [VBA-E] Requete SQL incluant des donnees provenant de cells
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/03/2006, 18h16
  4. [PB] requete d'insertion avec group by
    Par warraf dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/11/2005, 07h01
  5. INSERT avec valeur connue et résultat d'un SELECT...
    Par snoop dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 27/04/2005, 08h54

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