Office中国论坛/Access中国论坛

标题: access2003中能取得正在执行的查询的sql么?? [打印本页]

作者: 36983114    时间: 2011-12-23 14:07
标题: access2003中能取得正在执行的查询的sql么??
由于需要log文件记录sql内容,所以需要把正在执行的查询,sql纪录到log文件中。有没有办法取得到。
作者: andymark    时间: 2011-12-23 14:13
知道了某个查询,用DAO来返查查询的SQL是可以实现的
作者: wu8313    时间: 2011-12-23 14:43

只有成功执行的sql语句,才有被记录的 意义。仅仅记录意义不大。如果采用sql 后台,日志文件就是干这个事情的。

作者: 36983114    时间: 2011-12-23 15:10
怎么用dao反查阿,有例子么?
作者: 36983114    时间: 2011-12-23 15:11
后台是oracle的,客户要求所有的sql都要被记录到我们自己定义的log文件中。
作者: Henry D. Sy    时间: 2011-12-23 15:15
36983114 发表于 2011-12-23 15:10
怎么用dao反查阿,有例子么?
  1. Dim Qdf As DAO.QueryDef
  2.     Set Qdf = CurrentDb.QueryDefs("A")
  3.     MsgBox Qdf.SQL
  4.     Qdf.Close
  5.     Set Qdf = Nothing
复制代码

作者: 36983114    时间: 2011-12-23 15:26
按照楼上的做法,会生成以下的SQL
"INSERT INTO MST_BUMON_TANKA
VALUES (Forms!部門単価登録!txtBumonC, Forms!部門単価登録!txtBumonNm, Forms!部門単価登録!txtNendo, Forms!部門単価登録!txtTanka, Now(), getStrUserId(), Now(), getStrUserId());
"
这个不行!能不能获得执行的sql,比如 Forms!部門単価登録!txtBumonC 要换成自己录入的那个值!
作者: Henry D. Sy    时间: 2011-12-23 15:28
说什么呢?
作者: 36983114    时间: 2011-12-23 15:32
INSERT INTO MST_BUMON_TANKA
VALUES ('2222', '33333', '2012', 333, Now(), getStrUserId(), Now(), getStrUserId());

除了自己替换以外,能生成如上的sql么?

另我要是自己替换  (Forms!部門単価登録!txtBumonC)这种查询里面的东西,access有类似 java的反射机制么?

作者: Henry D. Sy    时间: 2011-12-23 15:35
你不是已经生成了吗
作者: 36983114    时间: 2011-12-23 15:59
那个是我自己用 replace一个一个替换的。因为有的sql非常大,参数也非常的多,如果一个一个替换的话,需要很大工作量。
作者: Henry D. Sy    时间: 2011-12-23 16:31
有点糊涂了,不知道你到底是在问什么?
作者: 鱼儿游游    时间: 2011-12-23 21:06
你把执行的SQL用变量保存,如SQL执行成功,再把保存的SQL记录到日记中不就行了?
作者: wu8313    时间: 2011-12-23 22:31
本帖最后由 wu8313 于 2011-12-23 22:41 编辑

SQL语句到底是否 成功执行,我想最终会 反映到表里面,对吧?那么,也就有了一个办法,要监视针对某个表的操作,在这个表上写触发器,保存到另外一个表,然后该表的内容写入到你的log里面。

楼主在 11楼提到,只关心 实际被增、减、改变的表内容,不需要知道 sql 语句是通过哪个绑定的控件值 构造而成的。我想,你的意思就是要 针对某表 进行监控,对吧?
所以,实际运行的sql语句 也不需要知道,你只要知道 某个表 在某个时刻被执行了什么样的操作,也就可以了。估计,用触发器可以满足你的要求。





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3