Access 2007 Recordset问题

时间:2009-10-13 12:12:40

标签: ms-access vba

我正在尝试将Access 2003(运行正常)迁移到Access 2007.用VBA编写的代码会产生一些问题。就像我有一个主要形式和2个子形式。在主窗体中由动态查询设置的记录源集,但是当我尝试设置子窗体的Recordset时,基于主窗体数据,然后访问2007崩溃&靠近自己。你可以帮助任何人找出2007年访问中出现这种情况的原因。

Public Sub LoadRecord(strRecId As String)

On Error Resume Next

Dim ctl As Access.Control
Dim strsql As String
Dim strID As String
Dim rs As ADODB.Recordset

    strsql = "SELECT * from vwContractsMainForm WHERE ID = '" & strRecId & "'"

    Call OLEDBConnect 
    Set rs = New ADODB.Recordset
    With rs
        Set .ActiveConnection = cnn
        .Source = strsql
        .CacheSize = 1
        .LockType = adLockOptimistic
        .CursorType = adOpenKeyset
        .CursorLocation = adUseServer
        .Open
    End With

    'Set the first sub form's Recordset property to the ADO recordset 
    Set Me.Recordset = rs   '-------- this part creates the problem.
    Me.UniqueTable = "tbl_contracts"
    Set rs = Nothing
    Set cnn = Nothing

1 个答案:

答案 0 :(得分:1)

我会被愚弄。我在本月学到了一些关于Access的新知识。我从未意识到你可以改变那样的形式的记录集。

我从来没有使用On Error Resume Next,可能是,在崩溃的行之前的行上隐藏错误消息。

愚蠢的问题。 strRecId是查询中的数字或字符串字段吗?引号有效吗?

strRecoID和cnn在您的代码中不会变暗。我看到strID是暗淡的,所以很可能是你想要使用的字段。请将Option Explicit添加为模块的顶行或第二行。然后进入每个模块并添加这些行。然后进行编译,看看发生了多少其他错误。

同时进入VBA编辑器,然后进入工具>>选项>>并确保选中Require Variable Declaration框。

也向你和所有潜伏者。请将崩溃信息发送给Microsoft。当然,虽然他们不喜欢获取崩溃信息,但在涉及Service Pack时,他们确实将崩溃视为一个非常重要的优先事项。