Предмет не может быть найден в коллекции до запрошенного имени или порядкового номера - PullRequest
0 голосов
/ 10 ноября 2019

При нажатии клиента из таблицы данных вся информация о клиентах загружается в правой части формы, и все кажется, что все идет хорошо. [https://i.stack.imgur.com/Mv5ZL.png][1]

и всякий раз, когда я нажимаю кнопку добавления платежаКнопка, это откроет форму оплаты. [https://i.stack.imgur.com/DmznP.png][2]

, но всякий раз, когда я пытаюсь выбрать другого клиента, он выдает ошибку времени выполнения «3265». и когда я нажимал кнопку отладки, поля, которые нужно было заполнить, казалось, содержали всю необходимую им информацию. Почему эта ошибка появляется? [https://i.stack.imgur.com/YuLg5.png][3]

Вот мой код при загрузке всех клиентов

Private Sub Form_Load()

Set Connect = New Class1
Set rx = New ADODB.Recordset

rx.Open "SELECT * FROM allclients ORDER by dateCreated ASC", con, 3, 3
lblLNumberRecords.Caption = Format(rx.RecordCount, "###,###,###.##")
Set DatCUSTOMERS.DataSource = rx

Me.Show

clearfields
End Sub

, а вот мой код при нажатии на клиента:

Private Sub DatCUSTOMERS_RowColChange(LastRow As Variant, ByVal LastCol As Integer)

    Unload frmPaymentRecur

    lblID = rx.Fields("id")
    txtClientID = rx.Fields("clientCode")
    txtFirstName = rx.Fields("fname")
    txtLastName = rx.Fields("lname")
    txtMname = rx.Fields("mname")
    txtExtension = rx.Fields("extName")
    txtPin = rx.Fields("pinNo")
    txtDesignation = rx.Fields("designation")
    txtContactNo = rx.Fields("contactNo")
    txtAddress = rx.Fields("address")
    txtAge = rx.Fields("Age")
    txtSalary = rx.Fields("salary")
    cmbAssociation.Text = rx.Fields("fieldTypeTitle")
    cmbChoices.Text = rx.Fields("fieldNameTitle")
    cmdEdit.Enabled = True
    cmdAddLoan.Enabled = True
    cmdPayments.Enabled = True
    End Sub

вот мойкод при нажатии кнопки «Добавить платеж»:

Private Sub cmdPayments_Click()
Dim flagClients, dateFlag, loanFlag As Integer
flagClients = 1
dateFlag = 1
loanFlag = 1

frmPaymentRecur.lbldateFlag.Caption = dateFlag
frmPaymentRecur.lblLoanFlag.Caption = loanFlag
frmPaymentRecur.txtClientID = rx.Fields("clientCode")
frmPaymentRecur.txtFolderNo = rx.Fields("folderCode")
frmPaymentRecur.txtFullName = rx.Fields("Name")
frmPaymentRecur.txtAssociation = rx.Fields("fieldNameTitle")
frmPaymentRecur.txtSalary = rx.Fields("salary")
frmPaymentRecur.CmbSelectPaymentType.Text = "All Loans"
frmPaymentRecur.lblFlag = flagClients

If rx.State = 1 Then rx.Close

rx.Open "SELECT DISTINCT(`Loan Type`) FROM paymentview WHERE `Client Code` = '" & Trim$(txtClientID.Caption) & "'", con, 3, 3

With rx
    Do While Not .EOF
        frmPaymentRecur.CmbSelectPaymentType.AddItem ![Loan Type]
        .MoveNext
    Loop
    .Close
End With

frmPaymentRecur.Show

End Sub

1 Ответ

0 голосов
/ 10 ноября 2019

В конце кода добавления платежа вы закрываете набор записей rx. Он будет пуст, когда вы попытаетесь обновить свои элементы управления.

Вы также заполнили набор записей данными из другой таблицы, paymentview, где id, вероятно, не существует.

Вам следует создать отдельный набор записей для обработки вашего кода платежа, а не использовать набор записей rx.

...