• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

modem

[Resolvido] Juntar vários records numa string

4 mensagens neste tópico

Olá pessoal,

preciso de fazer uma coisa estranha em Access:

Tenho uma query que me dá uma tabela deste tipo:

Cliente | Valor

A          | 2

A          | 6

A          | 15

B          | 4

C          | 6

C          | 8

e pretendo fazer uma query que agarre neste resultado e me dê uma tabela tipo:

Cliente | Valores

A          | 2;6;15

B          | 4

C          | 6;8

ou seja, que me transforme os diversos valores numa espécie de string...

Como é que posso fazer isto? Já estive a ver as funções existentes mas não encontrei nenhuma que me desse algo como isto. Suponho que tenha de fazer uma função em VBA, mas não é o meu forte.

Alguém pode ajudar?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pessoalmente não conheco nenhum query que faça isso. Só em VBA.

Está a usar que versão e queres colocar essa informação noutra tabela ou para visualizar (lista, relatório, etc) ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá,

estou a usar a versão 2003 e pretendo obter o resultado em query ou tabela, que depois vai ser inserida numa folha excel de forma automática usando o import external data.

A ideia seria criar uma função que fizesse isso e que pude-se ser incluida na query como as funções já existentes do Access. Mas como nunca fiz nenhuma coisa assim nem sei por onde começar, nem que tipo de argumentos passar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já consegui! Estou maravilhado comigo mesmo :D

Criei uma função muito simples:

Dim ss As String

Dim Last_Client As Integer

Function ConvArray(Client As Integer, obj As String) As String

    If Last_Client = Client Then

        ss = ss & obj & ";"

        Last_Client = Client

    Else

        ss = obj & ";"

        Last_Client = Client

    End If

    ConvArray = ss

End Function

depois é só usar na query ConvArray(Cliente;valor) e definir o total para Max.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora