Ошибка MS Access 2016 VBA «Недопустимая операция» Показывает ошибку с первым оператором IF во втором СЛУЧАЕ

#vba #ms-access-2016

#vba #ms-access-2016

Вопрос:

 Option Compare Database
Option Explicit
Public Function Day1DU(InvFullBP As Single) As Single

Dim Current_Frm As Form
Set Current_Frm = Screen.ActiveForm
Dim CalcDuAdjs As Double, HBCO As Double, HBP As Double, AMRF As Double
  

Я публикую только второй раз, поэтому, пожалуйста, будьте вежливы.
Мне нужно посмотреть, есть ли значение в поле FundDate в SoldInfo_Tbl. Если поле пустое, тогда нам нужно предположить 9/1/2020. Если значение не равно null, то для запуска кода оно должно быть больше 8/31/2020.
Я никогда не искал значение таким образом. Я всегда ссылался на текущую форму.
Возникли проблемы с DAO.База данных

НЕБЛАГОПРИЯТНАЯ КОМИССИЯ ЗА РЕФИНАНСИРОВАНИЕ НА РЫНКЕ

 Dim dbMyDB As DAO.Database
Dim tblSoldInfo As DAO.TableDef
Dim fldMyField As DAO.Field
Dim rs As DAO.Recordset

Set dbMyDB = CurrentDb
Set tblSoldInfo = dbMyDB![SoldInfo_Tbl]
Set fldMyField = tblSoldInfo![FundDate]
Set rs = CurrentDb.OpenRecordset("SoldInfo_Tbl", dbOpenTable)
  

НЕБЛАГОПРИЯТНАЯ КОМИССИЯ ЗА РЕФИНАНСИРОВАНИЕ НА РЫНКЕ

 Select Case Val(Current_Frm!InvestorID_Cbo.Column(0))
Case 2, 4, 15
    If Current_Frm!RateSheetDate_Txt > #8/12/2020# Then
      If Current_Frm!LoanType_Cbo <> "PURCHASE" And (Current_Frm!Plan_Cbo = "10" Or Current_Frm!Plan_Cbo = "20" Or Current_Frm!Plan_Cbo = "11" Or Current_Frm!Plan_Cbo = "55" Or Current_Frm!Plan_Cbo = "71" Or Current_Frm!Plan_Cbo = "101" Or Current_Frm!Plan_Cbo = "12" Or Current_Frm!Plan_Cbo = "10H" Or Current_Frm!Plan_Cbo = "20H" Or Current_Frm!Plan_Cbo = "55H" Or Current_Frm!Plan_Cbo = "71H" Or Current_Frm!Plan_Cbo = "101H" Or Current_Frm!Plan_Cbo = "11H" Or Current_Frm!Plan_Cbo = "12H") Then
        AMRF = 0.5
      Else
        AMRF = 0
      End If
    End If
Case 16, 17
  

Моя проблема ниже, vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

     If Nz(rs![tblSoldInfo]![fldMyField], #9/1/2020#) > #8/31/2020# Then
      If Current_Frm!LoanType_Cbo <> "PURCHASE" And (Current_Frm!Plan_Cbo = "10" Or Current_Frm!Plan_Cbo = "20" Or Current_Frm!Plan_Cbo = "11" Or Current_Frm!Plan_Cbo = "12" Or Current_Frm!Plan_Cbo = "10H" Or Current_Frm!Plan_Cbo = "20H" Or Current_Frm!Plan_Cbo = "11H" Or Current_Frm!Plan_Cbo = "12H") Then
        AMRF = 0.5
      Else
        AMRF = 0
      End If
    End If
End Select
  

ПРЕКРАТИТЬ НЕБЛАГОПРИЯТНУЮ КОМИССИЮ ЗА рефинансирование НА РЫНКЕ

Комментарии:

1. rs![tblSoldInfo]![fldMyField] неверно. Вы обращаетесь к набору записей, поэтому вам нужно только указать имя столбца, например rs![FieldName] .

2. Кроме того, вам не нужно объявлять TableDef и поле, достаточно набора записей. Если вам нужно обновить, откройте as dbOpenDynaset и обновите.

3. Спасибо @Kostas K. за помощь. У меня возникли проблемы, поэтому я продолжал добавлять больше. Я немного сошел с ума от Google.

Ответ №1:

Я, наконец, понял это. У меня разделенная база данных ms-access. Если база данных разделена, таблицы не являются локальными, и я не могу использовать OpenRecordset («SoldInfo_Tbl», dbOpenTable), я должен использовать dbOpenDynaset.