以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]到类型“Long”的转换无效。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=178833)

--  作者:洮沙
--  发布时间:2022/7/23 8:49:00
--  [求助]到类型“Long”的转换无效。

If e.Table.Current IsNot Nothing Then
    DataTables("订单").LoadFilter = "客户编号 = " & e.Table.Current("客户编号") And ("结单 = False Or 结单 Is null")
Else
    DataTables("订单").LoadFilter = "[_Identify] is null"
End If
DataTables("订单").Load()

 

代码如上,麻烦老师看一下哪里出错了?自己搞蒙了,谢谢!

 

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.7.3.1
错误所在事件:客户,CurrentChanged
详细错误信息:
从字符串“客户编号 = KH-0047”到类型“Long”的转换无效。
输入字符串的格式不正确。


--  作者:有点蓝
--  发布时间:2022/7/23 8:58:00
--  
先看3遍:http://www.foxtable.com/webhelp/topics/1284.htm
--  作者:洮沙
--  发布时间:2022/7/23 9:03:00
--  

一直看了几遍了,高低搞蒙了,麻烦老师指出错误,谢谢!

 

[此贴子已经被作者于2022/7/23 9:13:46编辑过]

--  作者:有点蓝
--  发布时间:2022/7/23 9:13:00
--  

表达式中的日期用符号#括起来,数值则不需要任何符号括起来,这些和代码中的格式是一样的,唯一不同的是字符串用单引号括起来。

例如:

Tables("订单").Filter = "[产品] = \'PD01\'"  \'字符用单引号括起来
Tables("订单").Filter = "[日期] = #3/17/1999#"  \'日期用#括起来
Tables("订单").Filter = "[折扣] = 0.1"  \'数值直接使用


--  作者:洮沙
--  发布时间:2022/7/23 9:13:00
--  

一直测试加了单引号,还是不行啊!

改写为:

 DataTables("订单").LoadFilter = "客户编号 = \'" & e.Table.Current("客户编号") & "\'" And ("结单 = False Or 结单 Is null")

报错:

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.7.3.1
错误所在事件:客户,CurrentChanged
详细错误信息:
从字符串“客户编号 = \'KH-0047\'”到类型“Long”的转换无效。
输入字符串的格式不正确。

 

通过定义变量解决,最后还是没搞明白:

Dim Filter As String = "客户编号 = " & e.Table.Current("客户编号") & "And (结单 = False Or 结单 Is null)"
If e.Table.Current IsNot Nothing Then
    DataTables("订单").LoadFilter = " \'" & Filter & "\'"
Else
    DataTables("订单").LoadFilter = "[_Identify] is null"
End If
DataTables("订单").LoadPage = 0
DataTables("订单").Load()

[此贴子已经被作者于2022/7/23 9:33:51编辑过]

--  作者:有点蓝
--  发布时间:2022/7/23 9:40:00
--  
和定义变量没有任何关系,自己比较一下2个表达式有什么不同?

DataTables("订单").LoadFilter = "客户编号 = \'" & e.Table.Current("客户编号") & "\'" And ("结单 = False Or 结单 Is null")

Dim Filter As String = "客户编号 = " & e.Table.Current("客户编号") & "And (结单 = False Or 结单 Is null)"

--  作者:洮沙
--  发布时间:2022/7/23 10:06:00
--  
好的,学习了,谢谢!