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 :

Problème requête SQL [Débutant]


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 55
    Points : 25
    Points
    25
    Par défaut Problème requête SQL
    Bonjour,

    Je vous sollicite encore une fois ^^

    Alors voila mes 3 petites lignes de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Naccess.Dec_SQL = "UPDATE " & [NomTable] & " SET " &[ComboBox_ch1].Text & " = '" & [TextBox_ch1].Text & "' WHERE Numero_ID = " & ListView_tbmodif.FocusedItem.Text
    MsgBox(Naccess.Dec_SQL)
    Ndata = Naccess.Execute
    Mon problème est que cette requête fonctionne pour 1 champ de ma table, et non pas pour les autres (30).
    Je suis donc très embêté xD

    Dans ma msgbox il m'affiche bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE matable SET monchamp = mavaleur WHERE Numero_ID = monelementselectionné
    Mais ensuite il me dit
    "Erreur de syntaxe dans l'instruction UPDATE"
    Ce message je ne l'ai que pour 30 de mes champs, et pour 1 seul, la requête fonctionne ...

    Avez-vous des idées ?

    ps : je devrais passer en paramètre dans ma requête ça je le sais, est-ce que ça pourrait être la raison de mon problème ?

  2. #2
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Je conseille la requête paramétrée.

    Ce message je ne l'ai que pour 30 de mes champs, et pour 1 seul, la requête fonctionne ...
    C'est à dire ? Tu fais cette requête avec 30 champs ? Ou 30x cette requete avec des champs différents ?
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 55
    Points : 25
    Points
    25
    Par défaut
    Ok, donc je passe par paramètre déjà

    Dans un 1er temps je voulais tester et donc j'ai essayé cette même requête avec les autres champs, et ça ne fonctionne qu'avec 1 seul

  4. #4
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Dans le doute, je rappelle la syntaxe d'un update multiple ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    -- Bon
    Update TaTable Set TonChamp = 'TaValeur', TonChamp2 = 'TaValeur2' Where id = TonID;
     
    -- Pas bon
    Update TaTable Set TonChamp = 'TaValeur' AND TonChamp2 = 'TaValeur2' Where id = TonID;
    Ok, donc je passe par paramètre déjà
    Tu utilises des objets OleDb ? Je me trompe peut-être, mais on ne dirait pas une requête paramétrée... (D'autant plus si tu arrives à voir ta requête avec les valeurs de ses paramètres dans une msgbox...)
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 55
    Points : 25
    Points
    25
    Par défaut
    Pour la syntaxe du update j'utilisais la bonne, mais merci de me la rappeler
    Enfin, le ";" est-il obligatoire a la fin de ma requête ?

    Sinon la dans le code que je t'ai montré, je ne passe pas en paramètre. Je n'utilisais donc pas encore d'objet OleDb dans le code que tu peux voir

    Mais de mon côté sur mon pc, je m'y mets ^^

  6. #6
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Citation Envoyé par Thyyb Voir le message
    Pour la syntaxe du update j'utilisais la bonne, mais merci de me la rappeler
    Enfin, le ";" est-il obligatoire a la fin de ma requête ?

    Sinon la dans le code que je t'ai montré, je ne passe pas en paramètre. Je n'utilisais donc pas encore d'objet OleDb dans le code que tu peux voir

    Mais de mon côté sur mon pc, je m'y mets ^^
    Non il n'est pas obligatoire, la requête se finit à la fin de la chaîne, mais mettre ";" défini explicitement la fin de la requête.

    Sinon avant exécution, place la requête dans ton presse-papier, et colle la sur un éditeur SQL de ta BDD, tu pourras la tester dessus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Clipboard.SetText(TaRequete)
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 55
    Points : 25
    Points
    25
    Par défaut
    Alors j'ai réessayé avec mon code sans paramètre et apparemment, c'est un soucis d'espace dans les noms des champs.
    J'ai beau avoir mis mes champs entre [], il compte quand même les espaces ...

    Et un autre soucis sur un champ qui s'appelle "Value" mais je suppose que c'est un mot réservé ?
    Comment je peux gérer le soucis du "value" ? Sachant que je n'ai pas le choix des noms des champs, il n'en est pas autrement :/

  8. #8
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Citation Envoyé par Thyyb Voir le message
    Alors j'ai réessayé avec mon code sans paramètre et apparemment, c'est un soucis d'espace dans les noms des champs.
    J'ai beau avoir mis mes champs entre [], il compte quand même les espaces ...

    Et un autre soucis sur un champ qui s'appelle "Value" mais je suppose que c'est un mot réservé ?
    Comment je peux gérer le soucis du "value" ? Sachant que je n'ai pas le choix des noms des champs, il n'en est pas autrement :/
    Des champs avec espace dans le nom ... des champs qui s'appelle Value ... Il n'y a vraiment pas moyen de revoir la base ?
    Tu es partie pour un tas de soucis avec ce genre de défaut de conception ...
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 55
    Points : 25
    Points
    25
    Par défaut
    Ba j'en ai parlé avec l'entreprise et leur ai dit que les espaces dans les noms de champs c'était pas bon, donc la il est ok il est au courant. Faut que je lui dise aussi pour le value mais pour ça j'ai pas de soucis.
    Mais en fait ils veulent que l'on puisse importer n'importe quelle base de données, dont des mauvais qui mettent des espaces dans des champs ou qui les appellent value ... ^^

    En clair, je n'est pas le choix de la base, faut que j'arrive à tout gérer en fait :o
    Ou alors ils utiliseront uniquement leurs bases ...

  10. #10
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Haaaa d'accord je comprend mieux.

    Donc la seule solution c'est de gérer tous les cas ...
    Mais sinon, en théorie, avec les crochets ça devrait être bon ...
    Tu as essayé ce que j'avais préconisé ? Mettre la requête dans la presse papier avant execution, la coller dans un éditeur SQL de ta bdd et lancer pour qu'il te crache une exception plus localisée/précise.
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 55
    Points : 25
    Points
    25
    Par défaut
    Je suis nouveau sur vb.net, j'ai que 2 mois ^^ Ca va être corsé lol

    Alors donc avec les crochets ça ne fonctionnait pas, après peut être que je les mettaient pas au bon endroit.

    Oui j'ai testé ce que tu m'a dit, c'est ce qui m'a permis de voir qu'en fait le code ne géré pas les espaces mal gré les [] et le "value".

    Je vais essayer le paramètre sinon mais tout cela m'intrigue quand même. J'ai une âme de Sherlock des fois
    Pourquoi cela ne marche pas alors que ça devrait ? ^^

  12. #12
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Citation Envoyé par Thyyb Voir le message
    Je suis nouveau sur vb.net, j'ai que 2 mois ^^ Ca va être corsé lol

    Alors donc avec les crochets ça ne fonctionnait pas, après peut être que je les mettaient pas au bon endroit.

    Oui j'ai testé ce que tu m'a dit, c'est ce qui m'a permis de voir qu'en fait le code ne géré pas les espaces mal gré les [] et le "value".

    Je vais essayer le paramètre sinon mais tout cela m'intrigue quand même. J'ai une âme de Sherlock des fois
    Pourquoi cela ne marche pas alors que ça devrait ? ^^
    Je ne fais du Vb.NET que depuis un peu plus d'1 an ...
    Mais en milieu professionnel et avec ce forum, on apprend très très vite.

    Et sinon je crois que je viens de comprendre -tardivement- le souci ...

    Et si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Dim req As String = "UPDATE [" & NomTable & "] SET [" & ComboBox_ch1.Text & "] = '" & TextBox_ch1.Text & "' WHERE Numero_ID = " & ListView_tbmodif.FocusedItem.Text
    Plutôt que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Dim req As String = "UPDATE " & [NomTable] & " SET " &[ComboBox_ch1].Text & " = '" & [TextBox_ch1].Text & "' WHERE Numero_ID = " & ListView_tbmodif.FocusedItem.Text
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 55
    Points : 25
    Points
    25
    Par défaut
    Oui je pense aussi que le code ça s'apprend vite en général, en fonction de la compréhension de chacun aussi

    J'ai essayé et effectivement le problème était la place des [].
    En voyant ta solution je me suis rendu compte de ma bêtise :o

    Merci en tout cas c'est sympa de m'aider encore une fois

  14. #14
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Y'a pas de soucis, bon courage pour la suite.
    (N'oublie pas le )
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

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

Discussions similaires

  1. Problème requête SQL
    Par mandaillou dans le forum Langage SQL
    Réponses: 15
    Dernier message: 03/10/2005, 11h37
  2. Problème requête SQL dans page ASP
    Par rocs dans le forum ASP
    Réponses: 14
    Dernier message: 26/07/2005, 15h38
  3. problème requête sql
    Par psychoBob dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/07/2005, 17h50
  4. problème requête sql
    Par perfectdams dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 21/06/2005, 18h09
  5. Réponses: 8
    Dernier message: 23/10/2003, 16h22

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