以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]请教客户档案信息窗口 按钮的一段代码!  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=11963)

--  作者:gaoyong30000
--  发布时间:2011/8/18 9:36:00
--  [求助]请教客户档案信息窗口 按钮的一段代码!

之前我发过一个求助帖子 

 

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=11932&page=2#editform

 

讲的是 判断2个列是否有数据变化  如果2列数据都变化了  则在后面的一张表里 自动引用 这2列数据

 

由于通过表代码 无法实现

 

我现在设计了一个窗口  请教下  窗口里的  客户档案信息   保存修改按钮 该怎么写这代码!

 

 

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

 

就是客户档案表里的 最后进店日期  和 当前里程  发生更改后 

 

历时近店记录的 的3列(底盘号隐藏了)  自动 引用  客户档案表里  底盘号 最后进店日期  和 当前历程

[此贴子已经被作者于2011-8-18 10:23:51编辑过]

--  作者:gaoyong30000
--  发布时间:2011/8/18 10:44:00
--  

请问有参考的案例 或者 如何编写吗?


--  作者:foxor
--  发布时间:2011/8/18 10:53:00
--  

应该不需要按钮的,如果只是在关闭项目前更新,可考虑在 BeforeCloseProject 事件中添加代码;如果需要及时更新,可考虑在计划管理中增加代码


--  作者:gaoyong30000
--  发布时间:2011/8/18 11: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列都更改后引用

 

             如果 最后进店日期  和 当前里程   我先修改了 当前里程   再修改最后进店日期 

             那后面的历时进店记录表里 引用的日期是  旧日期  而不是 修改后的新日期了


--  作者:狐狸爸爸
--  发布时间:2011/8/18 11:33:00
--  
Dim r As Row = Tables("客户档案").Current
Dim dr As DataRow = DataTables("历史进店记录").Find("底盘号 = \'" & r("底盘号") & "\'")
If dr IsNot Nothing Then
    dr("当前里程") = r("当前里程")
    dr("进店时间") = r("最后进店日期")
    dr.Save()
End If
r.Save()

--  作者:gaoyong30000
--  发布时间:2011/8/18 11:44: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

 

 

换成了这个 

Select Case e.DataCol.name
    Case "当前里程","最后进店日期","底盘号"
        Dim yq As DataRow = e.DataRow
        Dim dr As DataRow = e.DataRow
        Dim xm,ym,dm As  DataRow
        xm = DataTables("历史进店记录").Find("当前里程 = \'" & dr("当前里程") & "\'")
        ym = DataTables("历史进店记录").Find("进店时间 = \'" & yq("最后进店日期") & "\'")
        If xm Is Nothing AndAlso ym Is Nothing Then
            Dim lc As DataRow = DataTables("历史进店记录").AddNew()
            lc("当前里程") = yq("当前里程")
            lc("进店时间") = yq("最后进店日期")
            lc("底盘号")  = yq("底盘号")
        End If
End Select

 

还是不行   这后来的代码  有什么问题吗?》


--  作者:狐狸爸爸
--  发布时间:2011/8/18 11:47:00
--  
Dim r As Row = Tables("客户档案").Current
Dim dr As DataRow = DataTables("历史进店记录").Find("底盘号 = \'" & r("底盘号") & "\'")
If dr IS Nothing Then
   dr = DataTables("历史进店记录").AddNew()
   dr("底盘号") = r("底盘号")
End If
dr("当前里程") = r("当前里程")
dr("进店时间") = r("最后进店日期")
dr.Save()
r.Save()

--  作者:gaoyong30000
--  发布时间:2011/8/18 11:52:00
--  

狐狸爸爸 你这个代码有2个问题

 

对于有历史进店记录的客户  这代码有效

 

 

假如 我发现客户档案其它信息有错误  然后去更正了 此客户并没有来店 也就是 最后来店日期和里程没变化  你这个代码 还是会 向历史进店记录添加数据的

 

第二个就是如果是新客户来店  我填写了新的底盘号(底盘号 的确是每个客户唯一标识)   这段代码也识别不出这个客户 也没法记录这次信息了


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

这个问题:

发现客户档案其它信息有错误 然后去更正了 此客户并没有来店 也就是 最后来店日期和里程没变化 你这个代码 还是会 向历史进店记录添加数据的  

 

你可以自判断一下输入了来店日期和里程才添加行。

 

 

7楼的代码,没有下面这个问题:

第二个就是如果是新客户来店 我填写了新的底盘号(底盘号 的确是每个客户唯一标识) 这段代码也识别不出这个客户 也没法记录这次信息了

 

 

[此贴子已经被作者于2011-8-18 12:12:31编辑过]

--  作者:狐狸爸爸
--  发布时间:2011/8/18 12:15:00
--  
Dim r As Row = Tables("客户档案").Current
If r.Isnull("最后进店日期") = False
    Dim dr As DataRow = DataTables("历史进店记录").Find("底盘号 = \'" & r("底盘号") & "\'")
    If dr Is Nothing Then
        dr = DataTables("历史进店记录").AddNew()
        dr("底盘号") = r("底盘号")
    End If
    dr("当前里程") = r("当前里程")
    dr("进店时间") = r("最后进店日期")
    dr.Save()
End If
r.Save()