以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 如何实现近百张表的多表查询 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=92270) |
||||
-- 作者:小广 -- 发布时间:2016/10/30 21:16:00 -- 如何实现近百张表的多表查询 有近百张每个月的数据表,每张表的结构都是一样的,现在要新建表A,希望在表A中输入姓名,实现把其余所有表中的数据提取到表A中。
因为数据表太多了,不能逐个建立关联吧,大家看看在表A datacolchanged事件中写的代码,
1、哪里出错? 2、还有如何实现按月份逐行提取?
For Each dt As DataTable In DataTables
Dim dr As DataRow
dr = dt.Find("dt.datacols("姓名") = e.DataRow("姓名")")
If dr IsNot Nothing Then
e.DataRow("数量") = dr(dt.dataCols("数量"))
End If
Next
数据表太多,没有一一导入,做了个例子,代码因为错误,无法保存在事件代码中。
[此贴子已经被作者于2016/10/30 21:59:57编辑过]
|
||||
-- 作者:y2287958 -- 发布时间:2016/10/30 21:37:00 -- 办法多多,上个例子得到的回答更快更准 |
||||
-- 作者:小广 -- 发布时间:2016/10/30 21:58:00 --
|
||||
-- 作者:y2287958 -- 发布时间:2016/10/30 22:41:00 -- Dim dic As new Dictionary(of String,String) For Each dt As DataTable In DataTables If dt.Name <> "表A" dic.Add(dt.Caption,dt.Name) End If Next Select Case e.DataCol.Name Case "姓名","月份" If e.DataRow.IsNull("月份") = False Dim dr As DataRow = DataTables(dic(e.DataRow("月份"))).find("姓名=\'" & e.DataRow("姓名") & "\'") If dr IsNot Nothing e.DataRow("数量") = dr("数量") End If Else e.DataRow("数量") = Nothing End If End Select [此贴子已经被作者于2016/10/30 22:48:01编辑过]
|
||||
-- 作者:cbt -- 发布时间:2016/10/30 22:46:00 -- Dim name As String="张三" DataTables("表A").DeleteFor("") For Each dt As DataTable In DataTables If dt.name = "表A" Then Continue For End If Dim dr As DataRow = dt.Find("姓名=\'" & name & "\'") If dr IsNot Nothing Then Dim dr2 As DataRow = DataTables("表A").AddNew() dr2("姓名")=name dr2("月份")=dt.Caption dr2("数量")=dr("数量") End If Next |
||||
-- 作者:小广 -- 发布时间:2016/10/31 0:08:00 -- 谢谢 |
||||
-- 作者:小广 -- 发布时间:2016/10/31 0:13:00 -- 以下是引用cbt在2016/10/30 22:46:00的发言:
Dim name As String="张三" DataTables("表A").DeleteFor("") For Each dt As DataTable In DataTables If dt.name = "表A" Then Continue For End If Dim dr As DataRow = dt.Find("姓名=\'" & name & "\'") If dr IsNot Nothing Then Dim dr2 As DataRow = DataTables("表A").AddNew() dr2("姓名")=name dr2("月份")=dt.Caption dr2("数量")=dr("数量") End If Next 这段代码好像不能写在datacolchanged事件中,运行会退出foxtable。 Dim dr2 As DataRow = DataTables("表A").AddNew() 重新激活了datacolchanged事件吧 写在锁定行事件中就不会出现这个问题 |
||||
-- 作者:jspta -- 发布时间:2016/10/31 9:18:00 -- 合并成一张表,否则以后查询慢到不行 |
||||
-- 作者:有点蓝 -- 发布时间:2016/10/31 11:07:00 -- 8楼+1,加一列月份区分就可以了 5楼的代码适合在按钮事件处理
|