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 :
j'ai utilisé pratiquement ce code de cette page :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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 !
Partager