以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  在查找替换后台数据时,需要查找后台的行可否筛选?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=142017)

--  作者:gudao123456
--  发布时间:2019/10/16 16:36:00
--  在查找替换后台数据时,需要查找后台的行可否筛选?
在进行后台查找替换后台数据时,不需要查找所有的行,只要查找符合某个条件的行就可以了,如:

DataTables("学生信息导入样表").StopRedraw
Dim i ,y,k As Integer = 0
Dim dr As DataRow
For Each dr1 As DataRow In DataTables("学生信息导入样表").DataRows
    k=0
    For y=0 To lms.count-1
        k = DataTables("xszxztb").SQLReplaceFor(lms(y),dr1(nms(y)),"sfzhm= \'" & dr1("身份证号码") & "\'")
    Next
    dr1("是否替换成功") = k > 0
    i=i+k
    
Next
这里的后台表 DataTables("xszxztb")有几十万条数据,但查找时是可以知道一定范围的,如,里面有个字段“学校”,查找时,只需在符合条件“学校”=“青山学校” 查找就可以了,如何设定这个条件?

--  作者:有点蓝
--  发布时间:2019/10/16 16:45:00
--  
k = DataTables("xszxztb").SQLReplaceFor(lms(y),dr1(nms(y)),"sfzhm= \'" & dr1("身份证号码") & "\' and 学校=\'青山学校\'")

如果身份证号码已经可以识别需要的数据,完全没有必要加什么学校条件了,反而会降低效率。再说一个身份证号码会出现在2个学校?

--  作者:gudao123456
--  发布时间:2019/10/16 16:47:00
--  
我见需要的时间较长,考虑可否压缩的查找范围,我是想先给后台一个更为小的查找范围,不用再所有行去找,不知是否有必要这样做
[此贴子已经被作者于2019/10/16 16:48:35编辑过]

--  作者:有点蓝
--  发布时间:2019/10/16 16:55:00
--  
给数据库的表身份证号码列加一个索引。

这种遍历更新快不了的,如果sql熟,可以考虑直接使用SQL更新

--  作者:gudao123456
--  发布时间:2019/10/16 17:13:00
--  

我曾用语句:

UPDATE {xszxztb},{学生信息导入样表} S ET {xszxztb}.yhkh={学生信息导入样表}.银 行卡号 WHERE {xszxztb}.sfzhm={学生信息导入样表}.身份证号码

在S QL 窗口中执行过,总提示说,在","附件有错误


以前我试过其他数据库,是成功的,而且很快,但那是同在本地的ACC数据库。这个却不行,不知何因?


--  作者:有点蓝
--  发布时间:2019/10/16 17:21:00
--  
SqlServer的语法和access有些差别

UPDATE {xszxztb} S ET yhkh={学生信息导入样表}.银 行卡号 from {学生信息导入样表} WHERE {xszxztb}.sfzhm={学生信息导入样表}.身份证号码

--  作者:gudao123456
--  发布时间:2019/10/16 17:27:00
--  
哦,非常谢谢!
--  作者:gudao123456
--  发布时间:2019/10/16 20:34:00
--  
解决了
谢谢!
[此贴子已经被作者于2019/10/17 0:29:47编辑过]