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

Accès aux données Discussion :

Probleme requete SQL avec connection ODBC : presence de point dans le nom de colonne


Sujet :

Accès aux données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Probleme requete SQL avec connection ODBC : presence de point dans le nom de colonne
    Bonjour a tous,

    Je rencontre un probleme lors de l'execution de la requete "SELECT Colonne.1 FROM TableX"

    Le soucis vient de la presence d'un point dans le nom de la colonne "Colonne.1".
    Je precise que je ne peux pas changer le nom de la colonne.

    Le site de MSDN propose trois contournements de ce probleme que je n'arrive pas a mettre en oeuvre.
    Voir : http://support.microsoft.com/kb/972856/fr

    Par contre une requete type SELECT * fonctionne, toutefois je ne peux l'employer comme solution car la base est extremement volumineuse !
    Auriez vous une idee pour contourner ce probleme simplement ?

    Merci d'avance pour votre aide,
    cordialement, eddy s



    voici le detail du code au besoin, la ligne en rouge genere l'erreur
    ERROR [42000] [][ODBC Driver]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
            Cmd = "SELECT  TableX.[Colonne.1], TIME FROM TableX"
            Dim Con As Odbc.OdbcConnection
            Con = New Odbc.OdbcConnection(ConSTR)
            Dim Quer As New Odbc.OdbcCommand(Cmd, Con)
            Dim DataAdaptw As Odbc.OdbcDataAdapter
            DataAdaptw = New Odbc.OdbcDataAdapter(Quer)
            Try
                Con.Open()
                GridView1.DataSource =  DataAdaptw.SelectCommand.ExecuteReader() 
                GridView1.DataBind()
                Con.Close()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

  2. #2
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    Bonjour,

    Le SGBD utilisé est-il SQL Server ?
    Si non, ben les contournements ne peuvent s'appliquer de manière certaine.

    Toutefois un des contournements proposés devrait fonctionner dans soucis : définir une vue !

  3. #3
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    Salut,
    Quel est le type de base ? Sql Server ? Access ? Oracle ? MySQL ? etc...
    Rien a voir avec l'erreur mais il manque les usings !!!!!
    Les objets disposables doivent être placés dans des clause Using, notamment les connexion, les commandes, les streams, les readers, les adapters, etc...
    Ca permet de libérer les ressources correctement et au bon moment, qu'il y ait une exception ou non.

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par ostenhard Voir le message
    Le SGBD utilisé est-il SQL Server ?!
    Si c'était Sql Server, on comprend mal pourquoi il utiliserait ODBC.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Precisions
    Bonjour a tous,
    c'est une bdd Access distante, je connais tres peu d'elements sur elle, elle est integree a un SCADA industriel. Je suis contraint par le client a utiliser la connection ODBC.

    La table en question possede 2 colonnes : "TIME" et "Colonne.1"

    La requete : "SELECT TIME FROM TableX" fonctionne tres bien,
    la requete : SELECT Colonne.1 FROM TableX genere une erreur.


    PS : Ostenhard, comment construire une requete avec definition de vue ?

    eddy

  6. #6
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Si c'était Sql Server, on comprend mal pourquoi il utiliserait ODBC.
    De toute évidence il n'est pas un expert, rien ne dit qu'il est au courant pour ADO.Net et les classes SqlConnection, SqlCommand, etc...

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Encore des details
    Effectivement je ne suis pas expert

    Toutefois je pense pouvoir exclure les hypotheses suivantes :
    - probleme de connection avec la bdd,
    - probleme de datasource pour le gridview (puisque je parviens sans difficultes a afficher des donnees issues d'autres colonnes que "Colonne.1").

    J'ai essayer quelques bricolades, avec notament SELECT *,
    ensuite je balance les resultats dans une table tampon.
    Je lis les noms des colonnes de la table tampon,
    je detecte la presence de la chaine "Colonne.1" et repere l'index X,
    puis j'interroge la colonne item(X) ca fonctionne ...

    mais ca n'est vraiment pas propre et vue la taille de la bdd, c'est le mur assure pour une utilisaqtion industrielle !

  8. #8
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    Citation Envoyé par eddymercury Voir le message
    mais ca n'est vraiment pas propre et vue la taille de la bdd, c'est le mur assure pour une utilisaqtion industrielle !
    Euh mais utiliser Access pour bdd apparemment volumineuse et une utilisation industrielle, ça ne te dérange pas immédiatement ?

    Sinon s'il n'y a que deux colonnes et que tu les utilises toutes les deux, (on va faire une exception) pourquoi ne pas employer un select *. Le select * est gênant quand le nombre de colonne devient important.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Pas possible
    Je subis le choix du sgbd, et il y a plusieurs dizaines de colonnes au moins, voir des centaines.

  10. #10
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    En fait, si on te demande quelle est ta base de données ce n'est pas pour savoir si la connexion se passe bien, c'est parce que le SQL est un langage tout pourris implémenté différemment selon les SGBD.
    Ainsi, chacun a sa syntaxe, notamment pour les délimiteur d'identifers.
    Par exemple, sous MySql c'est `table`.`champ`, sous SqlServer c'est [schema].[table].[champ]Pour Access je crois me souvenir que c'est pareil que pour Sql Server.
    Ta requête devrait donc être :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT  [TableX].[Colonne.1] AS [Colonne1], [TableX].[TIME] FROM [TableX]

    Remarque l'utilisation d'un alias permettant de renommer la colonne en sortie.

    Pour confirmer le plus simple serait d'ouvrir ta base avec Microsoft Access et consulter la table en question, pour ce faire il génèrera de lui-même le SQL qu'il faut (du moins dans mes souvenirs, la dernière fois que j'ai utilisé access c'était l'époque de access 97, voir avant ^^' )

  11. #11
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    De toute évidence il n'est pas un expert, rien ne dit qu'il est au courant pour ADO.Net et les classes SqlConnection, SqlCommand, etc...
    Sans être expert s'il utilise SQL SERVER et ne connais pas (au moins) ADO ou LINQ ou pourrait dire que c'est un etudiant de première année


    J'ai essayer quelques bricolades, avec notament SELECT *,
    ensuite je balance les resultats dans une table tampon.
    Je lis les noms des colonnes de la table tampon,
    je detecte la presence de la chaine "Colonne.1" et repere l'index X,
    puis j'interroge la colonne item(X) ca fonctionne ...
    Donc en effet le problème viens bien de la requête...

    Voyez ce que vous génère Access comme requête pour sélectionner ces deux colonnes et testez dans votre appli...
    Si cela ne fonctionne pas dans votre appli testez en OLEDB...
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  12. #12
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    Citation Envoyé par iberserk Voir le message
    Sans être expert s'il utilise SQL SERVER et ne connais pas (au moins) ADO ou LINQ ou pourrait dire que c'est un etudiant de première année
    Encore une fois, pas forcément. Par exemple, moi, quand je suis arrivé dans ma boite actuelle je n'avais encore jamais fait de .net ni de sql server.
    J'avais essentiellement fait du C, C++ et java, avec mysql en sgbd. Bah quand il a fallut se connecter a la base de donnée, le premier truc que j'ai cherché c'est pas "ADO" ou "LinQ" (qui de toute faon n'existait pas a l'époque). J'ai cherché comment utiliser ODBC, parce que c'était quelque chose que je connaissais.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 8
    Points
    8
    Par défaut PROBLEME RESOLU
    Une enquete s'imposait en effet aupres du client quant au type de SGDB utilise, il s'avere que celui-ci n'est ni SQLServer, ni MySql, ni Access mais un fournisseur specifique dedie au SCADA et associe a celui-ci. Il possede sa propre synthaxe SQL dont j'ai pu avoir le document de specifications ... je suis dans la *
    La connection est etablie grace a un objet DNS qui etait deja configure, et avec lequel je communiquais joyeusement depuis des semaines sans connaitre le SGDB.

    Mon post est donc hors sujet et je m'en excuse.

    RESOLUTION : mon probleme de "." dans le nom de colonne est insoluble, j'utiliserai donc une requete SELECT * versee dans un dataReader. J'interroge ensuite le champ Colonne.1 du datareader.

    merci pour vos pistes, a bientot, eddy

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Je me presente
    Pour vous eclairer un peu sur l'etendu de mon savoir, je me presente :

    je suis ingenieur en ... electricite

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

Discussions similaires

  1. Probleme requete sql avec insert
    Par affaf09 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 21/05/2015, 21h59
  2. Réponses: 6
    Dernier message: 27/07/2009, 05h14
  3. probleme requete sql avec chiffres avec virgule
    Par muffin dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 17/09/2007, 19h00
  4. Probleme de requete SQL avec la valeur NULL
    Par samyghan dans le forum Installation
    Réponses: 8
    Dernier message: 12/03/2006, 17h24
  5. Probleme de requete SQL avec un champs date
    Par ju360modena dans le forum ASP
    Réponses: 5
    Dernier message: 16/06/2005, 11h18

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