[Delphi] Pilotes Open Office pour afficher des documents Word d'une base Oracle
Je suis en [Delphi] 2007 édition entreprise et j’utilise [Open Office] 2.1 et [Oracle 9].
J’ai un document au format Word stocké dans un THugeBlob dans une base de données oracle. Je le lis grâce en Stream sur le champ d’une TQuery et un [TConteneur]:D…et tout ce passe très bien. Mais aujourd’hui je voudrais l’ouvrir avec [Open Office]. Mais le TConteneur me l’ouvre toujours Word or mon but est de m’affranchir de Word. Avez-vous une idée pour résoudre mon PB ?? :cry: (Je voudrais bien qu'Open Office lise directement le stream ou le Champ HugeBlob.:oops:)
Voila l'ouverture du champ THugeBlob dans le TOLEContainer
Comme dans la base j'ai un document Word, celui-ci se lance automatiquement quand je double clique sur le Tcontainer.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
procedure TForm1.LectureDocDansOleContainer;
var QueryDyn : TQuery;
Bf: TBlobField;
Bs: TBlobStream;
begin
if ( not DBLocal.Connected) then //DBLocal = TDataBase
DBLocal.Connected := True;
// Recuperation du champ BLOB modèle
QueryDyn := TQueryLisia.Create(self);
with QueryDyn do
begin
DataBaseName := 'ALiasDBLocal';
ParamCheck := False;
SQL.Clear;
SQL.Add('SELECT CLEF1,CLEF2, MON_THUGEBLOB');
SQL.Add('FROM TABLE_DOCUMENT');
SQL.Add('WHERE CLEF1 = Val1 AND CLEF2 = Val2');
Open;
end;
Bf := QueryDyn.FieldByName('MON_THUGEBLOB') as TBlobField;
Bs := TBlobStream.Create(Bf, bmRead);
try
MainForm.OleContainer1.LoadFromStream(Bs);
MainForm.OleContainer1.DoVerb(0); // edit
finally
QueryDyn.Close;
Bs.Free;
end;
end; |
D'après ce que j'ai lu sur les forums pour manipuler l'objet Wold du TOleContainer on peut utiliser:
Code:
1 2 3 4 5
|
var MyWord : Variant;
begin
MyWord := OleContainer1.OleObject.Application.WordBasic;
end; |
Mon Pb n'est pas de lire un fichier sur le disque...
Mon Pb est de réussir dans mon application à lire un document word stocké dans une base de donné oracle. Je peu le récupérer dans un champ TBlobField ou dans un TBlobStream et je voudrais le lire avec open office (je n'aurais pas word sur la machine cliente). j'espère que je suis plus clair cette fois. Merci a devyan et a Clorish pour l'intérêt que vous porté à mon pb.
Merci Clorish et Jipété!!!
Je vais tester l'ouverture des documents directement avec open office et je vous tiens au courant!:king:
Par contre l'idée de Clorish
Citation:
Mais le plus simple serait de lancer manuellement le serveur OLE OppenOffice grace au lien evoqué, et d'ouvrir le Stream dans ce dernier.
M'intéresse beaucoup mais je ne sais pas comment lire un stream avec Ooo...;)
Désolé j'ai pas encore testé...
Oui comme qui dirais j'ai des petits problèmes de drivers natifs sur sur ma machine de test : http://www.developpez.net/forums/sho...55#post2506455
Après test cela ne fonctionne pas...
J'ai enfin put faire le test :lol::
1) Sur ma machine cliente j'ai bine installé open office.
2) J'ai associé OOo avec les fichiers Word (Word n'est pas prèsent sur cette machine)
3) Lors de l'ouverture du document avec le TOleContainer il me dit "erreur de lecture du flux" :aie:.
4) Je suis donc coincé...