以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 表与表间的数据引用问题求指教? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=63341)
|
-- 作者:lisheng7177
-- 发布时间:2015/1/19 11:15:00
-- 表与表间的数据引用问题求指教?
版主:关于表与表之间的数据列问题不是很明白,有表1、表2、表3等表,它们之间的数据引用如不用按钮(写相应代码)的话,是不是必需设为父子表?
假设表1 有“工作单位”“姓名”“身份证号码”“性别”“参加工作时间”等列,表2也有这些列,但多了“成绩”列,我的目标是,表1的列内容输入后,表2的相关列会自动填入,但我表2中不想要“参加工作时间”列,按我现在的方法用按钮点击从表1导到表2去,但表2中必需建立和表1同样的列(表2可以多成绩列);
同样表3用表2的数据也是一样,如果还有表4要用表3的数据,表5要用表4的数据,那么后面的的表的列数只会越来越多,但有些列在后面的表中可以不要;
现在问题是我如果不把列设成一样,导入的时候就会提示少某某列,这个问题该怎么解决?
|
-- 作者:Bin
-- 发布时间:2015/1/19 11:18:00
--
1.可以设置关联用表达式引用 2.可以编写代码引用
|
-- 作者:lisheng7177
-- 发布时间:2015/1/19 11:20:00
--
谢谢版主!我去学习、学习。
|
-- 作者:lisheng7177
-- 发布时间:2015/1/19 13:13:00
--
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
If e.DataCol.Name = "身份证号码" Then If e.NewValue Is Nothing Then e.DataRow("工作单位") = Nothing 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("性别") e.DataRow("身份证号码") = dr("身份证号码") End If End If End If
版主,上述两段代码是不是功能等同?可以去掉其一吗?
|
-- 作者:lisheng7177
-- 发布时间:2015/1/19 13:14:00
--
我看帮助,有点糊涂了,想做到两表之间数据引用,表1变,表2也自动变
|
-- 作者:lisheng7177
-- 发布时间:2015/1/19 13:22:00
--
自己实践,应该已搞定,因为想代码看起来简洁些,所以去掉了下面这段代码,发现效果还是一样(都是表2的datacolchanged事件中的)。
If e.DataCol.Name = "身份证号码" Then If e.NewValue Is Nothing Then e.DataRow("工作单位") = Nothing 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("性别") e.DataRow("身份证号码") = dr("身份证号码") End If End If End If
|
-- 作者:Bin
-- 发布时间:2015/1/19 13:59:00
--
http://www.foxtable.com/help/index.html?n=1453.htm
|
-- 作者:Bin
-- 发布时间:2015/1/19 14:00:00
--
一个是表A引用表B 一段是表B更新表A 别搞混
|
-- 作者:lisheng7177
-- 发布时间:2015/1/19 20:51:00
--
If e.DataCol.Name = "身份证号码" Then If e.NewValue Is Nothing Then e.DataRow("工作单位") = Nothing e.DataRow("县公司") = Nothing e.DataRow("姓名") = Nothing e.DataRow("性别") = Nothing e.DataRow("身份证号码") = Nothing e.DataRow("文化程度") = Nothing e.DataRow("鉴定等级") = Nothing e.DataRow("申报鉴定工种") = Nothing e.DataRow("鉴定批次") = Nothing e.DataRow("申报性质") = Nothing 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("性别") e.DataRow("身份证号码") = dr("身份证号码") e.DataRow("文化程度") = dr("文化程度") e.DataRow("鉴定等级") = dr("鉴定等级") e.DataRow("申报鉴定工种") = dr("申报鉴定工种") e.DataRow("鉴定批次") = dr("鉴定批次") e.DataRow("申报性质") = dr("申报性质") e.DataRow("备注") = dr("备注") e.DataRow("照片") = dr("照片") e.DataRow("是否合格") = dr("是否合格") e.DataRow("理论考否") = dr("理论考否") End If End If End If
版主,这段代码能再简化些吗?这要再多些列,就更长了。
|
-- 作者:lisheng7177
-- 发布时间:2015/1/19 20:52:00
--
本来事件里就还有其它方面的代码,如有需要再加其它的,看都看不转,有错都难找!
|