Foxtable(狐表)用户栏目专家坐堂 → Access转SQL数据库后报错


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

主题:Access转SQL数据库后报错

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


加好友 发短信
等级:童狐 帖子:257 积分:2960 威望:0 精华:0 注册:2020/5/21 17:56:00
Access转SQL数据库后报错  发帖心情 Post By:2020/7/19 22:34:00 [只看该作者]

蓝板辛苦了!求助!我将Access数据库转SQL数据库后提示我:“未将对象引用设置到对象的实例。
请问是哪里出错了呢!


Dim ddr As DataRow
Dim dd As String = MainTable.Name
Tables("录入窗体_table1").DataSource = DataTables("电参日报")
ddr = DataTables(dd).SQLFind("录入日期","录入日期 Desc")
Dim ss As Date = ddr("录入日期")
DataTables(dd).LoadFilter = "录入日期 = '"& ss &"'"
DataTables(dd).Load
Tables("录入窗体_table1").AutoSizeCols()
DataTables("电参日报").AllowEdit =False

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


加好友 发短信
等级:超级版主 帖子:106688 积分:542629 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/19 22:46:00 [只看该作者]

和数据库没有关系:http://www.foxtable.com/webhelp/topics/2911.htm,仔细看示例三说明

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


加好友 发短信
等级:童狐 帖子:257 积分:2960 威望:0 精华:0 注册:2020/5/21 17:56:00
回复:(有点蓝)和数据库没有关系:http://www.foxta...  发帖心情 Post By:2020/7/20 18:03:00 [只看该作者]

谢谢,蓝板

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


加好友 发短信
等级:童狐 帖子:257 积分:2960 威望:0 精华:0 注册:2020/5/21 17:56:00
  发帖心情 Post By:2020/7/20 20:28:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:02.png
图片点击可在新窗口打开查看



图片点击可在新窗口打开查看此主题相关图片如下:01.png
图片点击可在新窗口打开查看

老师,求助!上面的例三我看过了,可是不是这个问题。您看同样的代码,内部数据表有输出。SQL数据表就报错!图片点击可在新窗口打开查看
[此贴子已经被作者于2020/7/21 10:05:11编辑过]

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


加好友 发短信
等级:超级版主 帖子:106688 积分:542629 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/21 8:45:00 [只看该作者]

到底看懂什么?

示例三

通常应该在代码中判断是否找到了符合条件的行,然后再运行后续的代码.
例如要找出最近一次订购产品数量超过1000的订单,并显示订单的日期和客户:

Dim dr As DataRow
dr = DataTables("订单").SQLFind("数量 > 1000","日期 Desc")
If dr IsNot Nothing Then '如果找到的话
    Output.Show("日期:" & dr("日期"))
    Output.Show("客户:" & dr("客户"))
End If

如果我们不加上判断,直接:

Dim dr As DataRow
dr = DataTables("订单").SQLFind("数量 > 1000","日期 Desc")
Output.Show("日期:" & dr("日期"))
Output.Show("客户:" & dr("客户"))

一旦订单表并不存在订购数量超过1000的订单,那么Find方法返回Nothing,导致后续代码运行出错.

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


加好友 发短信
等级:童狐 帖子:257 积分:2960 威望:0 精华:0 注册:2020/5/21 17:56:00
回复:(有点蓝)到底看懂什么?示例三通常应该在代码...  发帖心情 Post By:2020/7/21 10:04:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:01.png
图片点击可在新窗口打开查看

老师‘可能我没表达明白,您看这两个图,一个是内建表,一个是SQL表,相同代码,一个能找到值,一个找不到,我也按照例三加上判断语句了。
Dim dd As String = MainTable.Name
Dim ddr As DataRow
ddr = DataTables(dd).SQLFind("录入日期","录入日期 Desc")
If ddr IsNot Nothing Then
    Dim ss As Date = ddr("录入日期")
    Output.Show(ss)
Else
    Output.Show("未找到")
End If

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


加好友 发短信
等级:超级版主 帖子:106688 积分:542629 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/21 10:09:00 [只看该作者]

SQLFind(Filter,Sort,Index)

Filter:  条件表达式,采用的是SQL语法,和常规表达式的语法有所不同,请参考:SQL表达式的语法差异
Sort:    可选参数,指定排序方式。
Index:   可选参数,指定返回第几个符合条件的行,0表示第一行。


如果不需要条件


ddr = DataTables(dd).SQLFind("","录入日期 Desc")


 回到顶部