以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  按条件调入数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=1145)

--  作者:老有所乐
--  发布时间:2008/11/15 22:06:00
--  按条件调入数据

请教,在表B的姓名和分数列用代码,将表A[班级名次]为前2名人员的姓名和分数按年级班级调入填到表B中,代码该如何写。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目3.table


 


--  作者:gdtgl
--  发布时间:2008/11/16 0:02:00
--  
表B姓名这1列的计算代码:
dim s2 as row = tables("表B").current
dim a1 as datarow = datatables("表A").find("年级 = \'"& s2("年级") & "\' and  班级 = \'"& s2("班级") & "\' and  班级名次 = \'"& s2("排名") & "\'")
s2("姓名") = a1("姓名")


表B的事件datacolchanged 的代码:
if e.datacol.name = "排名" then
  datatables("表B").datacols("姓名").recalc
end if

--  作者:老有所乐
--  发布时间:2008/11/16 5:59:00
--  
谢谢gdtgl兄弟,辛苦你!上面的代码能进行,但是有两个问题:
1,要用鼠标点击要计算的行再点击重算列,要一行一行进行,若有3万行,1天都做不完。
2,只能进行到第六行,到第七行就出现“调用目标发行异常.........未将对象引用设置到实例”的提示。
--  作者:老有所乐
--  发布时间:2008/11/16 7:55:00
--  

2,已经找到解决。
1,用按钮也没有用,现将代码放到currentChanged中按向下键快一点,没有找到更快的办法。


--  作者:yuanbin
--  发布时间:2008/11/16 10:47:00
--  
数据填充器,在B表中设定一个按钮,写入以下代码即可.
datatables("表B").datarows.clear()
dim f As New Filler
f.SourceTable = DataTables("表A") \'指定数据来源
f.SourceCols = "班级,年级,姓名,分数,班级名次"  \'指定数据来源列
f.DataTable = DataTables("表B") \'指定数据接收表
f.DataCols = "班级,年级,姓名,分数,排名"  \'指定数据接收列
f.Distinct=false
f.Filter="[班级名次]<=2"
f.Fill() \'填
Tables("表B").Sort = "年级,班级,排名"

--  作者:老有所乐
--  发布时间:2008/11/16 13:15:00
--  

谢谢yuanbin先生!用了这个,就是没有写对7,8,10这三句。看来够学