起步软件技术论坛-X3

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: rzport_gongyu

【结贴】数据类型转换问题**

[复制链接]
 楼主| 发表于 2008-9-17 10:10:06 | 显示全部楼层
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 )

这样就对了 编译通过了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-17 10:28:43 | 显示全部楼层
我又想问一下  我这个事件写在这个 kssj 这个日期型字段上了 但是定位之后 不触发这个事件
我还有一个是在字符串字段定义这个DataChange事件能触发。 这怎么处理亚
选时间的这个字段 用什么事件触发?
回复 支持 反对

使用道具 举报

发表于 2008-9-17 10:52:32 | 显示全部楼层
事件不触发,说明时机不对,当然如果是运行平台还需要编译,签入,刷新缓存,
你是要实现啥,某个字段的值变化后(当然,这是要焦点离开当前修改的字段后才触发的),做些处理吗?如果是,参考
http://bbs.justep.com/forum.php?mod=viewthread&tid=1946

如果不是,那你要实现啥需求呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 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;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-17 11:29:42 | 显示全部楼层
哦 是第一种
回复 支持 反对

使用道具 举报

发表于 2008-9-17 11:32:49 | 显示全部楼层
不执行的话,debug看看什么条件不满足。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-21 13:45:56 | 显示全部楼层
换了一下 2个位置可以了 结帖
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-22 08:38 , Processed in 0.042677 second(s), 13 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表