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 :

Une ligne UPDATE comprennant des variables


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué Avatar de amerex
    Homme Profil pro
    Analyste Support et Développement
    Inscrit en
    Septembre 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste Support et Développement
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 246
    Points : 148
    Points
    148
    Par défaut Une ligne UPDATE comprennant des variables
    Bonjour!!
    J'ai un petit pépin face à une petite requête SQL que je soumet à mon code...

    Je voudrais faire un UPDATE avec des renseignements contenus dans un formulaire, voici mon code pour le moment:
    Code VBA : 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
    Private Sub Commande11_Click()
    Dim db As DAO.Database
    Dim tbl As Variant  'Table à updater
    Dim ref As Variant  'Référence pour la condition WHERE
    Dim modi As Variant  'Champ à modifier
    Dim SQL As String  'Ligne SQL
    'Prise des variables
    tbl = etitable.Caption
    ref = etiref.Caption
    modi = etimodif.Caption
    Set db = CurrentDb
    'Sql
    SQL = "UPDATE comptes SET Détails=" & txt.Value & " WHERE 'N°'=2"
    Debug.Print SQL
    db.Execute SQL
    db.Close
    DoCmd.Close acForm, "modif", acSaveNo
    End Sub

    Malheureusement, le debugger arrête sur db.Execute SQL, donc ma ligne SQL=... ne fonctionne pas! La ligne comprend des informations statiques pour le moment, mais lorsque corrigée nous aurons les variables déclarées plus haut. Je crois que l'erreur est au niveau du N°, est-possible?

    Merci!

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Perso, si j'utilise le DAO, je vais en DAO jusqu'au bout.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim db As DAO.Database
    Dim rs As DAO.RecordSet
    Dim SQL As String
     
    Set db = CurrentDb
    sql = "Select * From Matable"
    Set rs = db.OpenRecordset(sql)
     
    rs.AddNew
    rs.Fields(1) = Me.MonControle
    rs.update
    Les captions ne contiennent pas de données, ce sont des valeurs pour étiquettes.

  3. #3
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 029
    Points : 24 584
    Points
    24 584
    Par défaut
    Bonjour,

    Quelle bien étrange syntaxe ?!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "UPDATE comptes SET Détails=" & txt.Value & " WHERE 'N°'=2"
    Détails c'est du texte pourtant il n'y a pas de double-cote pour le txt.value, par contre N° qui est un nom de champ il y a de simple-cote !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.Close acForm, "modif", acSaveNo
    c'est probablement parceque tu ne veux pas sauvegarder les variables que tu stockes dans des étiquettes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tbl = etitable.Caption
    ref = etiref.Caption
    modi = etimodif.Caption

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 121
    Points : 96
    Points
    96
    Par défaut
    Bonsoir,

    Le code sql serait plutôt de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sql = "UPDATE [nom_de_la_table] SET [nom_de_la_table].nom_du_champ1=[Forms]![nom_formulaire]![nom_champ1_formulaire] WHERE [nom_de_la_table].nom_champ2= [Forms]![nom_formulaire]![nom_champ2_formulaire]"
    Tiens nous au courant

  5. #5
    Membre habitué Avatar de amerex
    Homme Profil pro
    Analyste Support et Développement
    Inscrit en
    Septembre 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste Support et Développement
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 246
    Points : 148
    Points
    148
    Par défaut
    Bonjour!
    J'ai enfin réussi en utilisant le débugger (ce que j'aurais du faire bien avant!)
    Voici donc mon code final:
    Code Vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Commande11_Click()
    Dim db As DAO.Database
    Dim sql As String
    Set db = CurrentDb
    sql = "Update " & etitable.Caption & " SET " & etimodif.Caption & "='" & txt.Value & "' WHERE N°=" & etiref.Caption
    Debug.Print sql
    db.Execute sql
    db.Close
    DoCmd.Close acForm, "modif", acSaveNo
    End Sub

    P.S.: Loufab, ton message a aidé en rien, merci.

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 029
    Points : 24 584
    Points
    24 584
    Par défaut
    Citation Envoyé par amerex Voir le message
    P.S.: Loufab, ton message a aidé en rien, merci.
    Etrange qu'il ne t'ai pas aidé... c'est pourtant exactement les conseils que tu as suivi.

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

Discussions similaires

  1. [Débutant] Recuperer le resultat d'une seule ligne select dans des variables ou un tableau
    Par Celia_anais dans le forum Accès aux données
    Réponses: 2
    Dernier message: 17/06/2015, 10h56
  2. Réponses: 19
    Dernier message: 14/08/2007, 14h41
  3. [RegEx] Ecrire une requete INSERT avec des variables $_POST
    Par arnaudperfect dans le forum Langage
    Réponses: 10
    Dernier message: 13/06/2007, 15h12
  4. raffraichir une page en gardant des variables
    Par fred036 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/10/2006, 14h17
  5. UPDATE avec des variables Delphi ...
    Par Kokito dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/03/2004, 22h35

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