将 VB.NET 项目移动到新计算机后日期无法正常工作[关闭]

Posted

技术标签:

【中文标题】将 VB.NET 项目移动到新计算机后日期无法正常工作[关闭]【英文标题】:Dates not working properly after moving VB.NET project to new computer [closed] 【发布时间】:2018-11-11 17:35:55 【问题描述】:

我有一个读取和写入 Access 2016 数据库的应用程序,我刚刚将我的数据库和项目移到了新计算机上,现在当我从 VB 运行 SELECT 命令时,它会向后读取日期(即 07/11/ 2018 年应该是 11 月 7 日,但 VB 将其读取为 7 月 11 日)。

当我在 Access 07/11/2018 过滤器中按月过滤日期字段时,问题肯定是 VB 而不是 Access。

是否需要设置某种全局设置?

代码如下:

        Public Shared Sub Update_All()

        Dim connectString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & MainForm.mainDir & "\eBase.accdb"
        Dim cn As OleDbConnection = New OleDbConnection(connectString)

        cn.Open()

        Dim selectString As String = "Select e_date, e_name FROM Results WHERE eRats Is Null Order By e_date ASC;"

        Dim cmd As OleDbCommand = New OleDbCommand(selectString, cn)
        Dim reader As OleDbDataReader = cmd.ExecuteReader()

        While (reader.Read())
            Update_R(reader("e_date").ToString, reader("e_name").ToString)
        End While

        reader.Close()
        cn.Close()
    End Sub

【问题讨论】:

您的新计算机与旧计算机的系统语言是否不同?解析格式根据机器(或线程)的语言而变化。 听起来您很可能使用日期的字符串表示,而不是 DateTime 值。请发布您正在使用的代码。 The problem is definitely with VB rather than Access。一个好的工匠永远不会责怪他的工具。 我们可能需要查看Update_R,但是您将日期值作为 ToString 传递的事实看起来并不乐观。 我使用与旧系统相同的语言(英语),我使用的是日期字符串,但它是从数据库中读取的,它在我的旧系统上运行。 【参考方案1】:

没有你的代码,我们只能猜测。

听起来您使用字符串连接进行过滤。如果是这样,对过滤器值应用一个不变的格式:

"Select * From YourTable Where DateField = #" & FilterDateValue.ToString("yyyy'/'MM'/'dd") & "#"

很多人会告诉你使用参数来防止这种麻烦。

【讨论】:

以上是关于将 VB.NET 项目移动到新计算机后日期无法正常工作[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从两个日期计算年龄 vb.net

VB.NET 2005 - 无法绑定到新的显示成员 - 组合框 - 数组

VB.NET编好程序后一运行就提示生成错误,重装VB好几遍了还是不行

Amazon Cloudfront 移动到新服务器后无法连接

Vb.NET 2.0 My.settings 无法正常工作

vb.net在textbox1中输入六个数字后,自动将格式转换为时间格式,如输入120314自动变成12:03:14,怎么操作