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 :

Ajout d'une entrée texte dans une gestion des stocks sous Access [AC-2013]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2016
    Messages : 17
    Points : 13
    Points
    13
    Par défaut Ajout d'une entrée texte dans une gestion des stocks sous Access
    Bonjour,

    Je suis en train de travailler avec le tutoriel de Claude Leloup (très bon tutoriel au passage) dont voici le lien :http://claudeleloup.developpez.com/t...tion-de-stock/

    Cependant, j'ai voulu lors de l'Encodage des Entrées ajouté une information supplémentaire : les fournisseurs.

    J'ai donc dans le code ajouter les différents critères à respecter et actions à faire tels que :
    La vérification du bon remplissage de la case:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IsEmpty(Me.txtFournisseur) Then
          MsgBox "Un des champs obligatoires n'est pas rempli"
    La remise à zéro après enregistrement :
    avec txtFournisseur ma zone de texte à remplir dans le formulaire.

    Et enfin l'ajout dans la table de l'information :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    MajtEntrees:
      sSql = "INSERT INTO tEntrees ( EntreeDate, EntreeQuant, EntreePU, tArticleCode, EntreeFournisseur, CMUP ) " _
              & "SELECT #" & Format(Me.txtDate, "mm/dd/yy") & "# AS Expr1," _
                           & Me.txtQuant & " AS Expr2, " _
                           & Me.txtPU & " AS Expr3, " _
                           & Me.CboArticle & " As Expr4, " _
                           & Format(Me.txtFournisseur, "String") & " As Expr5, " _
                           & Replace(dCMUP, ",", ".") & " as Expr6;"
      DoCmd.SetWarnings False
      DoCmd.RunSQL sSql
      DoCmd.SetWarnings True

    Le problème est que lorsque que j'ajoute un fournisseur, par exemple "Company A", le logiciel me renvoit une erreur '3075' et me dit "Erreur de syntaxe (opérateur absent)". Lorsque j'entre un chiffre il n'a pas de problème et lorsque j'entre un texte sans espace le logiciel me demande d'entrée une valeur de paramètre, laquelle sera bien enregistrée dans la table quelque soit son format.

    J'ai au début cru que le logiciel reconnaissait ma variable comme étant un chiffre, voilà pourquoi j'ai ajouter une fonction "Format" dans la procédure "MajtEntrees", mais ça n'a rien donné..

    Voilà mon problème, merci d'avance pour toute tentative d'aide ^^

    Cordialement

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    on encadre les données texte par des ['] et si dans ton texte il y a des ['] on les double ['']

    et on replace toutes les [,] par des [.] si numérique! j'ai fait des modifs de format à toi de voire!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     sSql = "INSERT INTO tEntrees ( EntreeDate, EntreeQuant, EntreePU, tArticleCode, EntreeFournisseur, CMUP ) " _
              & "Values(cdate('" & Format(Me.txtDate, "yyyy-mm-dd") & "')," _
                           & Me.txtQuant & ", " _
                           & Replace(Me.txtPU , ",", ".") & "'," _
                           & Me.CboArticle & "','" _
                           & Replace(Me.txtFournisseur, "'", "''") & "'," _
                           & Replace(dCMUP, ",", ".") & ");"

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2016
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Merci pour ta réponse.

    J'ai tout d'abord essayer le code que tu m'as fourni, cependant le logiciel m'indique une erreur de syntaxe que je ne parvient pas à corriger.

    J'ai ensuite tenté de modifier mon propre code en utilisant Replace comme tu l'as fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    sSql = "INSERT INTO tEntrees ( EntreeDate, EntreeQuant, EntreePU, tArticleCode, EntreeFournisseur, CMUP ) " _
              & "SELECT #" & Format(Me.txtDate, "mm/dd/yy") & "# AS Expr1," _
                           & Me.txtQuant & " AS Expr2, " _
                           & Me.txtPU & " AS Expr3, " _
                           & Me.CboArticle & " As Expr4, " _
                           & Replace(Me.txtFournisseur, "'", "''") & " As Expr5, " _
                           & Replace(dCMUP, ",", ".") & " as Expr6;"
    Cependant j'ai toujours exactement la même erreur...

    Désolé si je n'ai pas su résoudre le problème avec ta réponse, je ne connais pas le VBA depuis longtemps et suis encore peu familiarisé à ce langage.
    Et je ne suis pas sûr d'où est ce que je dois ajouter des ['] dans mon code?

    En tout cas merci pour ta réponse.

  4. #4
    Invité
    Invité(e)
    Par défaut
    précises moi les types NvarChar,DateTime, etc.. pour ces champ (EntreeDate, EntreeQuant, EntreePU, tArticleCode, EntreeFournisseur, CMUP ) dans ta table et je te dirai!

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2016
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Alors pour ma table tEntree:
    EntreeDate : Date/Heure
    EntreeQuant : Numérique
    EntreePU : Monétaire
    tArticleCode : Numérique
    EntreeFournisseur : Texte court
    CMUP : Monétaire

    Je ne saurais pas te donné le nom en donnée SQL précis (si c'est bien comme ça que ça s'appelle, les NvarChar, DateTime etc...), est-ce que ces informations te suffisent?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sSql = "INSERT INTO tEntrees ( EntreeDate, EntreeQuant, EntreePU, tArticleCode, EntreeFournisseur, CMUP ) " _
              & "Values(#" & Format(Me.txtDate, "yyyy-mm-dd") & "#," _
                           & Me.txtQuant & ", " _
                           & Me.txtPU & "," _
                           & Me.CboArticle & ",'" _
                           & Replace(Me.txtFournisseur, "'", "''") & "'," _
                           & Replace(dCMUP, ",", ".") & ");"
    CurrentDb.Execute sSql

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2016
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Ça marche!

    Merci beaucoup pour avoir pris le temps de m'aider (ou même carrément résoudre mon problème).

    Bien cordialement,

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2016
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Je me permet de réouvrir cette discussion suite à un problème survenant à la même ligne de code. Lors de mes entrée dans une le formulaire, il y a "PU" le prix unitaire, au format euro. Je n'avait rien vu jusqu'à aujourd'hui où j'ai essayé de rentrer un prix unitaire sous la forme d'un nombre décimal.
    Lorsque je n'ai aucun chiffre derrière la virgule, je n'ai pas de problème, mais dès que j'en ai un Access me dit : Erreur d’exécution '3346' : Le nombre de valeurs de la requête doit coïncider avec le nombre de champs destination.

    A mon avis, la virgule donne l'information au logiciel que je rentre deux variables séparées, mais je ne sais pas comment faire en sorte qu'il n'en considère qu'une... (j'ai essayé avec des crochets des guillemets etc mais je ne suis pas sur de bien les placer puisque ça na me donne rien).

    Voici le code (encore merci à rdurupt pour son aide dessus) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sSql = "INSERT INTO tEntrees ( EntreeDate, EntreeQuant, EntreePU, tArticleCode, EntreeFournisseur, CMUP ) " _
              & "Values(#" & Format(Me.txtDate, "yyyy-mm-dd") & "#," _
                           & Me.txtQuant & ", " _
                           & Me.txtPU & ", " _
                           & Me.CboArticle & ",'" _
                           & Replace(Me.CboSupplier, "'", "''") & "'," _
                           & Replace(dCMUP, ",", ".") & ");"
    CurrentDb.Execute sSql
    Le débogueur m'affiche une erreur à CurrendDB.Execute sSql, mais je pense que le problème se trouve en ligne 4...

    Est-ce que vous auriez des idées s'il vous plait?

    EDIT: excusez moi, mais la réponse se trouvais dans le code de rdurupt...il suffisait de faire un Replace(Me.txtPU , ",", "."), encore merci à lui du coup...
    Et désolé d'avoir reéouvert la discussion

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Il faut bien comprendre que le séparateur décimale est virgule ce qui du point de vue Sql est unn séparateur de champs! Donc le nombre de paramètres passé à ta requête est déséquilibré!

    De plus le séparateur décimal international n'est pas virgule mais le point!
    replace(Me.txtPU ,",",".")

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2016
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Oui c'est ce que je me suis dit mais j'ai pas pensé à faire un replace pour avoir le bon format
    En tout cas merci pour tes réponses, ça m'a beaucoup aidé et ça m'aidera sûrement après

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

Discussions similaires

  1. [WD20] Gestion de lien hypertext dans une colonne texte dans une table
    Par lololebricoleur dans le forum WinDev
    Réponses: 14
    Dernier message: 03/08/2015, 16h24
  2. Réponses: 14
    Dernier message: 01/04/2015, 01h03
  3. Réponses: 82
    Dernier message: 05/02/2011, 14h34
  4. Ajouter une zone texte dans une View Eclipse
    Par bulldo dans le forum SWT/JFace
    Réponses: 15
    Dernier message: 18/08/2010, 18h05
  5. Réponses: 6
    Dernier message: 13/11/2009, 16h06

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