Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

TRANSFORM语法错误请教

王萌萌  发表于:2021-04-22 11:48:18  
复制

我在做个图表查询时候遇到语法错误的问题,请指教哪里错了。

Private Sub btnSeach_Click()
    Dim strWhere As String


    
    Const xlCategory = 1    '在这里声明常量是为了去掉图表类型库的引用后代码也能正常运行


    '取得查询条件,日期用Format函数进行格式化是为了更好的兼容性,在任何地方都不会出错
    If Not IsNull(Me.开始日期) Then strWhere = strWhere & " AND 报价日期>=#" & Me.开始日期 & "#"
    If Not IsNull(Me.截止日期) Then strWhere = strWhere & " AND 报价日期>=#" & Me.截止日期 & "#"
    If Not IsNull(Me.品名) Then strWhere = strWhere & " AND 品名='" & Me.品名 & "'"


    '由于最后生成的条件最前面始终会多出一个“ AND ”,所以这里要将其去掉,并且如果条件不为空在前面加上 WHERE 关键字
    strWhere = Mid(strWhere, 6)


    '设置子窗体的筛选器条件
    Me.sfrList_MX.Form.Filter = strWhere
    '应用筛选
    Me.sfrList_MX.Form.FilterOn = True
    '根据查询条件重置图表数据源

    Me.Graph.RowSource = " TRANSFORM Sum(价格) AS 价格合计" _
                       & " SELECT AS 报价日期" _
                       & " FROM qry_原材料动态报价图 & strWhere" _
                       & " GROUP BY 报价日期" _
                       & " PIVOT 品名;"


End Sub

 

Top
leoyoung 发表于:2021-04-22 12:33:24

.....

& " FROM qry_原材料动态报价图 & strWhere" _

.....

strWhere是变量,不能在引号内



王萌萌 发表于:2021-04-22 13:14:27

改了& " FROM qry_原材料动态报价图 " & strWhere _

还是不行。其他地方还有错吗



西出阳关无故人 发表于:2021-04-22 14:25:27

如果 strWhere 不为空:

 & " FROM qry_原材料动态报价图 where " & strWhere _

否则:

& " FROM qry_原材料动态报价图 "  _


另外

If Not IsNull(Me.截止日期) Then strWhere = strWhere & " AND 报价日期>=#" & Me.截止日期 & "#"

改为:

If Not IsNull(Me.截止日期) Then strWhere = strWhere & " AND 报价日期 <=#" & Me.截止日期 & "#"



总记录:3篇  页次:1/1 9 1 :