Создаю DBF так
- Код: Выделить всё
procedure TForm1.CreateTable(AFileName: String);
begin
With Dbf1 do
begin
Close;
with FieldDefs do
begin
Clear;
Add('ID',ftInteger,11);
Add('NIB',ftString,16);
Add('MARK',ftInteger,6);
Add('FIOPAC',ftString,30);
Add('DATAROGD',ftDate,8);
Add('POLIS',ftString,25);
Add('KODOTD',ftInteger,6);
Add('DATAPOST',ftDate,8);
Add('DATAVIPIS',ftDate,8);
Add('KODWRN',ftString,4);
Add('NAMEWRN',ftString,50);
Add('KODUSLUGI',ftString,9);
Add('NAMEUSLUGI',ftString,250);
Add('CENAUSLUGI',ftFloat,20);
Dbf1.FieldDefs[Dbf1.FieldDefs.Count-1].Precision := 4;
Add('KOLUSLUG',ftInteger,6);
Add('DATAOKAZAN',ftDate,8);
Add('DIAGNOZ',ftString,4);
Add('STOIMOST',ftFloat,20);
Dbf1.FieldDefs[Dbf1.FieldDefs.Count-1].Precision := 4;
end;
TableName:=AFileName;
CreateTable;
Exclusive := true;
end;
end;
Выгружаю так
- Код: Выделить всё
procedure TForm1.Button3Click(Sender: TObject);
var dbf : file of byte;
CP: byte;
begin
if SaveDialog1.Execute then
CreateTable(Utf8ToSys(SaveDialog1.FileName));
Dbf1.TableName:=Utf8ToSys(SaveDialog1.FileName);
SQLQuery5.Open;
Dbf1.Active:=true;
Dbf1.First;
Dbf1.Edit;
while not Form1.SQLQuery5.EOF Do
Begin
Dbf1.FieldByName('ID').AsInteger:=SQLQuery5.FieldByName('ID').AsInteger;
Dbf1.FieldByName('NIB').AsString:=Utf8ToConsole(SQLQuery5.FieldByName('NIB').AsString);
Dbf1.FieldByName('MARK').AsInteger:=SQLQuery5.FieldByName('MARK').AsInteger;
Dbf1.FieldByName('FIOPAC').AsString:=Utf8ToConsole(Form1.SQLQuery5.FieldByName('FIOPAC').AsString);
Dbf1.FieldByName('DATAROGD').AsDateTime:=Form1.SQLQuery5.FieldByName('DATAROGD').AsDateTime;
Dbf1.FieldByName('POLIS').AsString:=Utf8ToConsole(Form1.SQLQuery5.FieldByName('POLIS').AsString);
Dbf1.FieldByName('KODOTD').AsInteger:=SQLQuery5.FieldByName('KODOT').AsInteger;
Dbf1.FieldByName('DATAPOST').AsDateTime:=Form1.SQLQuery5.FieldByName('DATAPOST').AsDateTime;
Dbf1.FieldByName('DATAVIPIS').AsDateTime:=Form1.SQLQuery5.FieldByName('DATAVIPIS').AsDateTime;
Dbf1.FieldByName('KODWRN').AsString:=Utf8ToConsole(Form1.SQLQuery5.FieldByName('KODWRN').AsString);
Dbf1.FieldByName('NAMEWRN').AsString:=Utf8ToConsole(Form1.SQLQuery5.FieldByName('NAMEWRN').AsString);
Dbf1.FieldByName('KODUSLUGI').AsString:=Utf8ToConsole(SQLQuery5.FieldByName('KODUSLUGI').AsString);
Dbf1.FieldByName('NAMEUSLUGI').AsString:=Utf8ToConsole(Form1.SQLQuery5.FieldByName('NAMEUSLUGI').AsString);
Dbf1.FieldByName('CENAUSLUGI').AsFloat:=SQLQuery5.FieldByName('CENAUSLUGI').AsFloat;
Dbf1.FieldByName('KOLUSLUG').AsInteger:=SQLQuery5.FieldByName('KOLUSLUG').AsInteger;
Dbf1.FieldByName('DATAOKAZAN').AsDateTime:=SQLQuery5.FieldByName('DATAOKAZAN').AsDateTime;
Dbf1.FieldByName('DIAGNOZ').AsString:=Utf8ToConsole(SQLQuery5.FieldByName('DIAGNOZ').AsString);
Dbf1.FieldByName('STOIMOST').AsFloat:=SQLQuery5.FieldByName('STOIMOST').AsFloat;
Dbf1.Post;
Dbf1.Insert;
Form1.SQLQuery5.Next;
end;
SQLQuery5.Close;
Dbf1.Free;
AssignFile(dbf, SysToUtf8(SaveDialog1.FileName));
Reset(dbf);
Seek(dbf, 29);
CP := $26;
Write(dbf, CP);
CloseFile(dbf);
DBF1.Free;
end;
Приходится перезапускать программу.
В общем вопрос прост В ЧЕМ ПРИЧИНА и КАК ИСПРАВИТЬ?