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

Access Discussion :

problème sur le codage SQL


Sujet :

Access

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 275
    Points : 76
    Points
    76
    Par défaut problème sur le codage SQL
    bonjour j'ai fais un formulaire avec des zone liste déroulante et je voudrais créez une nouvelle ligne dans une table a partir des choix que j'ai sélectionné dans les liste déroulante, voici le code qui ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Private Sub créer_Affectation_3_en_1_Click()
     
    Dim MySQL As String
    Dim Recherche_Employé As String
    Dim Liste_Abonnemen As String
    Dim Liste_Equipement As String
    Dim AutresInformation0 As String
    Dim AutresInformation1 As Integer
     
    PIN_Terminal = AutresInformation.Column(0)
    PIN_SIM = AutresInformation.Column(1)
    Commentaire = AutresInformation.Column(2)
    EMEI = AffectationNumEMEI
     
    RunMySQL = "INSERT INTO Affectation ( USER_ID, Statut, PIN_Terminal, PIN_SIM, Commentaire )"
    RunMySQL = RunMySQL & " SELECT Recherche_Employé, Liste_Abonnemen, #"
    RunMySQL = RunMySQL & PIN_Terminal
    RunMySQL = RunMySQL & "#, #"
    RunMySQL = RunMySQL & " PIN_SIM"
    RunMySQL = RunMySQL & "#,"
    RunMySQL = RunMySQL & " Commentaire"
    RunMySQL = RunMySQL & " [Equipement].[Num_EMEI] ='" & EMEI & "';"
     DoCmd.RunSQL RunMySQL

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonjour,

    Quel est le message d'erreur ?

    Vérifies les valeurs des paramètres que tu mets dans tes variables ! Dans une requête, les dates sont mis entre # et les textes entre ' ou ". Par contre une valeur numérique n'a pas besoin d'être entre des quôtes.
    Donc, dans le code posté :
    1- PIN_Terminal est il une date ?
    2- PIN_SIM est-il une date ?
    3- Commentaire est du texte, donc doit être mis entre '
    4- D'où tu as la valeur de Recherche_Employé et Liste_Abonnemen si tu utilises un SELECT mais sans le nom de la table avec un FROM.

    Pour rappel, dans une requête insertion,
    1- Si les valeurs proviennent d'un table, l'instruction sera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "INSERT INTO LaTableDestination (Champ1,Champ2,Champ3,....ChampN) SELECT ChampDep1,ChampDep2,ChampDep3,...,ChampDepN FROM TableDepart"
    2- Si les valeurs proviennent de diverses contrôles d'un autre objet, l'instruction sera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "INSERT INTO LaTableDestination (Champ1,Champ2,Champ3,....ChampN) VALUES (" & Controle1 & "," & Controle2 & "," & Controle3 & ",...," & ControleN & ")"

    Cordialement.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 275
    Points : 76
    Points
    76
    Par défaut
    Terminal et sim sont des integer et les autre des string, j'avais mal écrit le code,
    j'ai amélioré le code mais il fonctionne toujours pas, voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Private Sub créer_Affectation_3_en_1_Click()
     
    Dim MySQL As String
    Dim PIN_Terminal, PIN_SIM As Integer
    Dim Commentaire, USER_ID, Statut As String
     
    USER_ID = Me.Recherche_Employé.Column(0)
    Statut = Me.Liste_Abonnemen.Column(0)
    PIN_Terminal = Me.AutresInformation.Column(0)
    PIN_SIM = Me.AutresInformation.Column(1)
    Commentaire = Me.AutresInformation.Column(2)
     
    RunMySQL = "INSERT INTO [Affectation] (" & USER_ID & ", " & Statut & ", " & PIN_Terminal & ", " & PIN_SIM & ", " & Commentaire & " )"
    RunMySQL = RunMySQL & " SELECT USER_ID, Statut, PIN_Terminal, PIN_SIM, Commentaire"
     DoCmd.RunSQL RunMySQL

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonsoir,

    J'ai du mal à voir la ressemblance de ton code avec les 2 modèles que je proposais !
    En plus tu utilises les mêmes mots et pour tes variables et pour tes noms de champs de tables, on s'y perd !
    Il faut typer chaque variable dans une déclaration énumérée.
    Ton code ressemblerait à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Private Sub créer_Affectation_3_en_1_Click()
     
    Dim RunMySQL As String
    Dim VrPIN_Terminal As Integer, VrPIN_SIM As Integer
    Dim VrCommentaire As String, VrUSER_ID as String, VrStatut As String
     
    VrUSER_ID = Me.Recherche_Employé.Column(0)
    VrStatut = Me.Liste_Abonnemen.Column(0)
    VrPIN_Terminal = Me.AutresInformation.Column(0)
    VrPIN_SIM = Me.AutresInformation.Column(1)
    VrCommentaire = Me.AutresInformation.Column(2)
     
    RunMySQL = "INSERT INTO [Affectation] (USER_ID,Statut,PIN_Terminal,PIN_SIM,Commentaire)"
    RunMySQL = RunMySQL & " VALUES ('" &  VrUSER_ID & "','" & VrStatut & "'," &  VrPIN_Terminal & "," & VrPIN_SIM & ",'" VrCommentaire & "')"
     DoCmd.RunSQL RunMySQL
    Cordialement.

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 275
    Points : 76
    Points
    76
    Par défaut
    Bonjour, merci sa fonctionne, mais maintenance que j'ai comme problème, quand j'appuie sur le bouton, il active et me demande confirmation de l'ajout de la ligne tout va bien, après il m'affiche un mot en me disant Violations de règles de validation alors que le champ appartient a la même table, je ne comprend plus rien

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonjour,

    1- Le message de validation est normal quand on utilise la syntaxe avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Docmd.RunSQL SQLExpression
    C'est comme quand on exécute une requête action simplement.
    Pour y remédier, il faut inhiber les messages d'avertissement avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Docmd.SetWarnings FALSE
    Et les remettre à TRUE après l'exécution de la requête.

    2- Le message 2 de "Violation..." est généré lorsqu'on "viole" les règles de validation des champs de ta table. souvent, c'ets parce que ta table a un index unique et tu veux rajouter le même index avec ta requête. A vérifier !

    Cordialement.

Discussions similaires

  1. problèmes avec liste déroulante
    Par _MattU_ dans le forum VBA Access
    Réponses: 5
    Dernier message: 17/06/2008, 09h52
  2. [AJAX] Liste déroulante
    Par fourniey dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/01/2008, 04h14
  3. [SQL] Problème avec liste déroulante et select
    Par cari dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 28/07/2006, 20h52
  4. Problème avec listes déroulantes
    Par dl_jarod dans le forum Langage
    Réponses: 9
    Dernier message: 07/06/2006, 10h13
  5. Problème avec liste déroulante
    Par Invité dans le forum IHM
    Réponses: 2
    Dernier message: 14/12/2005, 21h04

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