以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]SQL视图取数  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=139722)

--  作者:lgj716330
--  发布时间:2019/8/20 10:15:00
--  [求助]SQL视图取数
Dim bd1 As New SQLGroupTableBuilder("统计表11", "ABC_bmfzzz")
bd1.C
bd1.AddTable("ABC_bmfzzz","部门编号","责任中心档案","部门编号") 
Dim dt1 As fxDataSource
bd1.Groups.AddDef("月份") 
bd1.Totals.AddDef("借方金额","本年费用") 
bd1.Filter = "年份 = " & tj1 & " and [科目编码] like \'6602%\'  And (" & filter & ")" 
dt1 = bd1.BuildDataSource()
问题可能在以下这句代码
bd1.Filter = "年份 = " & tj1 & " and [科目编码] like \'6602%\'  And (" & filter & ")" 

上述代码从SQL数据库视图中取不到数据,没错误提示,但去掉and [科目编码] like \'6602%\' 以后又可以取到数据,是不是这里的LIKE用法有误
[此贴子已经被作者于2019/8/20 10:17:43编辑过]

--  作者:有点蓝
--  发布时间:2019/8/20 10:29:00
--  
like用法没有问题,取的是6602开头的编码。

msgbox("年份 = " & tj1 & " and [科目编码] like \'6602%\'  And (" & filter & ")" ) 看看完整条件,是否有符合此条件的数据

--  作者:lgj716330
--  发布时间:2019/8/20 10:44:00
--  

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

--  作者:lgj716330
--  发布时间:2019/8/20 10:51:00
--  
在用以下代码在数据库试了下,也是空的。但实际数据查了有的
s elect 科目编码,借方金额
from ABC_bmfzzz
where 科目编码 like \'6602%\'

但我where 科目编码 = \'66020701\',就能查出数据来

[此贴子已经被作者于2019/8/20 10:53:18编辑过]

--  作者:lgj716330
--  发布时间:2019/8/20 11:15:00
--  
说明下,这个SQL视图是从表值函数中取数过来的,不知会不会是这个影响
--  作者:有点蓝
--  发布时间:2019/8/20 11:21:00
--  
没有数据测试,不清楚。先把4楼sql调通了再说
--  作者:lgj716330
--  发布时间:2019/8/20 11:47:00
--  
看了下数据库,科目编码的数据类型是float,会不会是这个数据类型的问题
[此贴子已经被作者于2019/8/20 13:07:45编辑过]

--  作者:有点酸
--  发布时间:2019/8/20 13:57:00
--  
数值型的数据,不能用like,请改为字符型.
或者:
cast([科目编码] As varchar) Like \'6602%\'

--  作者:lgj716330
--  发布时间:2019/8/20 14:14:00
--  
用楼上这个在查询里测试结果还是一样出不来,偿试着先转换数据类型

S ELECT     CAST(科目编号 AS varchar) AS 科目编码, 部门编号, iperiod AS 月份, cbegind_c AS 期初方向, mb AS 期初金额, md AS 借方金额, mc AS 贷方金额, 
                      cendd_c AS 期末方向, me AS 期末金额, iyear AS 年份, iYPeriod AS 年月
FROM         UFDATA_100_2019.dbo.fzzzhz() AS fzzzhz_1

以上是视图代码,执行结果没问题

s elect 科目编码,借方金额
from mgs_bmfzzz
where 科目编码 like \'6602%\'
上述代码测试从视图里取数,但提示列名“科目编码”无效

[此贴子已经被作者于2019/8/20 14:33:02编辑过]

--  作者:有点酸
--  发布时间:2019/8/20 14:43:00
--  
在Foxtable:

Sele ct TOP 1  From 视图名  

看看到底列名是什么

计算机不会撒谎,既然提示列名错误,要么你提供的视图名错了,要么真的就是列名错了,认真检查。