Absolute Database et fichiers Blob
après des heures de recherches 'I give up'
j'utilise DELPHI XE7
Absolute Database 7.93
DBGrid1
PopupMenu1
OpenDialog1
j'ai une table nommé Files elle ce trouve sur DataModul (DM)
l'utilisateur il peut ajouter ou supprimer un champ (Files est une table contiens que la sauvegarde des fichiers (Blob) avec un un seul champ clé nommé Num)
je peut récupérer le nom du champ à l'ouverture du Popupmenu1 sur DBGrid1 il affiche que les noms des champs sur dm.files
et par obligation je doit sauvegardé les fichiers sur ma base de données pour évité la perte des documents sur le disk
voila mon code :
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 31
| var
FName:String;
FileStream : TFileStream;
BlobStream : TStream;
begin
with (sender as TMenuItem) do
Label4.Caption:=StringReplace(TMenuItem(Sender).Caption,'&','',[rfReplaceAll, rfIgnoreCase]); // StringReplace pour enlevé le "&" du popupmenu caption
label3.Caption:=inttostr(dm.Contractuel.FieldValues['num']);
dm.FILES.Filtered:=false;
dm.FILES.Filter:='num='''+label3.Caption+'''';
dm.FILES.Filtered:=true;
if (OpenDialog1.Execute) then
begin
FName:=ExtractFileExt(OpenDialog1.FileName);
if OpenDialog1.FileName <>'' then
begin
if dm.Files.RecordCount=0 then
begin
dm.Files.Append;
try
BlobStream := dm.Files.CreateBlobStream(dm.Files.FieldByName(Label4.Caption), bmWrite); // bmWrite elle est souligné en rouge pour erreur de déclaration !
FileStream := TFileStream.Create(OpenDialog1.FileName, fmOpenRead or fmShareDenyNone);
BlobStream.CopyFrom(FileStream, FileStream.Size);
FileStream.Free;
BlobStream.Free;
dm.Files.Post;
except
dm.Files.Cancel;
end;
end; |
j'ai utilisé pratiquement ce code de cette page :
https://www.componentace.com/blob-fields-delphi.htm
le problème que je rencontre c'est que j'ai une erreur sur bmWrite il me dit qu'il est pas déclarer !!
des suggestions SVP ou d'autre formule pour faire la sauvegarde des fichiers !