![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SaveDialog, сохранение в DBF [D7, IB4.x]
alex_tonk © (2007-08-10 11:18:00)Доброго здоровья! Помогите разобраться со следующей проблемой. Есть фаербердовская база, нужно сохранить результаты запроса в DBF файл.
Что я делаю:
Вызываю процедуру:
procedure TFrmMainVwPL.BitBtn2Click(Sender: TObject);
begin
if SaveDlg.Execute then
DBUtil.CopyDataSetToDbf(QryPlat,SaveDlg.FileName,ttDBase);
end;
но тут она ругается на ttDBase...
А вот собственно и сама рабочая утилитка:
procedure CopyDataSetToDbf(Source: TDataSet; DestDbf: string; TblType: TTableType = ttDBase; ACodePage: cardinal = 866);
var
TblDbf: TDbf;
i, l: integer;
tft: TFieldType;
S: string;
begin
TblDbf:=TDbf.Create(nil);
try
TblDbf.TableName:=DestDbf;
TblDbf.Exclusive:=true;
TblDbf.FieldDefs.Clear;
TblDbf.TableLevel:=3;
try
for i:=0 to Source.FieldCount-1 do begin
case Source.Fields[i].DataType of
ftBCD: begin tft:=ftFloat; l:=0; end;
ftTime: begin tft:=ftString; l:=8; end;
else begin tft:=Source.Fields[i].DataType; l:=Source.Fields[i].Size; end;
end;
TblDbf.FieldDefs.Add(Source.Fields[i].FieldName,
tft,
l);
end;
except
ShowMessage(Source.Fields[i].FieldName);
end;
TblDbf.CreateTable;
TblDbf.Open;
S:=Source.Bookmark;
Source.DisableControls;
Source.First;
while not Source.Eof do begin
TblDbf.Append;
for i:=0 to Source.FieldDefs.Count-1 do
if (TblDbf.Fields[i].DataType=ftString) and (ACodePage=866) then
TblDbf.Fields[i].Value:=RxStrUtils.StrToOem(Source.Fields[i].Value)
else TblDbf.Fields[i].Value:=Source.Fields[i].Value;
TblDbf.Post;
Source.Next;
end;
finally
Source.Bookmark:=S;
Source.EnableControls;
TblDbf.Close;
TblDbf.Free;
end;
end;
Надеюсь на вашу помощь.
Mishell (2007-08-10 15:42:00) [1]DBTables в uses поместили?
Lacmus (2007-08-10 11:33:00) [2]>но тут она ругается на ttDBase...
Как ругается ?