У меня есть форма для ввода информации об адресе в базу данных доступа. Страница имеет вид списка, который обновляется по мере записи информации в каждое из текстовых полей. Каждая строка имеет отдельное текстовое поле
Я обнаружил, что если информация вводится в одно из текстовых полей, удаляется (оставляя значение в значении "") и затем вводится повторно, возникает ошибка выполнения 5 в следующей строке:
key = CInt (Right (lstvw_AllAddresses.SelectedItem.key, Len (lstvw_AllAddresses.SelectedItem.key) - 3))
После тестирования несколько раз, я смог обнаружить, что эта ошибка будет происходить ТОЛЬКО в строке 2-5, а не в строке 1 (я могу опубликовать это здесь также, если необходимо) и ТОЛЬКО, если другие поля "". Я не уверен, почему это так, но это может быть связано с добавлением строк в просмотр списка?
Private Sub txtbx_Line2_Change()
Dim rst As DAO.Recordset
Dim key, startIndex As Integer
Dim addLine, removeLine As Boolean
If lstvw_AllAddresses.SelectedItem Is Nothing Then
Exit Sub
End If
key = CInt(Right(lstvw_AllAddresses.SelectedItem.key, Len(lstvw_AllAddresses.SelectedItem.key) - 3)) 'This is where the error is thrown
Set rst = CurrentDb.OpenRecordset("SELECT [Line2]" & _
" FROM [tbl_Addresses]" & _
" WHERE [AddressID] = " & key)
addLine = False
removeLine = False
If IsNull(rst![Line2]) Or rst![Line2] = "" Then 'line is blank, so we're adding a line
addLine = True
ElseIf txtbx_Line2.Text = "" Then
removeLine = True
End If
rst.Edit
rst![Line2] = txtbx_Line2.Text
rst.Update
'change the text in the listview
If addLine Then
startIndex = lstvw_AllAddresses.ListItems("ln1" & key).index 'assume start index = Line1
lstvw_AllAddresses.ListItems.Add startIndex + 2 - 1, "ln2" & key
lstvw_AllAddresses.ListItems("ln2" & key).Selected = True
ElseIf removeLine Then
lstvw_AllAddresses.ListItems.Remove "ln2" & key
End If
If Not removeLine Then
lstvw_AllAddresses.ListItems("ln2" & key).Text = rst![Line2]
End If
Close_Exit:
rst.Close
Good_Exit:
Exit Sub
End Sub
Что является причиной этой ошибки и как ее исправить?