Meerdere records uit 1 veld samenvoegen in een onafhankelijk tekstvak

Status
Niet open voor verdere reacties.

Saiga

Nieuwe gebruiker
Lid geworden
17 apr 2012
Berichten
3
Hallo

Ik heb een query in een database, deze zoekt me alle emailadressen. Deze query heb ik omgegoten tot een formulier in tabelvorm.
Ik ben op zoek naar een manier om alle records in één onafhankelijk tekstvak te krijgen.

Bv:

Emailadressen;
abc@hotmail.com
abc@yahoo.com
abc@gmail.com

--> Tekst31: abc@hotmail.com, abc@hayoo.com, abc@gmail.com

Is dit mogelijk op een eenvoudige manier? Eventueel via sql of vba?

Vriendelijke groeten!
Steven
 
Afhankelijk hoe je de adressen opslaat, maar anders werkt dit:

textvak31.text = join (adressenlijst , ", ")

"addressenlijst" en (juiste doel natuurlijk) vervangen met de array die je emailadressen bevat.
 
Hey Wampier, bedankt om zo snel te reageren.

Ik heb de joinfunctie ingevoerd in vba (bij het laden van het formulier)
Wanneer ik dit formulier nu open komt er een foutmelding; fout 13; typen komen niet met elkaar overeen.

Enig idee wat ik mis doe?

Groeten,
Steven
 
Excel technieken werken niet in Access. Ik weet niet precies hoe je die functie gemaakt hebt, maar ik zou zeggen: laat 'm eens zien!
 
Zonder voorbeeld? nee ;) maar join verwacht een "array", wat probeer je nu mee te sturen?
 
Excel technieken werken niet in Access.

Ik respecteer absoluut dat je een grotere kennis heb van access, maar join is gewoon een valide VBA constructie die werkt in access en die ik zelf meerdere keren heb toegepast om een dataset aan elkaar te plakken tot een string. Zolang je input maar kunt parsen tot een array.
 
Ik heb een macro. Deze gaat een object verzenden. Ik een wil "aan" alle email adressen uit een query verzenden.
Ik zoek dus eigenlijk een manier om alle records uit een query te verzamelen in één onafhankelijk tekstvak.
Met dit onafhankelijk tekstvlak kan ik invullen in de macro bij "aan"
 
@wampier: ik reageer op de overduidelijk op Excel geënte oplossing die je aanbood in je eerste post. Op die manier werkt het wel in Excel, maar echt niet in Access. Al laat ik mij graag van het tegendeel overtuigen (liefst uiteraard met een voorbeeldje) want ik leer ook graag bij!
@TS: je geeft niet veel meer dan een iets bredere omschrijving van je probleem, maar daar hebben we nog steeds niks aan. Via een macro gaat het denk ik zowiezo niet lukken, je moet een procedure in VBA maken, waarin je bijvoorbeeld een Recordset opent en de emailadressen daarin verzamelt in een variabele. Wat op zich simpel te doen is.
 
Het is beetje laat nu voor een gedetailleerd voorbeeld, maar je kunt een recordset via getrows omzetten in een array. Dat array is vervolgens te manipuleren net zoals alle andere arrays in vba.

Basiscode vba voor een recordset ophalen (als ik tijd heb zal ik het aanpassen naar het specifieke probleem, heb nu geen toegang tot access)

Code:
Sub test()
Dim dbase As Database
Dim rcst As Recordset
Dim sSQL As String
Dim mails As String

Set dbase = CurrentDb
sSQL = "select emails from mijntabel"
rcst = dbase.OpenRecordset(sSQL)
rcst.MoveFirst

If Not RecordSt.EOF Then
    mails = mails & RecordSt.Fields(0).Value
    RecordSt.MoveNext
End If
While Not RecordSt.EOF
    mails = mails & ", " & RecordSt.Fields(0).Value
    RecordSt.MoveNext
Wend
MsgBox (mails)
End Sub

De sql moet natuurlijk aangepast worden naar de juiste namen.
 
Laatst bewerkt:
Dat weet ik, maar het probleem met Join is dat je alleen eendimensionale arrays kunt samenvoegen met Join, en in Access krijg je een tweedimensionale array als je GetRows gebruikt. Dit kun je uiteraard wel weer uitlezen, maar dan kun je net zo goed vanuit de Recordset werken.
 
Daar Saiga vermelde dat hij al een tabel had, ging ik er vanuit dat hij een enkele kolom in een tabel wilde joinen. Deze kan wel in een enkele array via join.

Ik heb mijn post aangepast om het puur via VBA te doen. Dit kan onder een enkele knop zonder forms of procedures. Ik ben niet echt een access gebruiker, maar ik haal wel regelmatig data op om het in een andere database te voegen. Als mijn accent veel op VBA ligt en niet op interne access methoden kun je dat daar aan wijten :P
 
Je voorbeeldje is correct; je opmerking dat je een enkele kolom wel in een enkele array kan zetten echter niet; Access maakt, als je een array vult vanuit een RecordSet met GetRows, per definitie een meervoudige array. De array bestaat dan bij één kolom uit de variabelen arrRecordArray(0,1), arrRecordArray(0,3) .. arrRecordArray(0,100) etc. Bij twee kolommen wordt dat dan: arrRecordArray(0,1), arrRecordArray(0,3), arrRecordArray(0,3) en arrRecordArray(1,1), arrRecordArray(1,3) .. arrRecordArray(1,100) etc.
En zoals gezegd (tenzij je een methode weet om dat te omzeilen) kun je met JOIN slechts een een-dimensionale array inlezen.

Uit de Help:
Join(bronmatrix[, scheidingsteken])
bronmatrix Vereist. Een-dimensionale matrix met tekenreeksen die moeten worden samengevoegd.
 
Klopt maar ik bedoelde meer:

Forms!emailform!emails.Column(0)

Afhankelijk van hoe de form is opgezet is natuurlijk. Als je al een tabel op het form hebt kun je die data benaderen.
 
En daar is dit een voorbeeldje van.... Op het formulier een keuzelijst met adressen, en een knop om de adreslijst samen te stellen.
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan