![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
CalcFields [D6, Paradox]
ТеньЛуны © (2002-02-01 14:02:00)Можно ли запретить обработку сабж???
Alim (2002-02-01 15:30:00) [1]делай так
Procedure TForm1.BigProcessingFunction;
begin
Table1.OnCalcFields := nil;
<Включите любые по сложности вычисления в этом месте!>
Table1.OnCalcFields := Table1OnCalcFields;
end;
ТеньЛуны (2002-02-01 15:02:00) [2]решилось очень просто установкой
dgEditing:=false;
у грида
ТеньЛуны (2002-02-01 14:52:00) [3]тут не мудрёж, тут нужна предыдущая дата для вычисления.
симтом такой - он чистит при скроллинге датагрид
Alexandr (2002-02-01 14:50:00) [4]ну все правильно!!!!!!!!
у тебя complet:=false
т.о. not complet=true
и естественно фильтрация будет
а про inc(i) и qubase.next и dates[i] я чего-то не въехал сразу. Чего-то ты тут намудрил по-моему
ТеньЛуны (2002-02-01 14:45:00) [5]Сделал...вот код, всё равно
unit dm;
interface
uses
SysUtils, Classes, Controls, DB, DBTables, DateUtils;
type
TdmApp = class(TDataModule)
tblBase: TTable;
dsBase: TDataSource;
quBase: TQuery;
tblBaseID: TIntegerField;
tblBaseDate: TDateField;
tblBaseMoney: TStringField;
tblBaseProcent: TFloatField;
tblBasepstav: TFloatField;
procedure tblBaseCalcFields(DataSet: TDataSet);
procedure DataModuleCreate(Sender: TObject);
private
{ Private declarations }
public
dates:array[1..1000] of TDate;
end;
var
dmApp: TdmApp;
i:integer;
complet:boolean;
implementation
uses app;
{$R *.dfm}
procedure TdmApp.tblBaseCalcFields(DataSet: TDataSet);
var
f:word;
delta:integer;
date1, date2:TDate;
begin
if not complet then begin
{tblBaseID}
tblBaseID.Value:=quBase.FieldValues["ID"];
{tblBaseDAte}
tblBaseDate.Value:=quBase.FieldValues["Date"];
dates[i]:=quBase.FieldValues["Date"];
delta:=trunc(dates[i])-trunc(dates[i-1]);
if (tblBaseID.Value<>1) or (delta=0) then tblBasePStav.Value:=st*delta/100 else
tblBasepStav.Value:=0;
if quBase.FieldValues["Flag"]=1 then tblBaseMoney.Value:="+"+FloatToStr(quBase.FieldValues["Money"]);
if quBase.FieldValues["Flag"]=0 then tblBaseMoney.Value:="-"+FloatToStr(quBase.FieldValues["Money"]);
Inc(i);
quBase.Next;
if quBase.Eof then begin
date2:=Date;
tblBaseID.Value:=i;
tblBaseDate.Value:=date2;
delta:=trunc(date2)-trunc(dates[i-1]);
tblBasePStav.Value:=st*delta/100;
complet:=true;
end;
end;
end;
procedure TdmApp.DataModuleCreate(Sender: TObject);
begin
i:=1;
complet:=false;
end;
end.
Alexandr (2002-02-01 14:25:00) [6]слушай, ну если уж совсем никак, то свой флаг создай. И его и проверай в OnCalcFields
Alexandr (2002-02-01 14:24:00) [7]не может быть!
ТеньЛуны (2002-02-01 14:11:00) [8]Всё равно обрабатывает при скроллинге DBGrid
Alexandr (2002-02-01 14:07:00) [9]AutoCalcFields в фалсе поставь