Bom dia,
Tenho um código retirado de um forum que concatena numa linha de uma consulta todos os registos registados num determinado campo de uma tabela/consulta. Os valores são separados por ";" ou outro símbolo que queiramos, mas põe também a seguir ao último.
Por exemplo:
João; Paulo; Rui; António;
O que pretendia era que o último ";" não aparecesse...
Fica aqui o código
Tenho um código retirado de um forum que concatena numa linha de uma consulta todos os registos registados num determinado campo de uma tabela/consulta. Os valores são separados por ";" ou outro símbolo que queiramos, mas põe também a seguir ao último.
Por exemplo:
João; Paulo; Rui; António;
O que pretendia era que o último ";" não aparecesse...
Fica aqui o código
- Código:
'************ Início do Código **********
' Este código foi escrito originalmente por Dev Hashish
' Não pode ser alterado ou distribuído
' exceto como parte de um aplicativo.
' Use-o à vontade em qualquer aplicativo
' desde que esta nota de Copyright não seja alterada.
'
' Código cortesia de
' Dev Hashish (http://www.mvps.org/access/)
'
' Tradução e adaptação
' OsmarJr (jrosmar@yahoo.com.br)
'=========================================
Function fConcatFilho(strTabelaFilho As String, _
strNomeID As String, _
strCampoConcat As String, _
strTipoID As String, _
varValorID As Variant) _
As String
' Devolve o conteúdo de um campo da tabela Muitos de um
' relacionamento 1:M, concatenado e separados por ponto-e-vírgula
'
' Exemplo de uso:
' ?fConcatFilho("Detalhes do Pedido", "NúmeroDoPedido", "Quantidade", _
' "Long", 10255)
' Onde
'
' Detalhes do Pedido = Tabela Muitos
' NúmeroDoPedido = Chave primária da tabela Um
' Quantidade = Nome do campo a ser concatenado
' Long = Tipo de dados da chave primária
' 10255 = Número do pedido que contém os detalhes
'
Dim db As Database
Dim Rs As Recordset
Dim varConcat As Variant
Dim strCriteria As String
Dim strSQL As String
On Error GoTo Err_fConcatFilho
varConcat = Null
Set db = CurrentDb
strSQL = "SELECT [" & strCampoConcat & "] FROM [" & strTabelaFilho & "]"
strSQL = strSQL & " WHERE "
Select Case strTipoID
Case "String":
strSQL = strSQL & "[" & strNomeID & "] = '" & varValorID & "'"
Case "Long", "Integer", "Double": 'Autonumeração é tipo Inteiro Longo
strSQL = strSQL & "[" & strNomeID & "] = " & varValorID
Case Else
GoTo Err_fConcatFilho
End Select
Set Rs = db.OpenRecordset(strSQL, dbOpenSnapshot)
' Precisamos ter certeza que os registros Sub existem
With Rs
If .RecordCount <> 0 Then
' Começa a concatenar os registros
Do While Not Rs.EOF
If Rs.RecordCount > 0 Then
varConcat = varConcat & Rs(strCampoConcat) & "; "
.MoveNext
Else
varConcat = varConcat & Rs(strCampoConcat) & " "
.MoveNext
End If
Loop
End If
End With
' Pronto… Já temos a string concatenada
' Agora limpamos o; no final da string
fConcatFilho = Left(varConcat, Len(varConcat) - 1)
Exit_fConcatFilho:
Set Rs = Nothing
Set db = Nothing
Exit Function
Err_fConcatFilho:
Resume Exit_fConcatFilho
End Function
'************ Final do Código **********