将 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 2005 - 无法绑定到新的显示成员 - 组合框 - 数组
VB.NET编好程序后一运行就提示生成错误,重装VB好几遍了还是不行
Amazon Cloudfront 移动到新服务器后无法连接
vb.net在textbox1中输入六个数字后,自动将格式转换为时间格式,如输入120314自动变成12:03:14,怎么操作