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 :

Message d'erreur lors de l'enregistrement d'une requête dans un code vba


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Inscrit en
    Mai 2010
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 156
    Points : 51
    Points
    51
    Par défaut Message d'erreur lors de l'enregistrement d'une requête dans un code vba
    Bonjour tout le monde, un de mes formulaires étant encore en construction j'ai voulu effectuer un remplissage dans une zone de texte lors d'un clique sur une autre zone de texte, lorsque je veux enregistrer ça me met le message d'erreur suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur de compilation:
    Attendu :Fin d'instruction
    et mon code est celui ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub texte_num_cmd_Click()
    Dim strSQL As String
    strSQL = "Select TblCOMMANDES.ID_COMMANDE & vbCrLf & _
             "FROM TblCOMMANDES"& vbCrLf & _
             "WHERE TblCOMMANDES.NUM_COMMANDE = texte_num_cmd.Value;"
    texte_id_cmd.Value = strSQL
    End Sub

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 282
    Points : 356
    Points
    356
    Par défaut
    Bonjour,

    Un SELECT ne retourne jamais une donnee utilisable telle quelle en VBA.

    Il faudrait remplace le code par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub texte_num_cmd_Click()
    texte_id_cmd.Value = DLookup("ID_COMMANDE", "TblCOMMANDES", "NUM_COMMANDE = " & Me.texte_num_cmd.Value)
    End Sub
    Notez qu'en version francaise, DLookup donne RechDom
    - Bien programmer n'est pas choisir la solution la plus simple, mais la meilleure -

  3. #3
    Membre du Club
    Inscrit en
    Mai 2010
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 156
    Points : 51
    Points
    51
    Par défaut
    dsl je ne connais pas encore bien le vba, je travail d'habitude avec d'autre langages et je ne connaissais pas la fonction qui permettais de faire ça justement, elle me semble correcte mais elle ne marche pas :s ça n'affiche rien dans la zone de texte...

  4. #4
    Membre du Club
    Inscrit en
    Mai 2010
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 156
    Points : 51
    Points
    51
    Par défaut
    enfaite vu que j'ai une version française d'office, j'utilise la fonction RechDom mais ça me met : Sub ou fonction non définie. Avec DLookup ça me met a jour le textebox mais il n'y a rien dedans, comme si il n'arrivait pas a afficher. Car le teste conditionnel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "NUM_COMMANDE = " & Me.texte_num_cmd.Value)
    End Sub
    est bien respecté puisque lors de la saisie d'une donnée incorrecte il me dit : "Type de données incompatible dans l'expression du critère".
    Aurais tu une idée du pourquoi cela n'affiche rien dans ma zone de texte ?

  5. #5
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Quelque soit la langue, en VBA, la fonction est DLookup.

    De quel type est le champ NumCommande ? L'évènement Clic est bien l'évènement désiré ?

  6. #6
    Membre du Club
    Inscrit en
    Mai 2010
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 156
    Points : 51
    Points
    51
    Par défaut
    le champ NUM_COMMANDE est de type alfa-numérique, et pour ce qui concerne l'evenement click j'ai ajouter un bouton afin de pouvoir réaliser des tests.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 282
    Points : 356
    Points
    356
    Par défaut
    Si le champ est alpha-numerique, il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub texte_num_cmd_Click()
    texte_id_cmd.Value = DLookup("ID_COMMANDE", "TblCOMMANDES", "NUM_COMMANDE = '" & Me.texte_num_cmd.Value & "'")
    End Sub
    - Bien programmer n'est pas choisir la solution la plus simple, mais la meilleure -

  8. #8
    Membre du Club
    Inscrit en
    Mai 2010
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 156
    Points : 51
    Points
    51
    Par défaut
    Merci à vous, ça marche parfaitement c'est génial

  9. #9
    Membre du Club
    Inscrit en
    Mai 2010
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 156
    Points : 51
    Points
    51
    Par défaut
    une dernière question : connaissez vous la fonction permettant de regarder quelle valeur est la plus grande dans une table ? (pour une valeur "numérique")

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 282
    Points : 356
    Points
    356
    Par défaut
    Tu peux utiliser DMax exactement de la meme maniere que DLookup.
    - Bien programmer n'est pas choisir la solution la plus simple, mais la meilleure -

  11. #11
    Membre du Club
    Inscrit en
    Mai 2010
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 156
    Points : 51
    Points
    51
    Par défaut
    merci beaucoup, mais tu sais ou je peux trouver de la doc sur toutes ces fonctions ? parce que je vais avoir besoin d'autres fonctions, comme pour ajouter une occurrence dans la base.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 282
    Points : 356
    Points
    356
    Par défaut
    Quand tu es en VBA, utilise l'aide d'Access, c'est la que j'ai trouve 95% des reponses dont j'ai eu besoin.
    - Bien programmer n'est pas choisir la solution la plus simple, mais la meilleure -

  13. #13
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311

  14. #14
    Membre du Club
    Inscrit en
    Mai 2010
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 156
    Points : 51
    Points
    51
    Par défaut
    Merci =)

  15. #15
    Membre du Club
    Inscrit en
    Mai 2010
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 156
    Points : 51
    Points
    51
    Par défaut
    Je viens de regarder le tuto
    "http://starec.developpez.com/tuto/fonctionsdomaines/"

    et dites moi si je me trompe, mais il n'y a aucune fonction qui permete d'effectuer une insertion dans une base de donnée (style requete insert into)?
    alors comment faire ?

  16. #16
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Avec une requête Insert justement où bien alors avec un recordset.

    Une fonction, par définition, retourne un résultat, elle ne réalise pas d'action (sauf exception)

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

Discussions similaires

  1. [AC-2010] Message d'erreur lors de l'éxécution d'une requête
    Par Pittouti dans le forum Modélisation
    Réponses: 0
    Dernier message: 08/05/2013, 11h04
  2. Réponses: 6
    Dernier message: 13/12/2007, 03h13
  3. message d'erreur lors d'un enregistrement
    Par Skizo dans le forum Access
    Réponses: 2
    Dernier message: 30/05/2006, 09h09
  4. message d'erreur lors de mise à jour d'une BD access
    Par Abydos Business Group dans le forum Access
    Réponses: 2
    Dernier message: 25/01/2006, 16h36
  5. message d'erreur lors de la création d'une base
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/04/2004, 15h47

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