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 :

[A-03] Mettre une valeur par défaut dans une table via une requête INSERT TO


Sujet :

Requêtes et SQL.

  1. #1
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut [A-03] Mettre une valeur par défaut dans une table via une requête INSERT TO
    Bonjour, savez vous quelle syntaxe utiliser dans une requête sql pour mettre une valeur par défaut dans une table, si une listBox d'un formulaire est restée vide?

    Résumé

    J'ai un formulaire avec des txtBox et des listeBox.

    Je veux que lors de l'éxecution de la requête sql, si parmi tous mes champs, 2 de mes listBox sont restées vides, dans la table sa ne les laisse pas vide, mais sa mette une valeur par défaut (ex: Non Définit ou autre....).

    J'ai donc construit ma requête sql comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sql = "INSERT into tbl_Référence values(" & ID_Référence & ",'" & Nz(Me.txtRéférence, "''") & "'," & Nz(Me.txtStockMinimum, "''") & ",'" & Nz(Me.cocherCommandeAuto, "''") & "'," & Nz(Me.txtQuantitéCommandeAuto, "''") & "," & Nz(Me.txtPrixUnitaireStock, "''") & ",'" & Nz(Me.listeDésignation, "''") & "'," & Nz(Me.listeMarque, "Non Définit") & ", " & Nz(Me.listeEmplacement, "Non Définit") & "," & Nz(Me.txtStockActuel, "''") & ");"
    odb.Execute (sql)
    Mais je craint que "Non Définit" soit la bonne syntaxe dans ma requête, quelqu'un sait-il quoi mettre?

    Actuellement j'ai le message d'erreur suivant:

    Erreur de syntaxe, opérateur abscent dans l'expression 'Non Définit'

  2. #2
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Sachant que si je met:

    "'Non Défini'" à la place de "Non Définit" je n'ai plus d'erreur, mais dans ma table sa m'insert un champs vide.

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    si j'ai bien compris ... ce qu'il te faut , c'est de pouvoir faire une insertion à partir du code directement dans ta bdd. La suite est comme suit :

    -> tu dois creer une séquence au niveau de ta bdd.

    -> tu réalise un trigger qui va s'occuper du remplissage du champ en question de manière automatique grace à la séquence créée.

    Tu dois au moins vérifier si ca marche au niveau de ta bdd, le code ca viendra après ...

  4. #4
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Do you speak french?

    Re et merci pour ta réponse, mais je n'ai pas compris. Je pense que c'est bien plus simple que sa. Non mais ma syntaxe sql est correcte, mais je pense que c'est ma syntaxe de ma fonction Nz qui ne convient pas.

    Ce que je veux juste faire c'est tout basique, je veux que si lors de l'appui sur mon bouton ok de mon formulaire, mes deux listes box sont restées vides, alors dans ma table, pour ces 2 champs là sa me mette Non Définit.

    C'est tout

  5. #5
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    bonjour,

    avant d'exécuter ton insert il te faut mettre du code

    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if Me.listeMarque ="" then' pour autant que se soit du texte
    MarquelisteValeur = Me.listeMarque
    else
    MarquelisteValeur = "Non Définit"
    end if
    ' ensuite dans la requête tu remplace Nz(Me.listeMarque, "Non Définit") par MarquelisteValeur
    sql = "INSERT into tbl_Référence values(" & ID_Référence & ",'" & Nz(Me.txtRéférence, "''") & "'," & Nz(Me.txtStockMinimum, "''") & ",'" & Nz(Me.cocherCommandeAuto, "''") & "'," & Nz(Me.txtQuantitéCommandeAuto, "''") & "," & Nz(Me.txtPrixUnitaireStock, "''") & ",'" & Nz(Me.listeDésignation, "''") & "'," & MarquelisteValeur & ", " & Nz(Me.listeEmplacement, "Non Définit") & "," & Nz(Me.txtStockActuel, "''") & ");"
    odb.Execute (sql)
    Il faut faire toutefois attention si c'est du texte ou des nombres pour l'insert car dans la requête que tu as écrite ce n'est pas évident partout

  6. #6
    Membre régulier Avatar de 5GPCISAS1
    Inscrit en
    Novembre 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Novembre 2007
    Messages : 85
    Points : 93
    Points
    93
    Par défaut
    Bonjour,

    Il suffit peut-être de mettre ta valeur par défaut directement dans ta table.

  7. #7
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    re bonjour,

    Citation Envoyé par moilou2 Voir le message
    Sachant que si je met:

    "'Non Défini'" à la place de "Non Définit" je n'ai plus d'erreur, mais dans ma table sa m'insert un champs vide.
    je relis ton poste si le champ est vide et sans erreur c'est certainement un problème de champ qui est numérique et que tu ne peux pas mettre du texte.
    pour avoir un choix dans une requête tu peux peut être utiliser la fonction IIF
    bonne chance

  8. #8
    Membre régulier Avatar de 5GPCISAS1
    Inscrit en
    Novembre 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Novembre 2007
    Messages : 85
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par moilou2 Voir le message
    Ce que je veux juste faire c'est tout basique, je veux que si lors de l'appui sur mon bouton ok de mon formulaire, mes deux listes box sont restées vides, alors dans ma table, pour ces 2 champs là sa me mette Non Définit.
    C'est tout
    Je crois qu'il faut simplement mettre "non défini " dans la propriété "valeur par défaut" du champ correspondant à la liste déroulante dans la table (si le champ est en format Txt).

  9. #9
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 924
    Points
    55 924
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par kariyasan Voir le message
    ...
    -> tu réalise un trigger qui va s'occuper du remplissage du champ en question de manière automatique grace à la séquence créée....
    Un déclencheur sur une base Access ??
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #10
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Re, bon c'est bon j'ai trouvé comment faire. Comme il s'agissait de listBox, et que le champs dans la table était de type numérique.

    Il fallait que je mette dans ma requete pour les champs Emplacement et marque une fonction Nz, non pas avec "Non Définit", mais une fonction Nz avec des le numéro d'enregistrement de la table ou les listBox piochées leurs données.

    Comme dans la table marque et dans la table emplacement, le "Non définit se situe à l'enregistrement 1". Alors j'ai mis le code suivant dans ma requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sql = "INSERT into tbl_Référence values(" & ID_Référence & ",'" & Nz(Me.txtRéférence, "''") & "'," & Nz(Me.txtStockMinimum, "''") & ",'" & Nz(Me.cocherCommandeAuto, "''") & "'," & Nz(Me.txtQuantitéCommandeAuto, "''") & "," & Nz(Me.txtPrixUnitaireStock, "''") & ",'" & Nz(Me.listeDésignation, "''") & "','" & Nz(Me.listeMarque, "1") & "', '" & Nz(Me.listeEmplacement, "1") & "'," & Nz(Me.txtStockActuel, "''") & ");"
    odb.Execute (sql)

  11. #11
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    puisque c'est une base access , je RETIRE MA REPONSE désolé

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

Discussions similaires

  1. Mettre une valeur par défaut dans un input type='file'
    Par fab76000 dans le forum Langage
    Réponses: 2
    Dernier message: 27/01/2009, 19h59
  2. Réponses: 4
    Dernier message: 05/06/2007, 09h16
  3. Réponses: 3
    Dernier message: 09/03/2006, 15h12
  4. Réponses: 6
    Dernier message: 14/02/2006, 20h53

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