|
Usando caixas de listagem multi-seleção como parâmetro de consultas |
Tenho uma caixa de listagem multi-seleção no meu formulário. Quero passar os ítens selecionados para uma consulta como parâmetro. Como fazer?Autor: Dev Hashish |
|
Diferentemente de controles Caixa de Listagem simples, que podem ser referenciados como parâmetros por uma consulta, caixas de listagem multi-seleção não podem ser usadas diretamente. Isso porque referenciar a caixa de listagem (Forms!MeuForm!MinhaCaixaDeListagem) de qualquer lugar NÃO faz a concatenação dos itens selecionados. O critério deve ser construído manualmente. Nota: A consulta parametrizada ainda pode ser usada, desde que toda a cláusula WHERE seja passada a ela via código como parâmetro. (Fazer com que a consulta referencie um controle oculto, ao qual é passada toda a cláusula WHERE, seguindo a lógica abaixo). '******************** Início do Código ************************
Dim frm As Form, ctl As Control
Dim varItem As Variant
Dim strSQL As String
Set frm = Form!frmMyForm
Set ctl = frm!lbMultiSelectListbox
strSQL = "SELECT * FROM Funcionarios WHERE [FuncID]="
'Assumindo que [FuncID] é um inteiro e o campo vinculado
'Enumera os itens selecionados e
'concatena em uma string
For Each varItem In ctl.ItemsSelected
strSQL = strSQL & ctl.ItemData(varItem) & " OR [FuncID]="
Next varItem
'Limpa o final da string SQL
strSQL=left$(strSQL,len(strSQL)-12))
'******************** Final do código ************************
|