Access 2007 Recordset проблема - PullRequest
1 голос
/ 13 октября 2009

Я пытаюсь перенести Access 2003 (работает нормально) на Access 2007. Код, написанный на VBA, создает некоторые проблемы. Как у меня есть одна основная форма и 2 подчиненные. В основном наборе источников данных формы, установленном динамическим запросом, но на основе данных основной формы, когда я пытаюсь установить набор записей подчиненной формы, то получаю доступ к аварийному завершению 2007 года и сам закрываюсь Не могли бы вы помочь кому-нибудь выяснить, почему это происходит в Access 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 Ответ

1 голос
/ 13 октября 2009

Я буду проклят. Я узнал что-то новое о Access в этом месяце. Я никогда не понимал, что вы можете изменить набор записей такой формы.

Я никогда не использовал возобновление при ошибке Далее, как вы, вероятно, скрываете сообщение об ошибке в строке, предшествующей строке, которая дает сбой.

Тупой вопрос. Является ли strRecId числовым или строковым полем в запросе? Действительны ли цитаты?

strRecoID и cnn не затемнены в вашем коде. Я вижу, что strID недоступен, так что, скорее всего, это поле, которое вы хотели использовать. Пожалуйста, добавьте Option Explicit в качестве верхней или второй строки вашего модуля. Затем перейдите в каждый модуль и добавьте эти строки. Затем выполните компиляцию и посмотрите, сколько других ошибок происходит.

Также зайдите в Редактор VBA, затем Инструменты >> Параметры >> и убедитесь, что установлен флажок Требовать объявление переменной.

Также вам и всем скрытым. Пожалуйста, отправьте информацию о сбое в Microsoft. Хотя им, конечно же, не нравится получать информацию о сбоях, они рассматривают сбои как очень высокий приоритет, когда речь идет о пакетах обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...