Почему при попытке чтения поля набора записей не определяется подпрограмма или функция вызова vba? - PullRequest
1 голос
/ 14 июля 2020

Как сказано в заголовке, я получаю сообщение об ошибке «Подложка или функция не определена» при попытке компиляции кода. Он ломается на RS_Logistics! [Получено]. Это поле действительно существует в наборе записей, который проверяется просмотром таблицы IM_Logistics и проверкой часов, которые я установил для объекта, и подтверждением существования элемента поля «Получено». Это логическое поле.

Option Compare Database
Option Explicit

Private ROID As Long
Private RS As Recordset
Private RS_PartDetail As Recordset
Private RS_Logistics As Recordset

Public Sub Load_ID(RepOrderID As Long)
Dim strSQL As String

strSQL = "SELECT TOP 1 * FROM IM_ReplenishmentOrders WHERE ReplenishmentOrderID = " & RepOrderID
Set RS = CurrentDb.OpenRecordset(strSQL)
If RS.RecordCount > 0 Then
ROID = RepOrderID

strSQL = "SELECT TOP 1 * FROM MT_PartDetail Where MT_PartDetail_ID = " & RS!MT_PartDetail_ID
Set RS_PartDetail = CurrentDb.OpenRecordset(strSQL)

strSQL = "SELECT * FROM IM_Logistics Where ReplenishmentOrderID = " & ROID
Set RS_Logistics = CurrentDb.OpenRecordset(strSQL)

Else
ROID = 0
End If
End Sub

Public Property Get ETA() As Date 'Derived from Logistics Records
On Error GoTo fail
RS_Logistics.MoveFirst
While Not RS_Logistics.EOF
If ((RS_Logistics![Received] = False) And Nz(ETA, DateAdd("Y", 10, today())) > RS_Logistics![Expected Date]) Then
ETA = RS_Logistics![Expected Date]
End If
RS_Logistics.MoveNext
Wend
fail:
End Property

Я работаю с наборами записей в этой базе данных более года. Понятия не имею, почему это появляется сейчас.

Ответы [ 2 ]

2 голосов
/ 15 июля 2020

2 предложения, чтобы проще отловить подобные вещи:

  • Установите «явную опцию» для всех ваших модулей (и / ir в настройках, чтобы не делать это вручную). Это говорило бы вам, что today () является неопределенной переменной вместо того, чтобы искать подфункцию с таким именем
  • Научитесь следить за сегодняшним днем ​​(), оставаясь как today () и не исправляясь на Today ( ), что бы сделал редактор, если бы Today () была действительной подфункцией.
2 голосов
/ 14 июля 2020

Сообщение об ошибке не имеет ничего общего с набором записей или его полями. «Подложка или функция не определена» - это потому, что Today () не является функцией Access VBA. Используйте Date ().

Кроме того, для Access VBA DateAdd требуется "yyyy" в качестве интервала года.

...