|
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 ************************ |