以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]多条件多值填充  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=71659)

--  作者:cqlpjks
--  发布时间:2015/7/15 17:27:00
--  [求助]多条件多值填充
要将“文理分科”表中的“文理”列符合多条件的值填充到“问卷答案”表中的“文理”列。条件是:班=班、单位=单位、年级=年级,“文理分科”表中“文理”列是唯一的但“问卷答案”表中是多值的。如何修改表事件中的写代码?请指教。谢谢!
If e.DataCol.Name = "班" Then \'如果内容发生变动的是班列
    If e.NewValue Is Nothing Then \'如果新值是空白,也就是班列的内容为空
        e.DataRow("文理") = Nothing \'那么清空此行文理列的内容
    Else
        Dim dr As DataRow
        \'否则在文理分科表查找同名的班行,将找到的行赋值给变量dr
        dr = DataTables("文理分科").Find("[班] = \'" & e.NewValue & "\'And [单位] = \'"& dr("单位") & "\' And [年级] = \'"& dr("年级") &"\'")
        If dr IsNot Nothing Then \'如果找到了同名的班行,也就是dr不是Nothing
            e.DataRow("文理") = dr("文理") 
        End If
    End If
End If

图片点击可在新窗口打开查看此主题相关图片如下:文理分科表.png
图片点击可在新窗口打开查看
图片点击可在新窗口打开查看此主题相关图片如下:问卷答案表.png
图片点击可在新窗口打开查看
如:单位=“袁驿中学”、班=“01”、年级=“2016”的行有这么多,都应填充成“高文”

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20150715173252.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2015/7/15 17:33:48编辑过]

--  作者:大红袍
--  发布时间:2015/7/15 17:46:00
--  

 代码应该是没问题的,你重置列不就行了?

 

 


--  作者:cqlpjks
--  发布时间:2015/7/15 17:52:00
--  
重置列不得行,我用按钮代码DataTables("问卷答案").DataCols("班").RaiseDataColChanged()也不得行。

[此贴子已经被作者于2015/7/15 17:56:14编辑过]

--  作者:cqlpjks
--  发布时间:2015/7/15 17:57:00
--  
例子:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:高中问卷调查.rar


--  作者:大红袍
--  发布时间:2015/7/15 17:58:00
--  

 

[此贴子已经被作者于2015/7/15 19:20:46编辑过]

--  作者:cqlpjks
--  发布时间:2015/7/15 18:12:00
--  
那怎么回事?
--  作者:cqlpjks
--  发布时间:2015/7/15 18:22:00
--  
用条件导入:导入的“文理”列,条件:单位、班,EXCEL表中只有一个年级。也不得行。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:2016.xls

[此贴子已经被作者于2015/7/15 18:28:35编辑过]

--  作者:大红袍
--  发布时间:2015/7/15 19:21:00
--  

 提问的时候,你直接代码报错啊

 

If e.DataCol.Name = "班" Then \'如果内容发生变动的是班列
    If e.NewValue Is Nothing Then \'如果新值是空白,也就是班列的内容为空
        e.DataRow("文理") = Nothing \'那么清空此行文理列的内容
    Else
        Dim dr As DataRow
        \'否则在文理分科表查找同名的班行,将找到的行赋值给变量dr
        dr = DataTables("文理分科").Find("[班] = \'" & e.NewValue & "\' And [单位] = \'" & e.DataRow("单位") & "\' And [年级] = \'" & e.DataRow("年级") & "\'")
        If dr IsNot Nothing Then \'如果找到了同名的班行,也就是dr不是Nothing
            e.DataRow("文理") = dr("文理")
        End If
    End If
End If


--  作者:cqlpjks
--  发布时间:2015/7/15 22:15:00
--  
搞定。谢谢!