以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 重置列就死机 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=57826) |
-- 作者:hubin998 -- 发布时间:2014/10/5 11:07:00 -- 重置列就死机 老师好,节日愉快! 我有个表80000行数据,资产代码是从资产代码库中自动索引,我在datachanged中输入了代码,单个输入没有问题,我重置列就死机,请高手教我如何在命令窗口或直接用SQL语句学习,谢谢! If e.DataCol.Name = "资产分类名称" Then \'当前表 当前列的名字固定了 For Each shujuyuan As Row In Tables("资产分类代码表").Rows \'在【数据源】表的所有行中去找 If e.DataRow("资产分类名称") = shujuyuan("资产分类") Then \'如果当前行的某个值和数据源表的某个值相符合 e.DataRow("资产分类代码") = shujuyuan("四级代码") \'数据源的第一个赋值 e.DataRow("卡片类型") = shujuyuan("一级代码名称") \'数据源的第二个赋值 Exit For \'这个很关键,如果不结束,就会一直找到最后面, Else e.DataRow("资产分类代码") = Nothing \'数据源的第一个赋值 e.DataRow("卡片类型") = Nothing \'数据源的第二个赋值 End If Next End If |
-- 作者:有点甜 -- 发布时间:2014/10/5 11:10:00 -- If e.DataCol.Name = "资产分类名称" Then \'当前表 当前列的名字固定了 Dim fdr As DataRow = DataTables("资产分类代码表").Find("资产分类 = \'" & e.DataRow("资产分类名称") & "\'") If fdr IsNot Nothing Then \'如果当前行的某个值和数据源表的某个值相符合 e.DataRow("资产分类代码") = fdr("四级代码") \'数据源的第一个赋值 e.DataRow("卡片类型") = fdr("一级代码名称") \'数据源的第二个赋值 Else e.DataRow("资产分类代码") = Nothing \'数据源的第一个赋值 e.DataRow("卡片类型") = Nothing \'数据源的第二个赋值 End If End If |
-- 作者:hubin998 -- 发布时间:2014/10/6 11:17:00 -- 谢谢老师!国庆都帮我解决难题,为啥这样效率会提高? |
-- 作者:有点甜 -- 发布时间:2014/10/6 11:18:00 -- 这样不会重复查找,find函数的效率比自己循环的效率要高。 |