Foxtable(狐表)用户栏目专家坐堂 → 通过datacolchanging记录信息的问题


  共有1940人关注过本帖树形打印复制链接

主题:通过datacolchanging记录信息的问题

帅哥哟,离线,有人找我吗?
vincent92
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:46 积分:398 威望:0 精华:0 注册:2018/4/27 13:27:00
通过datacolchanging记录信息的问题  发帖心情 Post By:2018/6/21 17:58:00 [只看该作者]

我在狐表中有一列叫原值,然后后面有第一次原值、第二次原值、第三次原值……
现在我想通过datacolchanging实现每次“原值”列的数值发生改变的时候,记录他的oldvalue和newvalue,举例如下:
第一次原值输入为1000,此时第一次原值=1000,第二次原值为空,第三次原值为空
第二次原值改变为2000,此时第一次原值=1000,第二次原值=2000,第三次原值为空
第三次原值改变为3000,此时第一次原值=1000,第二次原值=2000,第三次原值=3000
因为一共可能有五次到六次的改变,所以如果用if函数嵌套可能会比较麻烦,我想问问看能不能通过FOR NEXT的函数实现呢

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/21 18:12:00 [只看该作者]

1、列名改成:原值1、原值2、原值3、原值4......

 

2、修改值的时候datacolchanged事件写代码

 

If e.DataCol.name = "原值" Then
    For i As Integer = 1 To 4
        If e.DataRow("原值" & i) = Nothing Then '没有值
            e.DataRow("原值" & i) = e.newvalue
            Exit For
        End If
    Next
End If


 回到顶部
帅哥哟,离线,有人找我吗?
vincent92
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:46 积分:398 威望:0 精华:0 注册:2018/4/27 13:27:00
  发帖心情 Post By:2018/6/21 18:24:00 [只看该作者]

谢谢,这个方案应该可行,但是我还遇到一个问题,现在我“原值”列的数值是通过表达式计算得到的,那这个数值变动能触发datacolchanged吗

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/21 18:26:00 [只看该作者]

回复3楼,不能。表达式列不会触发datacolchanged。

 

看看 http://www.foxtable.com/webhelp/scr/2381.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
vincent92
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:46 积分:398 威望:0 精华:0 注册:2018/4/27 13:27:00
  发帖心情 Post By:2018/6/21 19:26:00 [只看该作者]

好吧,我再有一个问题,现在我原值1原值2的问题解决了,但是我想要在原值发生改变的时候跳出一个对话框,让我输入日期,分别为日期1、日期2、日期3
我原以为只要设定一个窗口就可以了,但是因为是datacolchanged触发的,我不知道生成窗口后怎么把日期输到当时发生改变的那行里面,有什么好的方法吗

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/21 20:27:00 [只看该作者]

打开窗口之前记录行,如 vars("dr") = e.datarow

 

在窗口直接用,如

 

vars("dr")(”第一列") = 123

vars("dr")(”第二列") = 456


 回到顶部