以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助]关于表属性里的datacolchanged事件  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=11932)

--  作者:gaoyong30000
--  发布时间:2011/8/17 12:00:00
--  求助]关于表属性里的datacolchanged事件

事件里最下面 有这样一段代码

 

Select Case e.DataCol.name
    Case "当前里程","最后进店日期","底盘号"
        Dim yq As DataRow = e.DataRow
        If e.OldValue <> e.NewValue  AndAlso e.NewValue IsNot Nothing Then
            Dim lc As DataRow = DataTables("历史进店记录").AddNew()
            lc("当前里程") = yq("当前里程")
            lc("进店时间") = yq("最后进店日期")
            lc("底盘号")  = yq("底盘号")
        End If
End Select

 

有问题  我其实是想实现 这样的功能

如果在客户档案表里更改了 最后进店日期 和 当前里程数据 (这2项是必改的,底盘号不需要改)

 

则自动在 历史进店记录 里增加一行   且 引用客户档案里更改后的   最后进店日期  ,当前里程 和 未更改的底盘号

 

 

现在这段代码 只要更改一列数据 就会增加一行

而我每次要更改  最后进店日期  和 当前里程  2列数据  也就增加了2行

 

请问如何优化这一代码!!

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:内控系统4.rar

[此贴子已经被作者于2011-8-17 12:50:00编辑过]

--  作者:gaoyong30000
--  发布时间:2011/8/17 13:54:00
--  

自己顶一下~~


--  作者:狐狸爸爸
--  发布时间:2011/8/17 14:18:00
--  

你这是为难系统了,系统怎么知道你是要修改一列,还是要修改两列? 怎么知道你已经修改完毕?

 

提议:

 

1、做个修改窗口,用于修改着两列数据

2、窗口价格确定按钮,单击此按钮保存修改并向历史进店记录表增加一行。


--  作者:gaoyong30000
--  发布时间:2011/8/17 15:01:00
--  

我现在做了一个变通

代码如下

Select Case e.DataCol.name
    Case "当前里程"
        Dim yq As DataRow = e.DataRow
        If e.OldValue <> e.NewValue  AndAlso e.NewValue IsNot Nothing Then
            Dim lc As DataRow = DataTables("历史进店记录").AddNew()
            lc("当前里程") = yq("当前里程")
            lc("进店时间") = yq("最后进店日期")
            lc("底盘号")  = yq("底盘号")
        End If
End Select

只是需要最后修改里程

 

现在能否 建立一个规则  必须先更改日期后 才能输入里程  

以防先更改里程 导致日期是旧日期

[此贴子已经被作者于2011-8-17 15:01:23编辑过]

--  作者:gaoyong30000
--  发布时间:2011/8/17 15:08:00
--  

我又发现一个 方法  就是 PositionChanged 这个事件

 

因为修改数据后 是要换行 或者 保存的  能否在这 换行  和保存 2个事件上做文章呢 

 

也就是 换行后  或者 保存后  再执行这一代码!

 

 

不过  我把我之前这段代码复制进去 貌似不行~

[此贴子已经被作者于2011-8-17 15:08:47编辑过]

--  作者:狐狸爸爸
--  发布时间:2011/8/17 15:24:00
--  
这不是可靠的做法,还是设计一个窗口来输入吧