Foxtable(狐表)用户栏目专家坐堂 → [求助]选择并复制记录问题


  共有1563人关注过本帖树形打印复制链接

主题:[求助]选择并复制记录问题

帅哥哟,离线,有人找我吗?
lzzhx
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:995 积分:6712 威望:0 精华:0 注册:2015/1/12 22:12:00
[求助]选择并复制记录问题  发帖心情 Post By:2017/7/18 14:53:00 [只看该作者]

请教老师:
       有两个表:表A(10000条记录)和表B(2000条记录),主键均为  _Identify
       表B中有一个字段“编号”,类型为整形,存放从表A复制记录时的表A的_Identify的值
 当前主表是表B,在表B的主窗口中放置一个按钮(btn提取数据),点击按钮时,将表A的所有不在表B中的记录复制到表B中,

代码该怎么写?我下面的代码提示[查询超时已过期,未将对象引用到对象的实例],用消息框看ids的值是空的
请老师看看有什么问题?

dim tb as table = e.form.controls("Table1").table
dim flt as string = ""
if tb.rows.count > 0 then
    dim ids as string
    for each r as row in tb.rows
        ids = ids & r("编号") & ","
    next
    flt = "[_Identify] not in (" & ids.trim(",") & ")"
endif
dim sCols() as string = {"_Identify","字段1","字段2","字段3"}
dim dCols() as string = {"编号","字段1","字段2","字段3"}
dim cmd as new sqlcommand
cmd.c
cmd.commandtext = "sel ect * from 表A where " & flt
dim dt as datatable = cmd.executereader()
for each dr as datarow in dt.datarows
    dim nr as datarow = tb.datatable.addnew()
    for i as integer = 0 to sCols.length-1
        nr(dCols(i)) = dr(sCols(i))
    next
next


 回到顶部
帅哥哟,离线,有人找我吗?
lzzhx
  2楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:995 积分:6712 威望:0 精华:0 注册:2015/1/12 22:12:00
  发帖心情 Post By:2017/7/18 15:09:00 [只看该作者]

表B已有12000条记录了,ids 最长能达到多少?是不是长度超出了?

还有没有其它办法?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/18 15:31:00 [只看该作者]

 直接查就可以查到了,没必要用idx,sql语句

 

select a.* from {表A} as a left join {表B} as b on a.[_Identify] = b.第一列 where b.第一列 is null


 回到顶部
帅哥哟,离线,有人找我吗?
lzzhx
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:995 积分:6712 威望:0 精华:0 注册:2015/1/12 22:12:00
  发帖心情 Post By:2017/7/18 15:40:00 [只看该作者]

where b.第一列 is null  条件不太明白,能给解释一下吗

 回到顶部
帅哥哟,离线,有人找我吗?
lzzhx
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:995 积分:6712 威望:0 精华:0 注册:2015/1/12 22:12:00
  发帖心情 Post By:2017/7/18 16:19:00 [只看该作者]

select a.* from {表A} as a left join {表B} as b on a.[_Identify] = b.第一列 where b.第一列 is null


再加两个条件:

表A的条件  :   部门编号 in('1','2','3')

表B的条件  :  春检年度 = 2017     (春检年度是整数形)

加上面2个条件后select语句怎么写,我怎么也试不出来

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/18 16:26:00 [只看该作者]

select a.* from {表A} as a left join {表B} as b on a.[_Identify] = b.第一列 where b.第一列 is null and a.部门编号 in ('1','2','3') and a.春检年度 = 2017

 回到顶部
帅哥哟,离线,有人找我吗?
lzzhx
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:995 积分:6712 威望:0 精华:0 注册:2015/1/12 22:12:00
  发帖心情 Post By:2017/7/18 16:43:00 [只看该作者]

select a.* from {表A} as a left join {表B} as b on a.[_Identify] = b.第一列 where b.第一列 is null
查出记录 3600条

select a.* from {表A} as a left join {表B} as b on a.[_Identify] = b.第一列 where b.第一列 is null and a.部门编号 in ('1','2','3') and b.春检年度 = 2017
查出记录0条  ,应该还是 3600条才对

[此贴子已经被作者于2017/7/18 16:43:17编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lzzhx
  8楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:995 积分:6712 威望:0 精华:0 注册:2015/1/12 22:12:00
  发帖心情 Post By:2017/7/18 17:25:00 [只看该作者]

改成这样就好了
select a.* from {表A} as a left join {表B} as b on a.[_Identify] = b.第一列 and b.春检年度 = 2017 where b.第一列 is null and a.部门编号 in ('1','2','3') 

 回到顶部