【问题标题】:SQL WHERE BETWEEN not selecting all dataSQL WHERE BETWEEN 未选择所有数据
【发布时间】:2017-10-02 11:06:46
【问题描述】:

我在一个适用于范围的应用程序中编写了一个导出(访问 Excel)函数。

用户有 4 个RadioButtons:A-F、G-M、N-R 和 S-Z。

假设用户选择了rbtnAF,这会将所有客户加载到Customer_Code 字段以A、B、C、D、E 或F 开头的网格中。

加载数据的代码如下:

Dim strFields As String = "[Customer_Addresses].[Cust_Code], [Customers].[Customer_Name], [Customer_Addresses].[Contact_Code], [Customer_Addresses].[Contact_Name], " & _
        "[Customer_Addresses].[Contact_Type], [Customer_Addresses].[Add1], [Customer_Addresses].[Add2], [Customer_Addresses].[Add3], [Customer_Addresses].[Add4], " & _
        "[Customer_Addresses].[Add5], [Customer_Addresses].[Postcode], [Customer_Addresses].[Country], [Customer_Addresses].[Telephone], [Customer_Addresses].[Fax], " & _
        "[Customer_Addresses].[Email], [Customer_Addresses].[Mobile_Phone], [Customers].[Customer_Category], [Customers].[Average_Payment_Terms], " & _
        "[Customers].[Notes], [Customers].[salesRep], [Customers].[hoEmail], [Customers].[webpage] FROM Customers " & _
        "INNER JOIN Customer_Addresses ON [Customers].[Customer_Code] =[Customer_Addresses].[Cust_Code]"

    If rbtnAF.Checked = True Then
        sql = "SELECT " & strFields & " WHERE [Customer_Addresses].[Cust_Code] BETWEEN " & _
        "'A*' AND 'F*' ORDER BY [Customer_Addresses].[Cust_Code]"

        Dim da As New OleDbDataAdapter(sql, con)

        Dim ds As New DataSet
        Dim dt As New System.Data.DataTable

        da.Fill(ds)
        dt = ds.Tables(0).Copy()

        ugExport.DataSource = Nothing
        ugExport.DataSource = dt

我认为这一切正常,我能够将正确的范围加载到网格中并根据需要导出它们。 但是,用户回过头来说它没有加载所有客户。

我觉得这有点奇怪,所以我加载了他们的数据库并自己进行了测试。如图所示,在 DB 中,有 4 个客户符合 A-F 范围。

但是,当我在导出列表中查看客户范围 A-F 时,只显示了 2 个客户。

还值得注意的是,在客户列表屏幕中有一个TextBox 允许用户按客户代码搜索 - 当我只输入一个 F 时,所有 4 个客户都会按预期显示。

尽管有 4 条记录符合条件,但到底有什么结果却只显示在导出列表中的 2 条?

【问题讨论】:

    标签: excel vb.net ms-access export-to-excel


    【解决方案1】:

    检查 between 语法,您会发现它将 * 视为文字字符,请参见此处 https://support.office.com/en-us/article/Between-And-Operator-a435878d-63f7-4825-8c31-999432ae8223

    你可以使用

    Like "[A-F]*"
    

    相反。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-03
      • 1970-01-01
      • 1970-01-01
      • 2017-01-02
      • 1970-01-01
      • 2021-11-10
      • 2020-10-03
      • 1970-01-01
      相关资源
      最近更新 更多