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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 149
    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 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    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 236
    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 confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 149
    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 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    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 236
    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 confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 149
    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 confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 149
    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.

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