Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.02;
Скачать: CL | DM;

Вниз

SaveDialog, сохранение в DBF   Найти похожие ветки 

 
alex_tonk   (2007-08-10 11:18) [0]

Доброго здоровья! Помогите разобраться со следующей проблемой. Есть фаербердовская база, нужно сохранить результаты запроса в 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;

Надеюсь на вашу помощь.


 
Lacmus ©   (2007-08-10 11:33) [1]

>но тут она ругается на ttDBase...

Как ругается ?


 
Mishell ©   (2007-08-10 15:42) [2]

DBTables в uses поместили?



Страницы: 1 вся ветка

Текущий архив: 2007.09.02;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.024 c
3-1178529064
bss
2007-05-07 13:11
2007.09.02
Как присвоить blob-полю значение NULL?


15-1185973165
TStas
2007-08-01 16:59
2007.09.02
Компонент TNMHTTP


2-1186484910
Strate
2007-08-07 15:08
2007.09.02
Перевод из строки в TDateTime


1-1180716813
Мелодик
2007-06-01 20:53
2007.09.02
Мерцает компонент


8-1164745849
Oburec
2006-11-28 23:30
2007.09.02
Как отобразить графику рисуемую c OpenGL на простой форме)