以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  SQLfind 和SQLselect  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=120999)

--  作者:lur320
--  发布时间:2018/6/27 15:10:00
--  SQLfind 和SQLselect
今天调整了部分find改为sqlfind就报错,处理了1天不知道原因。

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


另外一个外部数据库的日期列,
导出到外部数据表后,有一列日期列不能保存,一旦保存就报错
.NET Framework 版本:2.0.50727.8784
Foxtable 版本:2018.3.9.1
错误所在事件:表,soindex,DataColChanged
详细错误信息:
Exception has been thrown by the target of an invocation.
Object reference not set to an instance of an object.





--  作者:有点甜
--  发布时间:2018/6/27 15:14:00
--  

1、弹出什么?

 

output.show("aaa" & drs("tableaddress") & "bbb")

 

2、执行下面代码,看弹出什么

 

Dim drs = DataTables("masterdata").SQLSelect("")

msgbox(drs.count)

drs = DataTables("masterdata").SQLSelect("tableaddress is not null")

msgbox(drs.count)

 

3、datacolchanged事件,你写了什么代码?

 

http://www.foxtable.com/webhelp/scr/1485.htm

 


--  作者:lur320
--  发布时间:2018/6/27 17:15:00
--  

1、弹出什么?

 

output.show("aaa" & drs("tableaddress") & "bbb") 什么都没有弹出,这个错误只有在代码创建的表里面有问题。不知道原因。

 

2、执行下面代码,看弹出什么

 

Dim drs = DataTables("masterdata").SQLSelect("")

msgbox(drs.count)

drs = DataTables("masterdata").SQLSelect("tableaddress is not null")

msgbox(drs.count)

 所有的表的名字都在里面,所以照道理应该可以找到第一条的那个表,但结果就是找不到。

3、datacolchanged事件,你写了什么代码?

 是如下代码有问题,不知道原因。

tardr=DataTables("soindex").SQLFind(" so_no = \'" & e.DataRow("sono") & "\'")  如果这里用find,就不会有错误

        If tardr IsNot Nothing Then

            Dim deliverydate As Date

            If e.DataRow("Request_dispatchDate") <> #1/1/1 00:00:00# Then

                deliverydate=e.DataRow("Request_dispatchDate")

            Else

                deliverydate=e.DataRow("request_oridate")

            End If 

                        tardr("FG_family")=e.DataRow("FG_family")

                        tardr("PO_receiveDate")=e.DataRow("PO_receivedate")

            tardr("Request_date")=deliverydate

messagebox.show(1),1可以出来


 tardr("OCstart")=e.DataRow("OC_StartDate")

tardr.save,此时报错

messagebox.show(2),2可以出来
[此贴子已经被作者于2018/6/27 17:16:31编辑过]

--  作者:有点甜
--  发布时间:2018/6/27 17:23:00
--  

执行下面代码,看弹出什么 
 

Dim drs = DataTables("masterdata").SQLSelect("")

msgbox(drs.count)

drs = DataTables("masterdata").SQLSelect("tableaddress is not null")

msgbox(drs.count)

 

datacolchanged里面,执行下面代码弹出什么

 

tardr=DataTables("soindex").SQLFind(" so_no = \'" & e.DataRow("sono") & "\'")

msgbox(tardr Is Nothing)


--  作者:lur320
--  发布时间:2018/6/27 19:15:00
--  

Dim drs = DataTables("masterdata").SQLSelect("")

msgbox(drs.count)  317

drs = DataTables("masterdata").SQLSelect("tableaddress is not null")

msgbox(drs.count)   309

 

datacolchanged里面,执行下面代码弹出什么

 

tardr=DataTables("soindex").SQLFind(" so_no = \'" & e.DataRow("sono") & "\'")

msgbox(tardr Is Nothing)  FALSE


--  作者:lur320
--  发布时间:2018/6/27 19:30:00
--  
我奇怪的就是这么多的save,只有到下面几个才有报错
MessageBox.Show(111)   ok
            tardr.Save()
            tardr("description1")=e.DataRow("Description_1")
MessageBox.Show(11) ok
            tardr.Save()
            tardr("description2")=e.DataRow("Description_2")

            tardr("OCstart")=e.DataRow("OC_StartDate")
MessageBox.Show(1) ok
            tardr.Save()
            tardr("outletcheck")=e.DataRow("customer_componments")   两个表都是字符
MessageBox.Show(1) NOTok
            tardr.Save()
            tardr("CSwindows")=e.DataRow("cswindows") 两个表都是字符
MessageBox.Show(1) NOTok
            tardr.Save()
            tardr("OR3D_start")=e.DataRow("or3d_start") 两个表都是date


--  作者:有点甜
--  发布时间:2018/6/27 20:13:00
--  

执行下面代码,输入什么?

 

Dim drs = DataTables("masterdata").SQLSelect("tableaddress is not null")

For each dr As DataRow in drs

    output.show("aaa" & dr("tableaddress") & "bbb")

Next

 

--------如果自己无法调试,请做个实例发上来测试,数据库和例子一起发上来。

[此贴子已经被作者于2018/6/27 20:14:36编辑过]

--  作者:lur320
--  发布时间:2018/6/27 20:13:00
--  
MessageBox.Show(111)   ok
            tardr.Save()
            tardr("description1")=e.DataRow("Description_1")
MessageBox.Show(11) ok
            tardr.Save()
            tardr("description2")=e.DataRow("Description_2")

            tardr("OCstart")=e.DataRow("OC_StartDate")   两个都是日期,格式不对?
MessageBox.Show(1) NOTok
            tardr.Save()
          

--  作者:有点甜
--  发布时间:2018/6/27 20:15:00
--  

执行下面代码,输入什么?

 

Dim drs = DataTables("masterdata").SQLSelect("tableaddress is not null")

For each dr As DataRow in drs

    output.show("aaa" & dr("tableaddress") & "bbb")

Next

 

--------如果自己无法调试,请做个实例发上来测试,数据库和例子一起发上来。


--  作者:lur320
--  发布时间:2018/6/27 20:56:00
--  
统计表没有在SQL里查到的问题先放放。


终于查到原因了,但是不知道怎么处理。

tardr=DataTables("soindex").SQLFind(" so_no = \'" & e.DataRow("sono") & "\'")  如果这里用find,就不会有错误

        If tardr IsNot Nothing Then

      tardr("Request_date")=deliverydate

messagebox.show(1),1可以出来

 tardr("OCstart")=e.DataRow("OC_StartDate")

tardr.save,此时报错,原因在于e.DataRow("OC_StartDate")=00:00:00。此时写入sqlfind 的结果就会出错,如果有日期就不会错。

请问怎么避免?SQL里面我查过可以为空的啊