起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 216|回复: 6

query更新待办任务问题?**

[复制链接]
发表于 2009-2-24 15:13:26 | 显示全部楼层 |阅读模式
//修改系统数据库的 任务表 状态为 已终止
      strSql:='update TTASK set FSTATE=''tsAborted'' where fprocunitid=''RWFP'' and  FFLOWGUID=( select FFLOWGUID from TFLOWID where FID='''
          +self.InfoBroker1.Info.DataSetByID('RWSJJ').FieldByName('GID').AsString+ ''')';
        qCancel.Close;//关闭数据集
      qCancel.CommandText:=strSql;
      qCancel.Execute;

      //修改系统数据库的 任务消息表 状态为 已终止
      strSql:='update TTASKMESSAGE set FSTATE=''tmsAborted''';
      strSql:=strSql + ' where FTASKGUID in ';
      strSql:=strSql + ' (select FGUID from TTASK where fprocunitid=''RWFP'' AND FFLOWGUID=( select FFLOWGUID from TFLOWID where FID='''
          +self.InfoBroker1.Info.DataSetByID('RWSJJ').FieldByName('GID').AsString+ '''))';
        qCancel.Close; //关闭数据集
      qCancel.CommandText:=strSql;
      qCancel.Execute;

上面代码更新任务表和任务消息表状态,运行没有出错。可是执行后状态并没有改变。不知道为什么。
回复

使用道具 举报

发表于 2009-2-24 15:22:42 | 显示全部楼层
你跟踪的SQL,直接在数据库上执行的结果是怎样的呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-24 15:23:51 | 显示全部楼层
直接执行没问题。在查询分析器是OK的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-24 15:56:12 | 显示全部楼层
神奇了。
回复 支持 反对

使用道具 举报

发表于 2009-2-24 16:00:27 | 显示全部楼层
1、qCancel 是TQuery?还是TDataSetBroker
2、qCancel.Close 把这句屏蔽掉呢。
3、你是用跟踪的SQL语句在查询分析器中执行的吗?如果不是,请用跟踪的SQL语句来执行。
4、我多问一句,代码执行到了这些吧?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-24 16:27:59 | 显示全部楼层
确定你前面的几个问题我都操作正确。

在执行前面代码后我又有对另外数据集.ApplyUpdates。现在发现如果先对数据集.ApplyUpdates;然后再执行前面代码,先后顺序不能乱,就没问题了。
就是不明白为什么?事务?
回复 支持 反对

使用道具 举报

发表于 2009-2-24 16:50:33 | 显示全部楼层
是哪个数据集? 是 DataSetByID('RWSJJ')  这个吗?如果是,你修改这个数据集的哪个字段了?跟这个SQL语句有关吗?如果是,那肯定要先提交这个数据集了,要不Query直接跟数据库交互的时候找不到相应的记录了。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-27 14:57 , Processed in 0.035940 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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