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

Bases de données Delphi Discussion :

Erreur lors d'un select sur un champ BLOB


Sujet :

Bases de données Delphi

  1. #1
    Lucas Panny
    Invité(e)
    Par défaut Erreur lors d'un select sur un champ BLOB
    Bonjour,

    Je travaille avec une bd Oracle et utilise ADO!!
    La sélection d'un champ de type blob génère une exception : "Ce type de données n'est pas pris en charge."
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('select eqfile from LUCAS.OBJ_FILE where id = 1');
    ADOQuery1.ExecSQL;
    où eqfile est de type BLOB

    Or j'ai besoin d'extraire le BLOB lu (avec id = 1) et après cela l'afficher (en fait c'est un fichier DOC) !!

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut


    Extrait de l'Aide
    Remarque : Pour les instructions SELECT, appelez la méthode Open au lieu de ExecSQL ou affectez la valeur True à la propriété Active.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Sans être certain que le problème du Blob soit lié, pourquoi faire un ExecSQL au lieu de Open puisque ta requête est de type Select ?

    [Edit] Grillé par Shai, once again

  4. #4
    Lucas Panny
    Invité(e)
    Par défaut
    Et oui, j'ai déjà fais avec Open mais même exception, je rappelle que la bd est oracle 9i (car avec le type IMAGE sous SQL SERVER, ça marche)!!

  5. #5
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Mis à part qu'il faut faire un Open et pas un ExecSQL, je dirais que c'est claire :
    "Ce type de données n'est pas pris en charge."

    Le problème doit venir du provider OLEDB que tu utilises pour ta connexion ADO. Je pense que tu utilises le provider OLEDB de Microsoft pour Oracle, hors il me semble que ce dernier n'est pas capable de lire les champs BLOB.

    Il faut utiliser celui fournit par Oracle pour pouvoir accéder à tous les types de champs.

  6. #6
    Lucas Panny
    Invité(e)
    Par défaut
    En effet, j'utilise Provider=MSDAORA.1; issu de msado15.dll !!
    hors il me semble que ce dernier n'est pas capable de lire les champs BLOB.
    Mais où est-ce ce driver spécial d'Oracle ? J'essaie de faire comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;OSAuthent=1;
    mais ça ne marche pas, provider non trouvé !!
    (REM : j'utilise ADO)

  7. #7
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Normalement avec oracle, tu dois avoir un CD avec les drivers ODBC afin de pouvoir l'installer.
    Après il te faut faire une liaison ODBC et lier ADO vers cet ODBC.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  8. #8
    Lucas Panny
    Invité(e)
    Par défaut
    Après il te faut faire une liaison ODBC et lier ADO vers cet ODBC.
    No comprende !!

    Le plus bizarre c'est que le driver d'Oracle est visible sur le serveur mais pas sur mon PC dans la liste lorsqu'on créer un fichier UDL de liaison. Surement une manque de cochage durant l'installation d'Oracle Client ?

  9. #9
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Lorsque tu installes le client Oracle, il faut installer
    "Oracle Windows Interfaces" qui contient notamment les éléments suivants :
    - Oracle ODBC Driver
    - Oracle Provider for OLEDB.

    (en tout cas, ça s'appelle comme ça avec Oracle 10g)

    Si tu installe "Oracle Provider for OLEDB", lorsque tu définis la connexion ADO, tu pourras choisir le provider "Oracle Provider for OLEDB".

    Dans ta chaîne de connexion tu auras alors :
    Provider=OraOLEDB.Oracle.1

    Ce n'est pas nécessaire de passer par ODBC. Cependant, si ça ne marche toujours pas et le BLOB n'est pas supporté tu peux tenter avec ODBC via ADO comme le suggère Rayek.

  10. #10
    Lucas Panny
    Invité(e)
    Par défaut
    Lorsque tu installes le client Oracle, il faut installer
    "Oracle Windows Interfaces"
    Et oui il y a ça pour Oracle 9.2.0.1.0 (9i release 2) et dans la liste des produits installés, tout est installé or il ne s'affiche pas dans la liste des providers lors de l'établissement d'une connexion ADO ! Mais pour l'ODBC, ça s'affiche !!

  11. #11
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Et oui il y a ça pour Oracle 9.2.0.1.0 (9i release 2) et dans la liste des produits installés, tout est installé or il ne s'affiche pas dans la liste des providers lors de l'établissement d'une connexion ADO ! Mais pour l'ODBC, ça s'affiche !!
    Tu dois avoir un problème d'installation dans ce cas. Essaie de refaire l'installation ou essaie avec ODBC.

    Là je ne peux rien faire de plus pour toi.

  12. #12
    Lucas Panny
    Invité(e)
    Par défaut
    Je vais alors réinstaller Oracle et voir ce qu'il en est !!
    Le programme que j'utilise est en fait capable de travailler avec sql server et oracle, il suffit seulement de changer la chaine de connexion. C'est pour ça que j'ai besoin du provider fait par Oracle car il supporte les blob

  13. #13
    Lucas Panny
    Invité(e)
    Par défaut
    Désolé mais j'ai pris une solution radicale : réinstaller Windows même car c'est assez bizarre que ça existe sur un ordinateur et pas sur un autre

    Le provider est enfin présent après cela !!!

  14. #14
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    La commande magique résoud tous les problèmes :

    c:> Format

    Install

Discussions similaires

  1. SELECT sur un champ avec accent
    Par Bibicmoi dans le forum Requêtes
    Réponses: 6
    Dernier message: 21/08/2005, 12h20
  2. pb avec select sur deux champs
    Par graphicsxp dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/03/2005, 15h30
  3. select sur un champ de type LONG
    Par ppd dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/09/2004, 18h19
  4. [ASP][SQL]Erreur lors d'un select
    Par DEC dans le forum ASP
    Réponses: 12
    Dernier message: 08/06/2004, 17h54
  5. Réponses: 6
    Dernier message: 08/06/2004, 14h51

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