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 :

[Oracle - ODBC] erreur "Opération non applicable" avec champs de type 'LONG RAW'


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 149
    Points : 61
    Points
    61
    Par défaut [Oracle - ODBC] erreur "Opération non applicable" avec champs de type 'LONG RAW'
    Voilà mon problème est simple, lorsque j'essai d'exécuter la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Update LISTE_RESSOURCE Set DATA = :RESSOURCEFILEDATA Where IDRESSOURCE = 252
    avec RESSOURCEFILEDATA un paramètre de type 'ftblob' dont j'ai chargé le contenu depuis un fichier et "DATA" un champ de type "LONG RAW" j'obtiens l'erreur "Opération non applicable".

    Si j'utilise le driver Oracle natif du BDE alors la requête fonctionne sans problème dans des conditions indentiques. Je suppose qu'il y a donc un souci avec le driver ODBC (pour info je suis sous Windows Vista, le driver ODBC est dénommé "Microsoft ODBC for Oracle" et a pour numéro de version 6.00.6000.16386).
    J'ai tenté de télécharger les derniers drivers ODBC Oracle mais je ne suis pas sur de les avoir installer correctement (j'ai copié les fichiers dans $ORA_HOME comme spécifié mais dans l'administrateur de sources de données ODBC cela n'a rien changé), en tout le problème demeure.

    Connaissez-vous un moyen de régler ce problème ? car j'ai besoin d'utiliser ce driver, le driver BDE posant d'autres problèmes (comme entre autres de retourner des retours chariots "bizarres" #10#10 plutôt que les #13#10 classiques lorsqu'on récupères des champs contenant plusieurs lignes de texte, à moins que vous connaissez un moyen de résoudre cela autrement qu'en corrigeant manuellement chaque champs de type "multilignes" reçus).

    Merci par avance pour votre aide !

  2. #2
    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
    Tu peux nous montrer le code qui renseigne le paramètre RESSOURCEFILEDATA.
    Modérateur Delphi

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

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 149
    Points : 61
    Points
    61
    Par défaut
    pas de probs, voici le code qui créé et défini le paramètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Param:= Query.Params.CreateParam( ftBlob, 'RESSOURCEFILEDATA', ptInputOutput );
    if ( OpenDialog.Execute ) then
       Param.LoadFromFile( OpenDialog.FileName, ftBlob );
    Puis celui de l'éxécution de la requête tant qu'on y est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if (Query.ParamCheck) then Query.SQL.Text:= Request;
     
    if ( not Query.Prepared ) then begin
       Query.UniDirectional:= True;
       Query.Prepare;
    end;
     
    // Permet d'éviter l'erreur habituel de création du handle de curseur...
    If ( pos('SELECT', Trim(AnsiUpperCase(Query.SQL.Text))) = 1 ) then
       Query.Open;
    else
       Query.ExecSQL;
    J'ajoute que "Query.ParamCheck" est initialisé à true avant...

    C'est très simple et ça marche très bien avec le driver BDE Oracle et avec tous les autres SGBD que j'ai pu tester (MSSQL, Access, MySQL), il n'y a qu'avec la combinaison Oracle, Driver ODBC que je suis embêté. Pourtant j'ai un driver réçent (celui de Vista), d'ailleurs je n'arrive même pas à le changer.

    Je sais que le contenu du paramètre est bien chargé (car je peux l'afficher directement avant d'éxécuter la requête).

  4. #4
    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
    En général les drivers fournit de base dans windows ne sont pas terrible et sont souvent buggé (sauf celui de SQL Serveur )
    Normalement quand tu as Oracle tu as aussi des CD de Drivers ODBC pour la plupart des systèmes d'exploitation existant (Au pire tu dois pouvoir les télécharger sur internet depuis le site officiel).
    Installes les puis refait des tests.
    Modérateur Delphi

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

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 149
    Points : 61
    Points
    61
    Par défaut
    J'ai déjà tenté de réinstaller les drivers Oracle mais cela n'a pas fonctionné (la version de pilote est toujours la même). Cela me surprend tout de même que les drivers ODBC de Vista puissent être buggés de la sorte.

    Je vous tiens au courant, si quelqu'un a une autre solution, je suis preneur :-) !

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 149
    Points : 61
    Points
    61
    Par défaut
    Je viens d'installer un driver ODBC fourni par Oracle via "l'universal installer" et j'ai enfin un nouveau pilote correspondant dans l'administrateur de sources de données ODBC. En utilisant ce nouveau pilote je n'ai plus le problème, il s'agit donc bien d'un problème de driver... hum, cela signifie que je devrais m'assurer que le client dispose du bon driver, j'aurai préféré trouver une solution me permettant de garder ce driver.

  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
    Rien ne t'empeche de fournit le pilote que tu viens de télécharger avec ton application et indiquer qu'il faut ce pilote et ne pas utiliser celui fournit par Windows.

    Je pense qu'en général c'est un informaticien qui va installer ton logiciel non ? Donc si tu fournis une bonne documentation il ne devrait pas y avoir de problèmes.
    Modérateur Delphi

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

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 149
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par Malatar
    Rien ne t'empeche de fournit le pilote que tu viens de télécharger avec ton application et indiquer qu'il faut ce pilote et ne pas utiliser celui fournit par Windows.

    Je pense qu'en général c'est un informaticien qui va installer ton logiciel non ? Donc si tu fournis une bonne documentation il ne devrait pas y avoir de problèmes.
    On essai de proposer un logiciel qui dépend le moins possible de composants externes (dont par exemple un driver) car certains clients nous impose de fortes contraintes, même pour l'installation. Par exemple nous avons un installshield qui pourrait faire ça très bien mais dans certains cas le client refuse de passer un installShiled et préfère contrôler le tout via un lot SMS ou ce genre de chose. Si on leur demande d'installer un pilote, ça risque de faire grincer des dents et ça ajoute en quelquesorte une contrainte supplémentaire au fonctionnement de notre appli. Bon après c'est évident qu'on ne pourra pas toujours faire en sorte que l'appli. fonctionne dans tous les cas et tôt ou tard il faut trouver des compromis de ce genre (n'empêche que jusqu'à présent on s'est toujours débrouillé pour ne rien demander de particulier si ce n'est la présence du MDAC pour les OS vraiment anciens)...

Discussions similaires

  1. Erreur 3251: opération non autorisée..
    Par gbzmt dans le forum VBA Access
    Réponses: 5
    Dernier message: 21/02/2008, 22h01
  2. Message d'erreur: 'Opération non applicable'
    Par souminet dans le forum Bases de données
    Réponses: 1
    Dernier message: 07/11/2007, 12h06
  3. Erreur 3251: Opération non autorisé pr ce type d'objet
    Par Ragnarok85 dans le forum Access
    Réponses: 10
    Dernier message: 14/02/2007, 09h52
  4. [D7][Oracle 8i] "Opération non applicable" + DataS
    Par Magnus dans le forum Bases de données
    Réponses: 3
    Dernier message: 17/11/2005, 08h36
  5. EBDClient "Opération non applicable"
    Par AKSEL dans le forum Composants VCL
    Réponses: 1
    Dernier message: 15/09/2005, 16h34

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