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 erreur de requete


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Points : 49
    Points
    49
    Par défaut VB erreur de requete
    Bonjour, j' ai un petit problème avec ma requete.

    Dim vReq2 As String = "INSERT INTO ESSAI(Adresse,Description,Latitude,Longitude,ModuleID) VALUES('" & (lecteur("ADRESSE").ToString()).Replace("'", "''") & "',ACTIVITE,Latitude,Longitude,'" & 385 & "');"

    L'erreur est la suivante


    Le nom "ACTIVITE" n'est pas autorisé dans ce contexte. Les expressions valides sont des constantes, des expressions constantes, et (dans certains contextes) variables. Les noms de colonnes ne sont pas autorisés.

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    Tu dois entourer ACTIVITE de dimples cotes s'il s'agit bien de ce que tu souhaites mettre comme description.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Points : 49
    Points
    49
    Par défaut
    non activité longitude et latitude je dois les récupérer dans une table.
    J'ai une requete "select" et celle ci fonctionne car j arrive à afficher les éléments que j ai trier avec le "select" mais certains champs ne veulent pas se mettre je ne vois pas mon erreur

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    Si ACTIVITE est une colonne d'une autre table, tu dois utiliser une syntaxe du type :
    INSERT INTO Table (<colonnes>)
    SELECT (<colonnes>) FROM <Tables>

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Points : 49
    Points
    49
    Par défaut
    Dim vReq As String = "SELECT ADRESSE,ACTIVITE FROM ESSAI2 WHERE UPPER(ADRESSE) LIKE UPPER('" & recuperation & "');"


    Dim vReq2 As String = "INSERT INTO ESSAI(Adresse,Description,ModuleID) VALUES('" & (lecteur("ADRESSE").ToString()).Replace("'", "''") & "','" & 385 & "');"

    Voila mes 2 requêtes j'aimerais insérer entre l'adresse et le numéro 385 mon champ ACTIVITE venant de la table ESSAI2.
    J'arrive a tout afficher sauf ACTIVITE.

    merci

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    Tu dois écrire ta requête de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
       "INSERT INTO ESSAI(Adresse, Description, ModuleID) "
    & "SELECT " 
    & " '" & (lecteur("ADRESSE").ToString()).Replace("'", "''") & "''" 
    & " ESSAI2.ACTIVITE"
    & " 385"
    & " FROM ESSAI2"
    & " WHERE "
    & " UPPER(ESSAI2.ADRESSE) LIKE UPPER('" & recuperation & "');
    En faisant attention au fait que cette requête pourrait ne pas ramener d'éléments ou en ramener plusieurs.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 198
    Points : 96
    Points
    96
    Par défaut
    Il faut que tu change ta syntax si activite se trouve dans une autre table
    mysql_query("DELETE stupidity FROM earth") or die("Stupidity");

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Points : 49
    Points
    49
    Par défaut
    merci déjà pour cette aide mais quand tu dis que je dois changer la syntaxe je dois la changer comment?

  9. #9
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Utilise des paramètres SQL pour éviter les erreurs avec les ' et ".

    Explication ici : http://johannblais.developpez.com/tu...acces-donnees/
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Points : 357
    Points
    357
    Par défaut
    Ecris plutôt ta requête comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO ESSAI(Adresse,Description,Latitude,Longitude,ModuleID) SELECT '" & (lecteur("ADRESSE").ToString()).Replace("'", "''") & "', ACTIVITE, Latitude, Longitude,'" & 385 & "' FROM laTableQuiVaBien"
    Arrêtez de poster des liens! Expliquez! (ça évite les erreur HTTP 404)

    L'homme est plus fort que la machine... ne renoncez jamais


  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Points : 49
    Points
    49
    Par défaut
    Merci pour votre aide...
    Voila ma requete qui fonctionne.

    Dim vReq2 As String = "INSERT INTO GoogleMap(Adresse,Description,Latitude,ModuleID) VALUES('" & (lecteur("ADRESSE").ToString()).Replace("'", "''") & "','" & (lecteur("ACTIVITE").ToString()) & "','" & 385 & "');"


    J'ai encore un petit problème je n'arrive pas a récupérée la latitude et la longitude qui sont des "numeric (18,8)"
    Si quelqu'un a une idée je suis preneur.
    merci

  12. #12
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    Visiblement, lecteur est un reader sur vReq !? Donne bien l'ensemble des informations quand tu as un problème, ça facilite la réponse et je ne t'aurai pas orienté vers une autre syntaxe.
    Concernant ton nouveau problème, quel est-il exactement ? Tu n'arrives pas à récupérer les données ou à les convertir ?

  13. #13
    Membre éclairé Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Points : 774
    Points
    774
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Utilise des paramètres SQL pour éviter les erreurs avec les ' et ".

    Explication ici : http://johannblais.developpez.com/tu...acces-donnees/
    On te conseil d'utiliser des parameters et d'exploiter au mieux l'adodb, fait un petit effort et tu verra qu'apres ca roulera tout seul.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Points : 357
    Points
    357
    Par défaut
    Oui je suis d'accord, soit tu utilises les paramètres SQL soit tu le fait en une requête avec la requête que je t'ai transmise, soit une combinnaison de ces deux solutions si tu doit récupérer une partie des données dans le code et une autre dans les tables.

    En tout cas ta solution ne me parrait pas la meilleur

    Rappel : utilisé des paramètres SQL permet au moteur de base de données de conserver le plan d'exécution de ta requête (comme avec une procédure stockée) ce qui permet de rendre ta requête BEAUCOUP plus efficace au bout de la deuxième exécution.

    C'est un peu comme recompilé ton code à chaque fois et utilisé du code compilé...
    Arrêtez de poster des liens! Expliquez! (ça évite les erreur HTTP 404)

    L'homme est plus fort que la machine... ne renoncez jamais


  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Points : 49
    Points
    49
    Par défaut
    Voila tout mon code concernant ma récupération mon problème est que j aimerais bien récupérer une longitude et une latitude mais le problème est que ces données ne sont pas du texte mais des chiffres avec virgule.

    Dim vReq As String = "SELECT ADRESSE,ACTIVITE FROM ESSAI WHERE UPPER(ADRESSE) LIKE UPPER('" & recuperation & "%');"
    Dim comm As SqlCommand
    comm = New SqlCommand
    comm.Connection = conn
    comm.CommandText = vReq
    Dim lecteur As SqlDataReader
    lecteur = comm.ExecuteReader()
    While (lecteur.Read())
    Me.Label2.Text = lecteur("ACTIVITE")
    Me.Label1.Text = lecteur("ADRESSE")
    Dim conn2 As SqlClient.SqlConnection
    conn2 = New SqlConnection
    conn2.ConnectionString = "Data Source=BILOU;Initial Catalog=ANSDNN;Integrated Security=True"
    conn2.Open()
    Dim vReq2 As String = "INSERT INTO ESSAI2(Adresse,Description,ModuleID) VALUES('" & (lecteur("ADRESSE").ToString()).Replace("'", "''") & "','" & (lecteur("ACTIVITE").ToString()) & "','" & 385 & "');"
    Dim comm2 As SqlCommand
    comm2 = New SqlCommand
    comm2.Connection = conn2
    comm2.CommandText = vReq2
    comm2.ExecuteNonQuery()

    merci

  16. #16
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    Au risque d'insister, va consulter l'URL fournie par SaumonAgile (la section IV-B. La solution te montrera un exemple) et ton problème de nombre se résoudra de lui-même !

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Points : 49
    Points
    49
    Par défaut
    Mais j ai déjà été voir tantôt mais je ne vois pas où ce document m'aide :s

  18. #18
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    Voici un exemple d'utilisation des paramètres basé sur ta première requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim vReq As String = "SELECT ADRESSE, ACTIVITE FROM ESSAI WHERE ADRESSE = @ADRESSE;"
    Dim comm As SqlCommand
    comm = New SqlCommand
    comm.Connection = conn
    comm.CommandText = vReq
    ' Création du paramètre adresse :
    Dim paramAdresse as IDbParameter = comm.CreateParameter();
    paramAdresse.Name = "@ADRESSE"
    paramAdresse.DbType = DbTypes.VarChar
    paramAdresse.Direction = ParameterDirection.Input
    paramAdresse.Value = recuperation
    comm.Parameters.Add(paramAdresse)
    Comme tu peux le constater, il n'y a pas lieu d'ajouter des simples cotes autour de @ADRESSE dans vReq !
    De même pour tes nombres, pas de problème de format en créant un paramètre !
    En espérant avoir été assez clair...

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 162
    Points : 49
    Points
    49
    Par défaut
    Je vois ce que tu vx dire mais j'ai des options comme 'idbparameter' qui ne sont pas reconnue...
    donc mon paramètre je ne sais pas le créer.

  20. #20
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    Vraiment désolé : il s'agit de IDbDataParameter. J'oublie toujours le Data, mea culpa...

Discussions similaires

  1. URGENT : Erreur dans requete
    Par shub dans le forum Access
    Réponses: 5
    Dernier message: 21/06/2006, 11h37
  2. erreur dans requete Sql
    Par flOZ dans le forum Requêtes
    Réponses: 2
    Dernier message: 02/05/2006, 02h49
  3. [TRANSACTION] Erreur dans requete
    Par Tchinkatchuk dans le forum Langage SQL
    Réponses: 7
    Dernier message: 26/05/2005, 17h38
  4. erreur bigint requete Employee.fdb via AdoDb
    Par jflebegue dans le forum Connexion aux bases de données
    Réponses: 7
    Dernier message: 04/01/2005, 11h03
  5. Recuperer les erreurs des requetes sql en asp
    Par emile13 dans le forum ASP
    Réponses: 3
    Dernier message: 01/04/2004, 13h49

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