procedure TFHistoire.btnExportClick(Sender: TObject);
var
QueryRead: TibQuery;
dossier, sChaine: string;
iVal: integer;
B: TFileStream;
T: TMemoryStream;
L: Longint;
aFHistoireExport: TFHistoireExport;
bImport: boolean;
iNumDossier: Integer;
sDico, sFichier: string;
begin
aFHistoireExport := TFHistoireExport.create(self);
try
aFHistoireExport.ShowModal;
bImport := aFHistoireExport.bImport;
iNumDossier := aFHistoireExport.iNumDossier;
sDico := aFHistoireExport.sDico;
sFichier := aFHistoireExport.sFichier;
finally
FreeAndNil(aFHistoireExport);
end;
if bImport then
begin
if length(sFichier) < 5 then sFichier := 'Histoire.dica';
QueryRead := TibQuery.Create(Application);
QueryRead.Database := dm.ibd_BASE;
QueryRead.SQL.Clear;
QueryRead.SQL.Add('select hi_dicorigine'
+ ',hi_date_texte'
+ ',hi_cat'
+ ',hi_titre'
+ ',hi_texte'
+ ',hi_image'
+ ' from ref_histoire'
+ ' where hi_dossier = ' + intTostr(iNumDossier));
if Length(sDico) > 0 then
QueryRead.SQL.Add('and hi_dicorigine=''' + sDico + '''');
QueryRead.SQL.Add(' order by hi_date_debut');
QueryRead.Open;
QueryRead.Last;
QueryRead.First;
if QueryRead.RecordCount = 0 then
begin
ShowMessage('Rien à exporter');
QueryRead.Close;
FreeAndNil(QueryRead);
exit;
end;
sFichier := ChangeFileExt(sFichier, '.dica');
B := TFileStream.Create(sFichier, fmCreate);
T := TMemoryStream.Create;
while not QueryRead.EOF do
begin
sChaine := '';
sChaine := (QueryRead.FieldByName('hi_dicorigine').AsString);
L := Length(sChaine);
B.WriteBuffer(L, SizeOf(L));
B.WriteBuffer(Pointer(sChaine)^, L);
sChaine := '';
sChaine := (QueryRead.FieldByName('hi_date_texte').AsString);
L := Length(sChaine);
B.WriteBuffer(L, SizeOf(L));
B.WriteBuffer(Pointer(sChaine)^, L);
iVal := QueryRead.FieldByName('hi_cat').AsInteger;
B.WriteBuffer(iVal, sizeOf(ival));
sChaine := '';
sChaine := (QueryRead.FieldByName('hi_titre').AsString);
L := Length(sChaine);
B.WriteBuffer(L, SizeOf(L));
B.WriteBuffer(Pointer(sChaine)^, L);
T.Clear;
TBlobField(QueryRead.FieldByName('hi_texte')).SaveToStream(T);
iVal := T.Position;
B.WriteBuffer(iVal, 4);
if not QueryRead.FieldByName('hi_texte').IsNull then
TBlobField(QueryRead.FieldByName('hi_texte')).SaveToStream(B);
T.Clear;
TBlobField(QueryRead.FieldByName('hi_image')).SaveToStream(T);
iVal := T.Position;
B.WriteBuffer(iVal, 4);
if not QueryRead.FieldByName('hi_image').IsNull then
TBlobField(QueryRead.FieldByName('hi_image')).SaveToStream(B);
QueryRead.Next;
end;
FreeAndNil(B);
FreeAndNil(T);
QueryRead.Close;
FreeAndNil(QueryRead);
showMessage('Le fichier Histoire créé porte le nom : ' + sFichier);
end;
Partager