以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  DataTable加载中用“Year(DocTm) = 2018”会有错误?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=122898)

--  作者:kylin
--  发布时间:2018/8/3 19:41:00
--  DataTable加载中用“Year(DocTm) = 2018”会有错误?

根据示例:例如,用SQLCompute统计2013年的销售数量:
Dim
Val As Integer
Val
= DataTables("订单").SQLCompute("Sum(数量)", "Year(日期) = 2013")

 

我的代码是:Dim cmd As New SQLCommand
cmd.Conn  ecti
cmd.CommandText = "SEL ECT WrtEnd From {PrjFrm} Where DtNam = \'"& wr("CurDt") &"\' And YM = \'"& ny &"\'"
Dim jz As Boolean = cmd.ExecuteScalar()

产生的错误提示如下:


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

--  作者:有点蓝
--  发布时间:2018/8/3 20:11:00
--  
看看完整sql

msgbox("SEL ECT WrtEnd From {PrjFrm} Where DtNam = \'"& wr("CurDt") &"\' And YM = \'"& ny &"\'")

--  作者:kylin
--  发布时间:2018/8/4 12:07:00
--  
抱歉,一楼贴错代码了,更正一下:
  Dim syr as String = "张三"
  Dim n as Integer = 2018
  Dim y as Integer = 8
  Dim zflt as String = "Drwr = \'"& syr &"\' And Year(DocTm) = "& n &"  And Month(DocTm) = "& y
\'Year(DocTm) = "& n &"  And Month(DocTm) = "& y \'这个会报警错误的函数Year?
        DataTables(zb).LoadFilter = zflt
        DataTables(zb).Load
[此贴子已经被作者于2018/8/4 12:07:23编辑过]

--  作者:kylin
--  发布时间:2018/8/4 12:35:00
--  
FoxTable的版本是最新的


--  作者:有点蓝
--  发布时间:2018/8/4 13:48:00
--  
内部表,access,SqlServer数据库我都测试过这个用法没有问题

Dim n As Integer = 2018
Dim y As Integer = 8
Dim zflt As String = "Year(日期) = " & n & "  And Month(日期) = " & y
DataTables("入库单").LoadFilter = zflt
DataTables("入库单").Load

--  作者:kylin
--  发布时间:2018/8/4 15:16:00
--  

就在同一个窗口打开的代码当中,换一个进入本窗口的方式(回避以上报告错误的情况),结果发现另外一个问题,自定义的函数也找不到了。

1、这是引用自定义函数的窗口


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20180804151359.jpg
图片点击可在新窗口打开查看

2、这是报告错误

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20180804151441.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2018/8/4 15:21:33编辑过]

--  作者:有点蓝
--  发布时间:2018/8/4 15:22:00
--  
删除项目里的bin目录,重启一下项目。

如果函数找不到,一般是前面有函数编译出错了。函数是按顺序编译的,如果前面的编译出错可能会导致后面的函数都无法编译,

--  作者:kylin
--  发布时间:2018/8/4 16:27:00
--  
3楼的代码还是解决不了出错的问题,既然斗不过,那还是可以躲得过啊,主要更改的代码如下:
        Dim d1,d2 AS Date
        d1 = New Date(n,y,1)
        d2 = New Date(n,y,Date.DaysInMonth(n,y))
        zflt = zflt + " And Drwr = \'"& syr &"\' And DocTm >= \'"& d1 &"\' And DocTm <= \'"& d2 &"\'"

--  作者:有点蓝
--  发布时间:2018/8/4 16:30:00
--  
按月判断,个人也建议这样用,不过可能有点bug,这样比较严谨

Dim d1 AS Date
        d1 = New Date(n,y,1)
        zflt = zflt + " And Drwr = \'"& syr &"\' And DocTm >= \'"& d1 &"\' And DocTm
< \'"& d1.adddays(1) &"\'"

--  作者:kylin
--  发布时间:2018/8/7 14:25:00
--  
收到建议,谢谢版主