[Delphi 7 - Oracle] ORA-01461 Erreur sur BLOB

Signaler
Messages postés
3
Date d'inscription
mercredi 11 juin 2003
Statut
Membre
Dernière intervention
31 décembre 2003
-
Messages postés
31
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
15 septembre 2013
-
Salut tout le monde.

Je développe une application sous Delphi/Oracle8i
Je dois intégrer des documents (word et pdf) dans la base de donnée.

J'ai une table PDF avec un champ Document_word de type BLOB.

Dans Delphi j'utilise ce code :

Code:

ADO_QRYImportation.SQL.Add('INSERT INTO PDF(document_word ');
ADO_QRYImportation.SQL.Add(' VALUES(:dw)');
ADO_QRYImportation.Parameters.ParamByName('dw').LoadFromFile('c:\test.doc',ftBlob);
ADO_QRYImportation.ExecSql;


J'ai trouvé ce code sur un autre site et il marche ... ... sauf que quand je lui passe un fichier de plus de 4Ko il m'insulte en me disant : ORA-01461 Une valeur 'LONG' ne peut être liée que dans une colone de type 'LONG'.

J'ai cherché un peut partout et .. ... bah je trouve rien

Siouplait HELP !

merci

6 réponses

Messages postés
37
Date d'inscription
lundi 1 juillet 2002
Statut
Membre
Dernière intervention
5 mai 2004

Bonjour,

moi je fais du delphi 7/oracle 9 et j'utilise cette methode simplement
CDSBlob est un clientdataset bracnhé sur SQlquery

//Récupération de la ligne ou tu veux inserer par la clef
SQlquery.sql.Add('Select * from PDF WHERE ...)
SQlquery.active := true;

CDSBlob.active := true;
if CDSBlob.active then
begin
if CDSBlob.state = dsBrowse then CDSBlob.edit;
TblobField(CDSBlob.FieldByName(Nom de la colonne)).loadfromfile( 'c:\test.doc');
CDSBlob.applyUpdates(0);

J'espere que ca pourra t'aider mais j'ai bien galéré moi aussi
Messages postés
3
Date d'inscription
mercredi 11 juin 2003
Statut
Membre
Dernière intervention
31 décembre 2003

Merci pour ta reponse ...

Par contre .. pas de bol ca marche pas.

J'avais deja essaye avec un Dataset mais il me dit : Type de donnée non pris en charge :(
J'utilise les composants ADO ... ce serait ca qui me mettrait un binz pas possible ??

je comprends plus .. :sad)
Messages postés
37
Date d'inscription
lundi 1 juillet 2002
Statut
Membre
Dernière intervention
5 mai 2004

Bonjour,

peut etre. En fait moi j'utilise les librairies dbexpress. As tu essayé avec ?
Messages postés
3
Date d'inscription
mercredi 11 juin 2003
Statut
Membre
Dernière intervention
31 décembre 2003

Franchement .. je viens d'essayer avec DBexpress ...
Quand je met mon dataset déjà j'arrive pas à le lier à ma requete sql ....
Ensuite quand j'essaye de mettre la requete sql dans le dataset (dans le connamdText) il em jette en me disant nom de colonne non valide ...

Je suis perdu :(
Messages postés
37
Date d'inscription
lundi 1 juillet 2002
Statut
Membre
Dernière intervention
5 mai 2004

J'ai pas mal galéré en effet.
Moi j'utilise donc tout les composants DBExpress .
J'ai donc une SQLconnection à laquelle je relie une TSQLQuery dans laquelle se trouve la requette.
Je place un TDataSetProvider qui qui est relié à la TSQLQuery et enfin un TClientDataset qui est relié au TDataSetProvider.
Donc pour résumer :
TSQLconnection -> TSQLQuery -> TDataSetProvider -> TClientDataset.
Et donc comme je l'avais écris avant avec CDSBlob le nom du TClientDataset :
//Récupération de la ligne ou tu veux inserer par la clef
SQlquery.sql.Add('Select * from PDF WHERE ...) 
SQlquery.active := true;

CDSBlob.active := true;
if CDSBlob.active then
begin
if CDSBlob.state = dsBrowse then CDSBlob.edit;
TblobField(CDSBlob.FieldByName(Nom de la colonne)).loadfromfile( 'c:\\test.doc');
CDSBlob.applyUpdates(0);

Messages postés
31
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
15 septembre 2013

bonjour,
j'ai un programe en delphi 7 qui utilse le BDE et je suis entrain de le refaire avec ADO mais la fonction ApplyUpdates ne marche pas avec ce dernier ??
j'espere avoir 1 reponse MERCI