以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- [求助]SQL视图取数 (http://foxtable.net/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 视图名
看看到底列名是什么
计算机不会撒谎,既然提示列名错误,要么你提供的视图名错了,要么真的就是列名错了,认真检查。
|