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

Cryonie Messages postés 3 Date d'inscription mercredi 11 juin 2003 Statut Membre Dernière intervention 31 décembre 2003 - 26 nov. 2003 à 14:24
wahidov2000 Messages postés 31 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 15 septembre 2013 - 10 mars 2008 à 09:33
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

freud2000 Messages postés 37 Date d'inscription lundi 1 juillet 2002 Statut Membre Dernière intervention 5 mai 2004
26 nov. 2003 à 17:01
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
0
Cryonie Messages postés 3 Date d'inscription mercredi 11 juin 2003 Statut Membre Dernière intervention 31 décembre 2003
30 déc. 2003 à 16:46
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)
0
freud2000 Messages postés 37 Date d'inscription lundi 1 juillet 2002 Statut Membre Dernière intervention 5 mai 2004
30 déc. 2003 à 16:50
Bonjour,

peut etre. En fait moi j'utilise les librairies dbexpress. As tu essayé avec ?
0
Cryonie Messages postés 3 Date d'inscription mercredi 11 juin 2003 Statut Membre Dernière intervention 31 décembre 2003
31 déc. 2003 à 13:54
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 :(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
freud2000 Messages postés 37 Date d'inscription lundi 1 juillet 2002 Statut Membre Dernière intervention 5 mai 2004
5 janv. 2004 à 10:35
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);

0
wahidov2000 Messages postés 31 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 15 septembre 2013
10 mars 2008 à 09:33
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 
0
Rejoignez-nous