Boa tarde senhores,
Tenho uma tabela com campo multivalor, a qual não posso usar para fazer classificação ou filtragem.
Meu objetivo, então, é passar o valor deste campo (pelo que percebi, possui propriedade semelhante a uma array) para um novo campo desvinculado, com tipo de destino de string.
Para isso, criei uma function para ver um array e trazer o nome dos funcionários correspondentes. Funcionou perfeitamente na janela de verificação imediata, mas estou com problemas ao usar no form.
Criei o novo campo desvinculado e tentei inserir na fonte de controle dele a função, com o construtor de expressões, usando o seguinte: ArrayToText([Port_Funcionario])
Tentei também usando [Port_Funcionario.Value], com e sem aspas. De nenhum jeito funcionou. O erro que dá ao usar sem aspas é de tipos incompatíveis e ao depurar ele destaca a linha do "ReDim newArray"...
Tentei colocar no evento ao abrir do form:
Me.Texto62 = ArrayToText(Me.Port_Funcionario.Value), mas funciona apenas para a primeira linha. Todas as outras seguem com a mesma informação da primeira linha.
Em suma, a function funciona perfeitamente na janela de verificação e em código VBA, mas não diretamente no construtor de expressões. Podem avaliar meu código e me ajuda a fazer funcionar adequadamente?
Segue o código:
Tenho uma tabela com campo multivalor, a qual não posso usar para fazer classificação ou filtragem.
Meu objetivo, então, é passar o valor deste campo (pelo que percebi, possui propriedade semelhante a uma array) para um novo campo desvinculado, com tipo de destino de string.
Para isso, criei uma function para ver um array e trazer o nome dos funcionários correspondentes. Funcionou perfeitamente na janela de verificação imediata, mas estou com problemas ao usar no form.
Criei o novo campo desvinculado e tentei inserir na fonte de controle dele a função, com o construtor de expressões, usando o seguinte: ArrayToText([Port_Funcionario])
Tentei também usando [Port_Funcionario.Value], com e sem aspas. De nenhum jeito funcionou. O erro que dá ao usar sem aspas é de tipos incompatíveis e ao depurar ele destaca a linha do "ReDim newArray"...
Tentei colocar no evento ao abrir do form:
Me.Texto62 = ArrayToText(Me.Port_Funcionario.Value), mas funciona apenas para a primeira linha. Todas as outras seguem com a mesma informação da primeira linha.
Em suma, a function funciona perfeitamente na janela de verificação e em código VBA, mas não diretamente no construtor de expressões. Podem avaliar meu código e me ajuda a fazer funcionar adequadamente?
Segue o código:
- Código:
Public Function ArrayToText(NomeArray As Variant)
'Função elaborada por Alec R. Müller
'Use para buscar o nome dos funcionários contidos no array e retornar o valor como texto.
Dim FuncNome As String
Dim i As Integer
Dim myArray As Variant
If Not IsNull(NomeArray) Then
Dim newArray() As String
ReDim newArray(UBound(NomeArray)) 'Foi necessário redimensionar a variável. Sem o tamanho declarado, dá erro de fora de subscrição.
'Se informar o tamanho da array diretamente na declaração Dim dá erro solicitando um valor constante.
For i = LBound(NomeArray) To UBound(NomeArray)
newArray(i) = DLookup("Func_Nome", "Funcionario", "Func_Cod = " & NomeArray(i))
If i = 0 Then
FuncNome = newArray(i)
Else
FuncNome = a & " ; " & newArray(i)
End If
Next i
ArrayToText = FuncNome
End If
End Function