以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  分组查询  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=134696)

--  作者:北狐
--  发布时间:2019/5/4 14:06:00
--  分组查询
原数据如图

图片点击可在新窗口打开查看此主题相关图片如下:原数据.png
图片点击可在新窗口打开查看
希望在本数据表上实现:当B行的厂家单号与表中的A行的厂家单号相同时,B行的备注列自动复制A行的备注列内容

图片点击可在新窗口打开查看此主题相关图片如下:本表实现.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2019/5/4 14:14:40编辑过]

--  作者:北狐
--  发布时间:2019/5/4 14:20:00
--  
或者通过查询实现下图

图片点击可在新窗口打开查看此主题相关图片如下:查询实现.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2019/5/4 14:19:57编辑过]

--  作者:有点甜
--  发布时间:2019/5/4 15:32:00
--  
Dim pr As DataRow = Nothing
For Each r As DataRow In DataTables("表A").Select("", "第一列")
    If pr IsNot Nothing AndAlso pr("第一列") = r("第一列") Then
        r("第二列") = pr("第二列")
    End If
    pr = r
Next

--  作者:北狐
--  发布时间:2019/5/6 19:07:00
--  
老师,需求:只有第1列有变动且变动结果为IsNot Nothing,才复制第2列的数据
           目前:第1列有变动就复制第2列的数据(第1列内容删除且第2列因之前代码执行后有数据A的话,会导致第1列所有行内容为IsNot Nothing的第2列内容自动复制为A
代码如下

Dim dr As DataRow = e.DataRow

Select Case e.DataCol.Name

  Case "本单日期"

If dr.IsNull("厂家单号"Then

    e.DataRow("厂家日期") = e.DataRow("本单日期")

End If

 

  Case "供应商名称"

Dim pr As DataRow = e.DataRow.GetParentRow("应付科目")

If pr IsNot Nothing Then

    e.DataRow("供应商") = pr("龙域名称")

End If

 

If dr.IsNull("供应商"Then

    e.DataRow("供应商") = e.DataRow("供应商名称")

End If

 

  Case "厂家单号"

Dim pr1 As DataRow = Nothing

For Each r As DataRow In DataTables("应付单据复核").Select("", "厂家单号")

    If r("厂家单号") IsNot Nothing AndAlso pr1 IsNot Nothing AndAlso pr1("厂家单号") = r("厂家单号"Then

        r("备注") = pr1("备注")

    End If

    pr1 = r

Next

End Select

[此贴子已经被作者于2019/5/6 19:12:06编辑过]

--  作者:有点蓝
--  发布时间:2019/5/6 20:12:00
--  
Case "厂家单号"
    If e.newvalue > ""
        Dim t As Table = Tables(e.DataTable.Name)
        Dim idx As Integer = t.FindRow(e.DataRow)
        If idx > 0 Then
            Dim r As Row = t.Rows(idx-1)
            If r("厂家单号") = e.newvalue Then
                e.DataRow("备注") = r("备注")
            End If
        End If
    End If