[IB][Delphi] Afficher et éditer un Blob par un LoadFromStream
L'application développée sous Delphi7 et IB6 utilise pour certaines éditions des "modéles" Office ( .xlt ou .dot ).
Ces modéles sont actuellement des fichiers sur le réseau ( ce qui les rend "fragiles", et complique les éventuelles migrations, nom de chemin... ).
Pour fiabiliser et rendre l'application plus homogène j'ai chargé ces fichiers dans des blobs:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
if Opendialog1.Execute then
begin
with ibdsBlob do
begin
....
Insert;
ibdsBlobNOM_BLOB.value := extractFilename(opendialog1.FileName);
ibdsBlobRESERVOIR.LoadFromFile(opendialog1.FileName);
Post;
end;
end; |
Je n'ai trouvé d'autre solution pour les afficher et les éditer que de les "réécrire" et de les "réouvrir" :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
procedure TForm1.ouvre_Xl(filename : AnsiString);
var
vMSExcel,vLink,vReadOnly : variant;
vXLWorkbooks, vXLWorkbook : variant;
vFilename : AnsiString;
begin
vFileName := 'c:\temp\'+filename ;
ibdsBlobRESERVOIR.SavetoFile(vfilename);
try
vMSExcel := GetActiveOleObject('Excel.Application');
except
vMSExcel := CreateOleObject('Excel.Application');
end;
vMSExcel.Visible := true;
vLink := unassigned;
vReadOnly := False;
vXLWorkbooks := vMSExcel.Workbooks;
vXLWorkbook := vXLWorkbooks.Open(vFileName, vLink, vReadOnly);
end; |
puis d'effacer par :
Code:
1 2
|
DeleteFile(vfilename); |
Je suis persuadé qu'il existe une méthode plus performante et plus "propre" pour lancer l'application ( Excel ou Word) et passer le contenu du Blob par un LoadFromStream...mais je n'y arrive pas !
Quelques lumiéres la dessus ?
Merci d'avance