Foxtable(狐表)用户栏目专家坐堂 → 保留旧价格


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

主题:保留旧价格

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


加好友 发短信
等级:童狐 帖子:283 积分:2118 威望:0 精华:0 注册:2011/12/15 11:49:00
  发帖心情 Post By:2012/1/10 17:39:00 [只看该作者]

请你理解:

1、我们不是编程的专业人士,所以会有很多的东西不懂;

2、我们还有其他的工作要做,没有足够的时间学习更深的东西,我们也知道如果能学的更深那当然是最好;

 

所以最后,真的希望能得到您的持续帮助

麻烦你:1、把9楼问到的问题的 数据型 设置成 让我可以随意改成其它型(如字符型、整数型等);2、我希望B表的其它多列 能同时有像单价列一样的功能(而不是 仅单价一列)(不管上面数据类型都适合),再次麻烦你给个代码给我,万分感谢!


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/1/10 18:04:00 [只看该作者]

呵呵,其实这个和是否专业人士无关的,其实这个论坛的人,除了官方的技术人员,都是非专业人士的,Foxtable也是写给非专业人士使用的。

 

如果单价是字符型:

 

Select Case  e.DataCol.Name
    Case "编码","单价"
        Dim dr1 As DataRow= e.DataRow
        If dr1.IsNull("编码") = False AndAlso dr1.IsNull("单价") = False  Then
            Dim dr2 As DataRow = DataTables("表B").Find("编码 = '" & dr1("编码") & "' And 单价 = '" & dr1("单价") & "'")
            If dr2 Is Nothing Then
                dr2 = DataTables("表B").AddNew
                dr2("编码") = dr1("编码")
                dr2("单价") = dr1("单价")
            End If
        End If
End Select

 

2、不明白你有很多列是什么意思,请具体说明。

 

 


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


加好友 发短信
等级:童狐 帖子:283 积分:2118 威望:0 精华:0 注册:2011/12/15 11:49:00
  发帖心情 Post By:2012/1/10 18:41:00 [只看该作者]

谢谢,比如,在B表中除了单价列,客户名称列及地址列这两列也能随A表的相关咧变化而变化


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


加好友 发短信
等级:童狐 帖子:283 积分:2118 威望:0 精华:0 注册:2011/12/15 11:49:00
  发帖心情 Post By:2012/1/11 8:49:00 [只看该作者]

 

If e.DataCol.Name = "产品编号" Then
    If e.NewValue Is Nothing Then
        e.
DataRow("品名") = Nothing
        e.
DataRow("型号") = Nothing
        e.
DataRow("规格") = Nothing
        e.
DataRow("单价") = Nothing
   
Else
       
Dim dr As DataRow
        dr =
DataTables("产品").Find("[产品编号] = '" & e.NewValue & "'")
        If
dr IsNot Nothing

            e.
DataRow("品名") = dr("品名")
            e.
DataRow("型号") = dr("型号")
            e.
DataRow("规格") = dr("规格")
            e.
DataRow("单价") = dr("单价")
        End
If
   
End If
End
If

如果有十几列甚至更多列的数据需要继承,上面代码可能会显得过于繁琐,为此我们可以考虑将代码改写为:

If e.DataCol.Name = "产品编号" Then
    Dim
nms() As String = {"品名","型号","规格","单价"}
    If
e.NewValue Is Nothing Then

        For
Each nm As String In nms

            e
.DataRow(nm) = Nothing

        Next

    Else

        Dim
dr As DataRow

        dr
= DataTables("产品").Find("[产品编号] = '" & e.NewValue &
"'")
        If
dr IsNot Nothing
            For Each
nm As String In nms
               
e.DataRow(nm) = dr(nm)
            Next
        End If
    End If
End If

狐爸,能否麻烦你帮我将下面的代码像上面的跨表引用案例一样 整合一下? 感谢!

Select Case e.DataCol.Name
    Case "第一列","第二列","第三列","第四列","第五列","第六列","第七列"
        Dim kh As String = e.DataRow("第一列")
        Dim kh1 As String = e.DataRow("第二列")
        Dim kh2 As String = e.DataRow("第三列")
        Dim kh3 As String = e.DataRow("第四列")
        Dim kh4 As String = e.DataRow("第五列")
        Dim kh5 As String = e.DataRow("第六列")
        Dim kh6 As String = e.DataRow("第七列")
        Dim tj = "第一列 = '" & kh & "'And 第二列 ='" & kh1 & "'And 第三列 ='" & kh2 & "'And 第四列 ='" & kh3 & "'And 第五列 ='" & kh4 & "'And 第六列 ='" & kh5 & "'And 第七列 ='" & kh6 & "'"   
        If kh >"" And kh1> "" And kh2> ""And kh3> "" And kh4> "" And kh5> "" And kh6> "" Then
            If DataTables("表B").Find(tj) Is Nothing Then
                Dim dr As DataRow = DataTables("表B").AddNew()
                dr("第一列") = kh
                dr("第二列") = kh1
                dr("第三列") = kh2
                dr("第四列") = kh3
                dr("第五列") = kh4
                dr("第六列") = kh5
                dr("第七列") = kh6
            End If
        End If
End Select


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/1/11 10:36:00 [只看该作者]

Select Case  e.DataCol.Name
    Case "第一列","第二列","第三列","第四列","第五列","第六列","第七列"
        Dim nms() As String = {"第一列","第二列","第三列","第四列","第五列","第六列","第七列"}
        Dim dr1 As DataRow= e.DataRow
        Dim flt As String
        For Each nm As String In nms
            If dr1.IsNull(nm) Then
                Return
            Else
                If flt > "" Then
                    flt = flt & " And "
                End If
                If e.DataTable.DataCols(nm).IsNumeric Then
                    flt = flt & nm & " = " & dr1(nm)
                Else
                    flt = flt & nm & " = '" & dr1(nm) & "'"
                End If
            End If
        Next
        Dim dr2 As DataRow = DataTables("表B").Find(flt)
        If dr2 Is Nothing Then
            dr2 = DataTables("表B").AddNew
            For Each nm As String In nms
                dr2(nm) = dr1(nm)
            Next
        End If
End Select

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


加好友 发短信
等级:五尾狐 帖子:1128 积分:11029 威望:0 精华:2 注册:2008/9/1 10:45:00
  发帖心情 Post By:2012/1/11 12:31:00 [只看该作者]

你的问题用二楼代码应该是最合试的了,你是想记录价格的历次变动情况,变动多少次就要在表B增加多少行的记录。

用填充是最好的办法了,有100列也是这几行代码。另建议增加一个修改时间列,记录价格修改的时间,代码改成这样:

 

If e.DataCol.Name = "单价" Then
e.DataRow("价格变动时间")=Date.now
Dim f As New Filler
f.SourceTable = DataTables("表A") '指定数据来源
f.DataTable = DataTables("表B") '指定数据接收表
f.Filter="[_Identify]='" & e.DataRow("_Identify") & "'"
f.Fill() '填充数据
End If


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


加好友 发短信
等级:童狐 帖子:283 积分:2118 威望:0 精华:0 注册:2011/12/15 11:49:00
  发帖心情 Post By:2012/1/11 20:34:00 [只看该作者]

 感谢狐爸及PYH6918,我试试。这个论坛给人感觉挺有人情味。


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


加好友 发短信
等级:童狐 帖子:283 积分:2118 威望:0 精华:0 注册:2011/12/15 11:49:00
  发帖心情 Post By:2012/1/11 21:15:00 [只看该作者]

PYH你好,你的代码我刚试了,很简洁,比较好用,再次谢谢。如果有 型号列 地址列等多列象单价列样经常变动,并且我也想记录这些列的多次的历次变动,这个代码该修改成上面样?

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


加好友 发短信
等级:五尾狐 帖子:1128 积分:11029 威望:0 精华:2 注册:2008/9/1 10:45:00
  发帖心情 Post By:2012/1/11 22:20:00 [只看该作者]

If e.DataCol.Name = "单价" or e.DataCol.Name = "型号" or e.DataCol.Name = "地址" Then

 

第一行代码改成这样,试试!


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


加好友 发短信
等级:童狐 帖子:283 积分:2118 威望:0 精华:0 注册:2011/12/15 11:49:00
  发帖心情 Post By:2012/1/12 11:41:00 [只看该作者]

刚试过,非常好用,再次表示深深的感谢!


 回到顶部
总数 20 上一页 1 2