Adicionar um valor a uma caixa de combinação associada
Normalmente, as caixas de combinação são usadas para exibir uma lista dos valores de uma tabela ou consulta. Ao responder ao evento NotInList, você pode oferecer uma maneira de o usuário adicionar valores que não estão na lista.
Normalmente, o valor exibido em uma caixa de combinação é extraído de um registro de uma tabela relacionada. Como a lista é derivada de uma tabela ou consulta, você deve fornecer uma maneira de o usuário inserir um novo registro na tabela de base. Em seguida, você pode usar o método Requery para consultar novamente a lista, que conterá o novo valor.
Quando um usuário digita um valor em uma caixa de combinação que não está na lista, o evento NotInList da caixa de combinação ocorre, desde que a propriedade LimitToList dela esteja definida como Yes ou outra coluna que não seja a vinculada seja exibida na caixa. Você pode gravar um procedimento de evento para o evento NotInList que forneça uma maneira de o usuário adicionar um novo registro à tabela que forneça os valores da lista. O procedimento de evento NotInList inclui um argumento de cadeia de caracteres chamado NewData que o Access usa para passar o texto que o usuário insere no procedimento de evento.
O procedimento de evento NotInList também tem um argumento Response que informa ao Access o que fazer após a execução do procedimento. Dependendo da ação executada no procedimento de evento, você pode definir o argumento Response como um destes valores de constantes predefinidos:
Constante | Descrição |
---|---|
acDataErrAdded | Se o procedimento de evento insere o novo valor na fonte de registros da lista ou fornece uma maneira de o usuário fazer isso, defina o argumento Response como acDataErrAdded. O Access consultará então a caixa de combinação novamente para você, adicionado o novo valor à lista. |
acDataErrDisplay | Se você não adicionar o novo valor e quiser que o Access exiba a mensagem de erro padrão, defina o argumento Resposta como acDataErrDisplay. O Access pedirá para o usuário inserir um valor válido da lista. |
acDataErrContinue | Se você exibe sua própria mensagem no procedimento de evento, defina o argumento Response como acDataErrContinue. O Access não exibirá sua mensagem de erro padrão, mas pedirá para o usuário inserir um valor no campo. Se você não quiser que o usuário selecione um valor existente na lista, poderá desfazer as alterações no campo usando o método Desfazer . |
Por exemplo, o procedimento de evento a seguir pergunta para o usuário se deve ou não adicionar um valor à lista, adiciona o valor e usa o argumento Response para pedir para o Access consultar novamente a lista:
Private Sub ShipperID_NotInList(NewData As String, Response As Integer)
Dim dbsOrders As DAO.Database
Dim rstShippers As DAO.Recordset
Dim intAnswer As Integer
On Error GoTo ErrorHandler
intAnswer = MsgBox("Add " & NewData & " to the list of shippers?", _
vbQuestion + vbYesNo)
If intAnswer = vbYes Then
' Add shipper stored in NewData argument to the Shippers table.
Set dbsOrders = CurrentDb
Set rstShippers = dbsOrders.OpenRecordset("Shippers")
rstShippers.AddNew
rstShippers!CompanyName = NewData
rstShippers.Update
Response = acDataErrAdded ' Requery the combo box list.
Else
Response = acDataErrDisplay ' Require the user to select
' an existing shipper.
End If
rstShippers.Close
dbsOrders.Close
Set rstShippers = Nothing
Set dbsOrders = Nothing
Exit Sub
ErrorHandler:
MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description
End Sub
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de