vb.net - 在 Access 和 .NET 中对数字进行排序

标签 vb.net ms-access

我有一个 Access 表,其中有一个数字字段和一个文本字段。

我可以运行这样的查询:

SELECT * FROM Table ORDER BY intID ASC
//outputs 1,2,3,10

但是当我尝试通过 .NET OleDB 客户端运行相同的查询时,如下所示:

Private Sub GetData()    
   Using cnDB As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Path)
        cnDB.Open()
        Dim SQL As String = "SELECT * FROM Table ORDER BY intID ASC"
        Dim cmd As New OleDbCommand(SQL, cnDB)
        Dim dr As OleDbDataReader = cmd.ExecuteReader()
        While dr.Read()
            lst.Items.Add(dr.Item("intID") & " - " & dr.Item("strName"))
        End While
        cnDB.Close()
    End Using
End Sub

我得到的元素顺序为 1,10,2,3。

这里发生了什么,如何让数据在两个地方“自然地”排序(1,2,3,10)?

最佳答案

尝试

SELECT * FROM Table ORDER BY CInt(intID) ASC

显式告诉 Access 将其视为整数而不是字符串。显然,OleDbClient 中的某些内容将此字段视为字符串(文本字段)并相应地进行排序。

关于vb.net - 在 Access 和 .NET 中对数字进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7233378/

相关文章:

c# - 正则表达式提取 html 正文

sql-server - 无法加载文件或程序集 'System.Data.SqlServerCE'

ASP.NET CheckBox 没有在没有奇怪的 hack 的情况下在回发时检查

SQL Access 查询-如果存在则更新行,如果不存在则插入

ms-access - 如何判断哪些记录被删除?

delphi - 使用MS Access数据库的Delphi 7应用程序阻止通过MS Access Access

.net - 如何使用 vb.net 替换 html 文件的图像源

wpf - 在 WPF 中禁用 F10 激活窗口菜单

oracle - Access 2007导出表到CSV十进制

database - Ms Access 中的负查询