Здравствуйте, Судейкин Андрей Владимирович.
BackUp базы данных, отдельно скрипт на создание, проект здесь:
176301.ZIP (220.2 кб)Используется хранимая процедура. В приложении обработчик выбора пункта меню. Спрашивайте, если что-то не ясно. С уважением
Приложение:
procedure TfAdmin.N25Click(Sender: TObject);
Var
i: Integer; // номер строки в dbf
iRead: integer; // прочитано
iWrite: integer; // записано
Begin
// очистка таблицы gp
try
if sp.Active then sp.Close;
sp.StoredProcName := 'GP_ZAP';
sp.Params.Clear;
sp.Prepare;
sp.ExecProc;
dm.IBTransaction1.Commit;
except
ShowMessage('Ошибка очистки!');
end;
sp.StoredProcName := 'GP_INS';
with sp.Params do begin
Clear;
CreateParam( ftString, 'kzk', ptInput );
CreateParam( ftString, 'chto', ptInput );
CreateParam( ftString, 'kch', ptInput );
CreateParam( ftString, 'nchto', ptInput );
CreateParam( ftString, 'ci', ptInput );
CreateParam( ftString, 'ei', ptInput );
CreateParam( ftFloat, 'ocn', ptInput );
CreateParam( ftFloat, 'ocns', ptInput );
CreateParam( ftFloat, 'nchp', ptInput );
CreateParam( ftFloat, 'nchps', ptInput );
CreateParam( ftFloat, 'ncena', ptInput );
CreateParam( ftFloat, 'ves', ptInput );
CreateParam( ftString, 'knc', ptInput );
CreateParam( ftString, 'knch', ptInput );
CreateParam( ftString, 'pr', ptInput );
CreateParam( ftString, 'npr', ptInput );
CreateParam( ftInteger, 'id', ptOutput );
end;
sp.Prepare;
if Tvhod.Active then TVhod.Close;
TVhod.Open;
iRead := 0;
iWrite:= 0;
for i:= 0 to TVhod.RecordCount -1 do
begin
inc(iRead);
try
with sp.Params do begin
ParamByName( 'kzk' ).AsString :=
sdos_win(TVhod.FieldByName('kzk').AsString);
ParamByName( 'chto' ).AsString :=
sdos_win(TVhod.FieldByName('chto').AsString);
ParamByName( 'kch' ).AsString :=
sdos_win(TVhod.FieldByName('kch').AsString);
ParamByName( 'nchto' ).AsString :=
sdos_win(TVhod.FieldByName('nchto').AsString);
ParamByName( 'ci' ).AsString :=
sdos_win(TVhod.FieldByName('ci').AsString);
ParamByName( 'ei' ).AsString :=
sdos_win(TVhod.FieldByName('ei').AsString);
ParamByName( 'ocn' ).AsFloat := TVhod.FieldByName('ocn').AsFloat;
ParamByName( 'ocns' ).AsFloat := TVhod.FieldByName('ocns').AsFloat;
ParamByName( 'nchp' ).AsFloat := TVhod.FieldByName('nchp').AsFloat;
ParamByName( 'nchps' ).AsFloat := TVhod.FieldByName('nchps').AsFloat;
ParamByName( 'ncena' ).AsFloat := TVhod.FieldByName('ncena').AsFloat;
ParamByName( 'ves' ).AsFloat := TVhod.FieldByName('ves').AsFloat;
ParamByName( 'knc' ).AsString :=
sdos_win(TVhod.FieldByName('knc').AsString);
ParamByName( 'knch' ).AsString :=
sdos_win(TVhod.FieldByName('knch').AsString);
ParamByName( 'pr' ).AsString :=
sdos_win(TVhod.FieldByName('pr').AsString);
ParamByName( 'npr' ).AsString :=
sdos_win(TVhod.FieldByName('npr').AsString);
end;
sp.ExecProc;
inc(iWrite);
if ( i mod 1000 = 0 ) then dm.IBTransaction1.Commit;
except
ShowMessage('Ошибка добавления записи ('+IntTostr(i)+')!');
end;
TVhod.Next;
end; { for }
dm.IBTransaction1.Commit;
TVhod.Close;
ShowMessage('Прочитано '+IntToStr(iRead)+' ;записано '+IntToStr(iWrite));
end;