以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  Access转SQL数据库后报错  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=152708)

--  作者:237756360
--  发布时间:2020/7/19 22:34:00
--  Access转SQL数据库后报错
蓝板辛苦了!求助!我将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
--  作者:有点蓝
--  发布时间:2020/7/19 22:46:00
--  
和数据库没有关系:http://www.foxtable.com/webhelp/topics/2911.htm,仔细看示例三说明
--  作者:237756360
--  发布时间:2020/7/20 18:03:00
--  回复:(有点蓝)和数据库没有关系:http://www.foxta...
谢谢,蓝板
--  作者:237756360
--  发布时间:2020/7/20 20:28:00
--  

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



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

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

--  作者:有点蓝
--  发布时间: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
--  发布时间: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

--  作者:有点蓝
--  发布时间:2020/7/21 10:09:00
--  

SQLFind(Filter,Sort,Index)

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


如果不需要条件


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