|

楼主 |
发表于 2008-9-17 11:25:12
|
显示全部楼层
我是用的你提供的第2种方法。这个事件我写了2个 第一个可以执行 ,但第2个就不行 我发给你代码看看
procedure TNJSQ.DataSetBroker1DataChange(Sender: TObject; Field: TDataField);
var
lQuery : Business.Data.TQuery;
begin
if (Field <> nil) and ( Field.FieldName = 'XM' ) then
begin
lQuery := TQuery.Create(Self);
try
lQuery.ConnectionString := 'DATABASEURL=Biz:\YWKJ_JQF\SJK.DATABASE';
lQuery.CommandText := 'select nvl(sum(HJXJTS),0) zts from BT_OA_SJ where xm=''' + DataSetBroker1.DataSet.FieldByName('xm').AsString + ''' and to_char(kssj,''yyyy'')=''' + SysUtils.FormatDateTime('yyyy',Business.Data.SysSrv.SysService.Time) + '''' ;
lQuery.Open;
if not lQuery.Eof then
begin
DataSetBroker1.DataSet.FieldByName('ljxjts').AsString :=Business.System.ObjectHelper.ToString(lQuery.FieldByName('zts').AsInteger);
end;
lQuery.Close;
lQuery.ConnectionString := 'DATABASEURL=Biz:\YWKJ_JQF\SJK.DATABASE';
lQuery.CommandText := 'select gzdw q,gl w,nxjts r from BT_RY where xh=''' + DataSetBroker1.DataSet.FieldByName('xm').AsString + '''';
lQuery.Open;
if not lQuery.Eof then
begin
DataSetBroker1.DataSet.FieldByName('dw').AsString :=Business.System.ObjectHelper.ToString(lQuery.FieldByName('q').AsString);
DataSetBroker1.DataSet.FieldByName('gl').AsString :=Business.System.ObjectHelper.ToString(lQuery.FieldByName('w').AsString);
DataSetBroker1.DataSet.FieldByName('nxjts').AsString :=Business.System.ObjectHelper.ToString(lQuery.FieldByName('r').AsString);
end
finally
lQuery.Free;
end;
end;
if (Field <> nil) and ( Field.FieldName = 'jssj' ) then
begin
if Business.System.DateUtils.DaysBetween(DataSetBroker1.DataSet.FieldByName('kssj').AsDateTime , DataSetBroker1.DataSet.FieldByName('jssj').AsDateTime) + sysUtils.strtoint( DataSetBroker1.DataSet.FieldByName('lxxjts').AsString ) > sysUtils.strtoint( DataSetBroker1.DataSet.FieldByName('nxjts').AsString ) then
dialogs.showmessage('此人年假已休完,请中止流程!');
end;
end; |
|