上周我在 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 中的True或False。
我诅咒了托尔并测试了对声明的更改
Dim totalDays As Integer = CInt(FinalDate.Subtract(StartingDate).TotalDays)
If totalDays + 1 = 7 Then
正如你想象的那样,这很好用。
但问题是“为什么?”。
为什么????!!!!
任何想法?