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

VB.NET Discussion :

VB access (requête UPDATE)


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 1
    Par défaut VB access (requête UPDATE)
    bonjour ,
    voila mon 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
    16
    17
    18
    19
    20
    21
    22
    'ouverture de la connection(à partir du répertoire de l'application)sur la même ligne 
    Dim cnxstr As String 
    cnxstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\base3.mdb" 
    Dim cnx As New OleDbConnection 
    'cnx.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Artisanat\Desktop\base1.mdb" 
    cnx.ConnectionString = cnxstr 
    cnx.Open() 
    'Command texte 
    Dim q As String 
    TextBox9.Text = Date.Now 
    q = "UPDATE maintenance SET huile = '" & Date.Now & "' WHERE transfo =" & ComboBox1.SelectedItem & " AND numvisite = " & ComboBox2.SelectedItem & " ;" 
    TextBox9.Text = Date.Now 
    'creation de le commande 
    Dim cmd As New OleDbCommand() 
    'connexion liéé à la commande 
    cmd.Connection = cnx 
    'texte de la commande 
    cmd.CommandText = q 
    'Execution de la commande 
    'MessageBox.Show(cmd.CommandText) 
    cmd.ExecuteNonQuery() 
    cnx.Close()

    le code s exécute tres bien lorsque je supprime une partie de la requette update:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    q = "UPDATE maintenance SET huile = '" & Date.Now & "' WHERE transfo =" & ComboBox1.SelectedItem & "
    j ai un projet d archivage. j ai presque fini le probleme c est que une requette sql sous vb access ne veux pas s excuter correctement.

    merci de m'aider svp

  2. #2
    Membre confirmé
    Femme Profil pro
    futur développeur
    Inscrit en
    Janvier 2010
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : Maroc

    Informations professionnelles :
    Activité : futur développeur

    Informations forums :
    Inscription : Janvier 2010
    Messages : 135
    Par défaut
    salut mar11,

    je n'ai pas d'experience avec access et vb.net.

    mais je vois que la requete est mal écrite.
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    q = "UPDATE maintenance SET huile = '" & Date.Now & "' WHERE transfo =" & ComboBox1.SelectedItem & " AND numvisite = " & ComboBox2.SelectedItem & " ;"
    tu devrais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    q = "UPDATE maintenance SET huile =" & "'" & Date.Now & "'" & 
    "WHERE transfo =" & "'" & ComboBox1.SelectedItem & "'" & "AND numvisite = " &  ComboBox2.SelectedItem
    remarques:

    -huile est une date, n'est ce pas? donc sur sql tu devrais la mettre entre quotes.

    -numvisite est un entier,donc pas besoin des quotes.

    -transfo est un numeric ou varchar, si c'est numeric tu ne mets pas les quotes entre -vous avez appelé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox9.Text = Date.Now
    avant et après la requête, pourquoi?
    pourquoi n'essayer pas de nommer les objets:text et comboBox, ça sera plus explicite et clair en cas de leurs utilisations.

    espérant que je t'ai aidé!

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    J'écrirai plutôt la requête "Update" de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    q = "UPDATE maintenance SET huile=#" & Date.Now & "# WHERE transfo='" & ComboBox1.SelectedItem & "' AND numvisite='" & ComboBox2.SelectedItem & "' ;"
    Les dates devant être encadrées de dièses > #28/08/2011# et les string d'apostrophes > 'String'

    Hervé.

  4. #4
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Bonsoir à vous tous.

    Il est important quand vous coder d'utiliser les requêtes paramétrées
    (Voir ici sous "Comment exécuter une requête paramétrée ?")

    Celle-ci règle pas mal de problème d'injection sql, de mise en forme de chaine (doublage de quote ce qui pourrais être ton problème ici ) et améliore grandement la lisibilité du code...
    De plus vous n'avez plus à vous soucier de comment on code les dates (ça change d'un SGBD à l'autre) vu que c'est le système qui la met en forme...

    Ca nous donnerais :

    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
     
    Dim cmd As New OleDbCommand() 
    'connexion liéé à la commande 
    cmd.Connection = cnx 
    'texte de la commande 
    cmd.CommandText = "UPDATE maintenance SET huile = ? WHERE transfo = ? AND numvisite = ? ;" 
    ' Création des paramètres
    cmd.Parameters.Add("@huile", OleDbType.Date)
    cmd.Parameters.Add("@transfo", OleDbType.VarChar) ' Ou integer suivant le type
    cmd.Parameters.Add("@numvisite", OleDbType.Integer)
    ' Remplissage valeur des paramètres
    cmd.Parameters("@huile").Values = Date.Now 
    cmd.Parameters("@transfo").Values = ComboBox1.SelectedItem
    cmd.Parameters("@numvisite").Values = ComboBox2.SelectedItem 
     
    'Execution de la commande 
    'MessageBox.Show(cmd.CommandText) 
    cmd.ExecuteNonQuery()
    C'est bien plus lisible comme ça non?

    De plus quand tu crées un post, mets ton code dans les balises code pour une meilleure lisibilité pour ceux qui vont t'aider et mets le texte de l'erreur...

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/12/2014, 06h30
  2. [Delphi6,Access] Requête update avec select imbriqué
    Par magicstar dans le forum Débuter
    Réponses: 3
    Dernier message: 30/03/2009, 19h40
  3. [ODBC] Requête UPDATE PHP->ACCESS
    Par frogs dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/10/2008, 13h48
  4. Requête UPDATE FROM avec Access
    Par MHO dans le forum Access
    Réponses: 2
    Dernier message: 01/12/2006, 12h24
  5. Access - Requête SQL - UPDATE
    Par tchoo83 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 19/12/2005, 15h48

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