以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]ACCESS数据源日期合成查询条件语法错误  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=178856)

--  作者:洮沙
--  发布时间:2022/7/24 12:08:00
--  [求助]ACCESS数据源日期合成查询条件语法错误

老师,有以下查询窗口,查询按钮代码如下,执行查询出现以下错误,日期我加了#号,怎么也不对呢?麻烦老师帮忙看一下,谢谢!

 


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

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

Dim Filter As String
Dim tbl As DataTable = DataTables("订单")
For Each ctl As WinForm.Control In e.Form.Controls \'遍历所有控件
    If TypeOf ctl Is WinForm.RadioButton Then \'如果此控件是RadionButton(单选框)
        Dim rdo As WinForm.RadioButton = ctl
        If rdo.Checked Then \'如果已经选中
            rdo.Select \'将焦点移到控件上
            Exit For
        End If
    End If
Next

Dim date1 As Date
Dim date2 As Date
With e.Form.Controls("DateTimePicker1")
    If .Value IsNot Nothing Then
        date1 = .value
        Filter = "销单_销单日期 >= #" & CDate(.Value) & "#"
    End If
End With
With e.Form.Controls("DateTimePicker2")
    If .Value IsNot Nothing Then
        date2 = .value
         If date2 < date1 Then
            MessageBox.Show("【日期起】不能大于【日期至】,请检查!", "提示")
            Return
        End If
        If date2 > date1.AddYears(1) Then
            MessageBox.Show("日期间隔不能大于一年,请检查!", "提示")
            Return
        End If
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "销单_销单日期 < = #" & CDate(.Value) & "#"
    End If
End With
With e.Form.Controls("NumericComboBox1")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "分析_超期 >  " & .Value
    End If
End With
With e.Form.Controls("NumericComboBox2")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "分析_账龄 > " & .Value
    End If
End With
With e.Form.Controls("DropBox1")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "客户编号 = \'" & .Value & "\'"
    End If
End With
If e.Form.Controls("RadioButton1").Checked = True Then\' 如果选择未结单
    If Filter > "" Then
        Filter = Filter & " And "
    End If
    Filter = Filter & "(结单 = False or 结单 Is Null)"
End If
If e.Form.Controls("RadioButton2").Checked = True Then\' 如果选择已结单
    If Filter > "" Then
        Filter = Filter & " And "
    End If
    Filter = Filter & "结单 = True "
End If
If e.Form.Controls("RadioButton3").Checked = True Then\' 如果选择全部
    Filter = Filter
End If
If Filter > "" Then
    Dim Sum As Integer = DataTables("订单").sqlCompute("Count(订单编号)", Filter )
    If Sum > 0 Then
        Dim Result As DialogResult
        Result = MessageBox.Show("后台查询需要加载【" & sum & "】条数据,估计有点慢,是否继续?", "提示",
        MessageBoxButtons.YesNo, MessageBoxIcon.Question)
        If Result = DialogResult.Yes Then
            tbl.loadFilter = Filter
            tbl.load()
            If Forms("订单主窗口").Opened Then
                Forms("订单主窗口").Controls("Label7").text = "数据状态:筛选"
            End If
        Else
            tbl.loadFilter = "[_Identify] Is Null"
            tbl.load()
        End If
    End If
End If


--  作者:洮沙
--  发布时间:2022/7/24 20:04:00
--  
今天估计老师们没有上班,上班后,麻烦看一下,谢谢!
--  作者:有点蓝
--  发布时间:2022/7/24 20:32:00
--  
什么数据库?看看:http://www.foxtable.com/webhelp/topics/2343.htm
--  作者:洮沙
--  发布时间:2022/7/24 21:38:00
--  

数据库是ACCESS,也按照帮助对日期加#处理了,代码在一楼,实在是找不出错误了,麻烦给帮忙改一下,谢谢!

 


--  作者:有点蓝
--  发布时间:2022/7/24 21:42:00
--  
output.show(filter) ,打开命令窗口后,点击窗口按钮执行代码,关闭窗口,看看命令窗口输出的完整条件。然后放到数据库执行,看提示什么错误
[此贴子已经被作者于2022/7/24 21:42:54编辑过]

--  作者:洮沙
--  发布时间:2022/7/24 21:58:00
--  

命令窗口执行结果:

 


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


图片点击可在新窗口打开查看此主题相关图片如下:9.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2022/7/24 22:09:50编辑过]

--  作者:有点蓝
--  发布时间:2022/7/24 22:13:00
--  
条件放到数据库执行,看提示什么错误,>=中间的空格去掉
--  作者:洮沙
--  发布时间:2022/7/24 22:23:00
--  

去掉空格合适了,感谢!这么迟了,早点休息!