Dicas do OsmarJr

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

Contato | Copyright©Osmar José Correia Júnior | 24-Nov-2005 18:23