1

上周我在 if 条件下有一个奇怪的行为,我会感谢任何知道发生了什么的人。虽然我找到了一个工作人员,但我不喜欢处于阴影中。

让我解释。

场景 0(这在一切爆炸之前都有效)

语言:Visual Basic
Net Fwk 3.5
客户端:XP(x86)机器(Winforms)
数据库:访问 Win Server 2008 的共享文件夹(不知道是 x86 还是 x64)
数据库提供者:Jet OleBD
Office:2007 x86

为什么访问?
低成本的 MS Access 可供用户使用,它满足我的所有需求。

有一天Win7出现了:

场景 1(这是一切都停止工作的时候)

语言:Visual Basic
Net Fwk 3.5
客户端:Win 7 (x64) 机器 (Winforms)
数据库:访问 Win Server 2008 的共享文件夹(不知道是 x86 还是 x64)
数据库提供程序:ACE OleBD x86
Office:2010 x86

在这个新场景中,应用程序开始出现问题。

奥迪西开始了。

首先,我在我的开发机器上测试了应用程序。该场景与场景 0 类似,因此一切正常。

然后我启动了一个 Win7 测试机,并试图找到我是否可以找到问题所在:

方案 2

语言:Visual Basic
Net Fwk 3.5
客户端:Win 7 (x64) 机器 (Winforms)
数据库:本地文件夹访问
数据库提供程序:ACE OleBD x86
Office:2010 x86

我测试应用程序,一切正常。

在像婴儿一样哭了两三分钟后,我决定使用我的 Win7 测试机通过互联网连接到我客户的服务器。

方案 3

语言:Visual Basic
Net Fwk 3.5
客户端:Win 7 (x64) 机器 (Winforms)
数据库:访问 Win Server 2008 的共享文件夹(不知道是 x86 还是 x64)
数据库提供程序:ACE OleBD x86
Office:2010 x86

惊讶于我对本地数据库运行的同一个应用程序,对远程数据库失败(只是更改了配置文件中的连接字符串)。

我已经开始向应用程序添加调试语句并进行了一次又一次的测试,因此我可以找到它为什么不能按预期工作的原因。

最后,我发现语句

If FinalDate.Subtract(StartingDate).TotalDays + 1 = 7 Then

在场景 1 和 3 中总是返回False (总是!)。场景 0和2 中的TrueFalse

我诅咒了托尔并测试了对声明的更改

Dim totalDays As Integer = CInt(FinalDate.Subtract(StartingDate).TotalDays)
If totalDays + 1 = 7 Then

正如你想象的那样,这很好用。

但问题是“为什么?”。

为什么????!!!!

任何想法?

4

1 回答 1

0

总天数

获取以整数天和小数天数表示的当前 TimeSpan 结构的值。

因此,如果您只需要一整天,那么无论如何转换为 Integer 是最安全的,并避免对时间部分的任何可能的担忧。

于 2013-07-15T22:08:49.057 回答