Como isso está retornando um valor em branco?
Portanto, esse código deve servir como um sistema de pesquisa simples para acessar determinados registros em um conjunto de registros. Originalmente, eu tinha que clicar no botão btnGoToID para realizar a pesquisa. Decidi torná-lo um pouco mais fácil de usar e fazê-lo para que o campo de pesquisa escutasse o botão Enter e que também realizasse a pesquisa.
O problema que eu estou enfrentando quando o código chega aostrID = Trim(Nz(Me.txtSearch.Value, ""))
o valor retornará aleatoriamente como uma string vazia, embora visualmente eu possa ver que há um valor na caixa de texto.
Não consegui restringir nenhum padrão para quando esse problema ocorrer. Neste ponto, eu nem sei como solucionar esse problema, nem as palavras a serem pesquisadas poderiam gerar resultados no Google. Tudo o que posso dizer é que parece que a alteração entre registros afetará se a pesquisa será ou não concluída.
Isso sempre funcionou até que eu coloquei o procedimento sub txtSearch_KeyPress.
'============================================================================
' txtSearch_KeyPress
'============================================================================
Private Sub txtSearch_KeyPress(KeyAscii As Integer)
'If user pressed enter
If KeyAscii = 13 Then
Call btnGoToID_Click
End If
End Sub
'============================================================================
' btnGoToID_Click
'============================================================================
' <<Purpose>>
' Allow the user to search for a specific ID
'============================================================================
Private Sub btnGoToID_Click()
On Error GoTo Err_Handler
Dim rs As Recordset
Dim strID As String
Set rs = Me.RecordsetClone
strID = Trim(Nz(Me.txtSearch.Value, ""))
If (strID <> "") Then
'Go to the ID
rs.FindFirst "ID = '" & strID & "'"
If rs.NoMatch Then
MsgBox "ID does not exist"
Else
'If we have a match, set the record as the current record
Me.Bookmark = rs.Bookmark
End If
Else
MsgBox "Please enter a valid ID.", vbOKOnly, "Invalid ID"
End If
Exit_Handler:
On Error Resume Next
Me.txtSearch.Value = ""
rs.Close
Set rs = Nothing
Exit Sub
Err_Handler:
Call LogError(Err.Number, Err.Description, "txtSearch on " & Me.Name)
Resume Exit_Handler
End Sub
Após a conversa nos comentários, reduzi a questão para ser muito mais simples. Isso gera uma mensagem de erro "Uso inválido de nulo", mesmo após vários caracteres no campo de texto. Por que isso aconteceria e o que posso fazer para obter os valores na caixa de texto?
'============================================================================
' txtUnitNoToSearch_KeyPress
'============================================================================
Private Sub txtUnitNoToSearch_KeyPress(KeyAscii As Integer)
MsgBox Me.txtUnitNoToSearch
End Sub