Elber Carretoni Postado Maio 30, 2007 Denunciar Share Postado Maio 30, 2007 salve salve rapaziada...Galera, gostaria de, por meio de vba, atribuir, uma consulta para um objeto não acoplado listbox...é possível? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MrMALJ Postado Maio 30, 2007 Denunciar Share Postado Maio 30, 2007 Fera dei uma pesquisada e achei essa função que preenche essa lista, acho que se você adaptar pode usar pra isso que você quer.Function PreencheLista(ctl As Control, varID As Variant, _ lngRow As Long, lngCol As Long, intCode As Integer) As Variant ' Argumentos: ' ctl - refere-se à listbox ou combobox sendo preenchida; ' varID - valor único que identifica o controle sendo preenchido. ' lngRow - nº da linha que está sendo preenchida (começa em zero); ' lngCol - nº da coluna que está sendo preenchida (começa em zero); e ' intCode - é a "pergunta" que o Access faz à função. O valor de intCode ' indica qual ação será executada pela função. On Error GoTo PreencheLista_Err Dim varRet As Variant ' recebe o valor de retorno da função (Variant). Dim I As Integer ' serve de contador. Static varNome() As Variant 'cria uma matriz dinâmica que guarda valores. Static intReg As Integer Select Case intCode Case acLBInitialize ' intCode = 0 - inicializa o controle. Dim Rs1 As Recordset Set Rs1 = CurrentDb.OpenRecordset("Clientes", dbOpenSnapshot) With Rs1 If Not .EOF Then .MoveLast 'necessário para RecordCount. intReg = .RecordCount 'Redimensiona a matriz conforme nº de registros de Rs1. ReDim varNome(intReg, 2) '3 dimensões. .MoveFirst For I = 0 To intReg - 1 varNome(I, 0) = !CódigoDoCliente varNome(I, 1) = !NomeDaEmpresa varNome(I, 2) = !Cidade .MoveNext Next I End With Set Rs1 = Nothing 'libera memória. varRet = True Case acLBOpen ' intCode = 1 - abre. varRet = Timer ' Gera valor exclusivo baseado na função Timer. Case 2 ' intCode = 2 - este código não é documentado. Case acLBGetRowCount ' intCode = 3 - obtém nº de linhas. varRet = -1 ' valor desconhecido. O Access irá descobrir o nº de linhas. Case acLBGetColumnCount ' intCode = 4 - obtém nº de colunas. 'Podemos definir na folha de propriedades do controle 'ou especificar um valor aqui. varRet = 3 Case acLBGetColumnWidth ' intCode = 5 - obtém a largura da coluna. 'Podemos definir na folha de propriedades do controle. 'Especifique um valor aqui ou pule esta opção. varRet = -1 ' Utiliza a largura definida em propriedades. Case acLBGetValue ' intCode = 6 - obtém os dados para o controle. varRet = varNome(lngRow, lngCol) Case acLBGetFormat ' intCode = 7 - formato a ser usado. 'Pule esta opção ou defina varRet = -1 para o valor padrão. Case acLBClose ' intCode = 8 - não usado. 'Seu uso não é documentado. Case acLBEnd ' intCode = 9 - Fim. 'Não retorna nada. Usado quando você fecha o form ou dá um 'Requery no controle. Aqui você poderá colocar código para 'liberar memória (limpar variáveis etc). Erase varNome() End Select PreencheLista = varRet Exit Function PreencheLista_Err: MsgBox "Erro " & Err.Number & vbCrLf & Err.Description, _ vbExclamation, "Função: PreencheLista"End FunctionO nome da função é inserido na propriedade Tipo de origem da linha (RowSourceType) da combo box sem ser precedido por um sinal de igualdade (=) e sem terminar com parênteses. Escreva assim: PreencheListaFonte: JR´s Access FAQ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Elber Carretoni Postado Maio 30, 2007 Autor Denunciar Share Postado Maio 30, 2007 vlw a força mais uma vez mr malj!vou estar estudando esta função e caso encontre alguma dúvida peço novamente a sua ajuda!Abração fera! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Elber Carretoni
salve salve rapaziada...
Galera, gostaria de, por meio de vba, atribuir, uma consulta para um objeto não acoplado listbox...
é possível?
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.