Foxtable(狐表)用户栏目专家坐堂 → [求助]使用临时表报错


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

主题:[求助]使用临时表报错

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106076 积分:539479 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/7 12:10:00 [显示全部帖子]

调试看那一句代码出错

Dim dr As DataRow = TmTable.Find("OpenID = '" & OA & "'")
if dr isnot nothing then xxxx

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106076 积分:539479 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/7 14:02:00 [显示全部帖子]

多行使用ExecuteReader,然后遍历返回的表格的所有行

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106076 积分:539479 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/7 14:23:00 [显示全部帖子]

示例三

同样利用ExecuteReader,可以直接从后台提取数据合并到某个表中:

Dim cmd As New SQLCommand
cmd.ConnectionName = "数据源名称"
Dim 
dt As DataTable
Dim 
Cols1() As String = {"来源列一","来源列二","来源列三"}
Dim Cols2() As String = {"接收列一","接收列二","接收列三"}
cmd.CommandText = 
"SELECT * From {表A} Where 条件语句"
dt = cmd.ExecuteReader
()
For Each 
dr1 As DataRow In dt.DataRows
    Dim 
dr2 As DataRow = DataTables("表B").AddNew()
    For 
i As Integer = 0 To Cols1.Length -1
        
dr2(Cols2(i)) = dr1(Cols1(i))
    Next
Next


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106076 积分:539479 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/7 15:06:00 [显示全部帖子]

Cols1和Cols2数值里必须是列名。赋值代码可以用回原来的用法,不一定要抄帮助的

 dr2("OpenID") = OA
 dr2("课程ID") = KC

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106076 积分:539479 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/8 11:14:00 [显示全部帖子]

上面判断的是【If dy Is Nothing Then】,也就是说dy变量是一个空对象空值,再使用dy(xxx)肯定就出错的

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106076 积分:539479 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/8 14:28:00 [显示全部帖子]

什么方式创建的临时表?

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106076 积分:539479 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/8 14:46:00 [显示全部帖子]


 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106076 积分:539479 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/8 15:27:00 [显示全部帖子]

如果是指cmd.ExecuteReader返回的表格,肯定是存在的,只是有没有数据的区别,如果要判断有没有数据:

if dt.datarows.count = 0 then
msgbox("没有数据")
else
……

20楼函数应该不是代码的问题,而是逻辑的问题。使用文字详细说明一下想要做什么功能

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106076 积分:539479 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/8 15:41:00 [显示全部帖子]

20楼没看到有创建临时表的代码,如果想解决问题请给出完整代码,不要遮遮掩掩的,浪费大家时间

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106076 积分:539479 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/8 16:03:00 [显示全部帖子]

直接使用临时表变量即可,Build(True)不会生成主表,用法仔细看看帮助:http://www.foxtable.com/webhelp/topics/1910.htm

Dim dr As DataRow = TmTable.Find("OpenID = '" & OA & "'")

还是先搞清楚自己的处理逻辑吧,建个临时表,还没有数据就开始Find、DeleteFor,都是多余的。填充了数据也没有看到任何地方使用这个表

 回到顶部
总数 11 1 2 下一页