以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  通过datacolchanging记录信息的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=120681)

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

--  作者:有点甜
--  发布时间: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
--  发布时间:2018/6/21 18:24:00
--  
谢谢,这个方案应该可行,但是我还遇到一个问题,现在我“原值”列的数值是通过表达式计算得到的,那这个数值变动能触发datacolchanged吗
--  作者:有点甜
--  发布时间:2018/6/21 18:26:00
--  

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

 

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

 


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

--  作者:有点甜
--  发布时间:2018/6/21 20:27:00
--  

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

 

在窗口直接用,如

 

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

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