2011-03-24 43 views
1

一些多年来工作的代码突然开始产生意外的(和错误的)结果。该代码以一种形式运行,与此类似:Access 2007 + SQL 2008:书签操作停止工作

Dim rs As DAO.Recordset 
Set rs = Me.RecordsetClone 
rs.FindFirst "docId = " & strContainsDocIdNumber 
Me.Bookmark = rs.Bookmark 

此代码通常会将用户记录到正确的记录中。最近它开始行为不正常,去完全无关的记录。例如而不是去DocId 66345,它去DocId 1042(总是小数字)。
我曾尝试逐步调试,检查值,不知道。
我还重新编制了SQL Server 2008 R2数据库中的所有表,并刷新了表链接,没有任何改进。
任何暗示或建议?

编辑:我通过使用DoCmd.FindRecord解决了这个问题,我很确定我的代码没有问题,因为它工作了几年没有问题。我正在寻找有关Access-SQL Server交互错误的线索,如this one

+0

当你调试,问题出在哪里? 'strContainsDocIdNumber'是否有你期望的值? findfirst方法会将您带到预期的记录吗? rs.bookmark的值是否有效并与me.bookmark不同? – Beth 2011-03-24 14:43:41

+0

@Beth:我编辑了这个问题。例如,错误在于显示代码让用户记录1034,而变量strContainsDocIdNumber包含66400。但代码有4年的工作很好,并且在另一个站点仍然工作正常! – 2011-03-24 16:13:09

+1

是你的样本数字吗?这种差异看起来非常接近65536,这强烈暗示了某种溢出......你最近是否只有65k以上的记录? – Unreason 2011-03-24 16:24:36

回答

1

我曾经遇到过的错误在MS-访问诸如这些在典型的场景

  1. 代码工作
  2. 代码将停止,而无需更改代码工作
  3. 没有什么帮助

我通常请尝试以下内容

+0

我会试一试。在那些绝望的情况下,我通常会创建一个空白数据库并将其中的所有内容导入。 – 2011-03-24 16:23:09

+1

顺便说一句,你还可以检查你的DAO版本吗?也许不知何故,这被破坏了一些古老的版本,例如有一个这个错误 - http://support.microsoft.com/?id=238134#appliesto – Unreason 2011-03-24 16:31:57

+0

谢谢,我也会检查。在本周结束前我无法检查,但我会保证在这里更新。 – 2011-03-24 16:49:37