Предполагая, что "txtDocumentCode" является полем в наборе записей, это:
Private Sub Form_Load()
Call Rs("tblDocumentCode")
Debug.Print Rs.txtDocumentCode(0).Value
End Sub
... следует изменить на это:
Private Sub Form_Load()
Debug.Print Rs("tblDocumentCode").Fields("txtDocumentCode").Value
End Sub
Насколько я могу судить, это должно работать без необходимости назначения набора записей, возвращаемого функцией, переменной.
Но позвольте мне сделать шаг назад и предположить, что исправление этой синтаксической ошибки заставляет задуматься над вопросом: что с ней делать, довольно нецелесообразно. Каждый раз, когда вызывается эта функция, вы открываете новое соединение, но Access работает лучше с одним соединением, которое используется снова и снова. Это верно как для серверной части Jet / ACE, так и для серверной части. Издержки, необходимые для инициализации соединения, заставят ваши формы загружаться очень медленно.
Но что еще хуже, это не программирование Access - это «беженец из среды программирования, в которой отсутствуют связанные формы / элементы управления». Вы должны использовать ODBC со связанными таблицами, а затем вы можете назначать источники записей для своих форм, не прибегая к помощи наборов записей ADO. Если вы настаиваете на том, чтобы делать то, что делаете, с тем же успехом вы можете вообще не использовать Access, потому что вы отказываетесь от 75% или более преимуществ Access и не получаете от этого никаких преимуществ в плане производительности или параллелизма. (и покупая себе мир проблем).
Конечно, теперь, когда я еще раз посмотрю, вы используете CurrentProject.Connection, и я не уверен, как это взаимодействует со связанными таблицами ODBC. На самом деле, я думаю, возможно, что это ADP, а не MDB / ACCDB, но это имеет еще меньший смысл, так как вам не нужно делать ничего дополнительного в ADP, чтобы заполнить ваши формы наборами записей ADO - это по умолчанию.
Итак, в общем, что-то не так, кроме синтаксической ошибки - то, что вы делаете, просто не имеет большого смысла.