21. december 2005 - 17:36Der er
17 kommentarer og 1 løsning
Kombinere værdier i en felt
Hej, Er der nogen som ved om man kan kombinere forskellige værdier i en felt som en record per nøgle eller ej? F.eks. en tabel har to felter, Kundenr. og Kundetype hvor en kunde kan have flere typer og værdierne er: Kundenr. Kundetype 2222 A 2222 B 2222 C
Jeg vil gerne kombinere værdier sådan, Kundenr. Kundetype 2222 A, B, C
You will need to make a query which selects distinct KundeNr (only one record for each kundenr). Then you need to make a function in a module which you call from the query. You need to pass the kundeNr as a arguemnt to the function, and theh function is to return a string.
In the function you need to open a recordset which selects all KundeType for the current KundeNr.
Loop through the recordset and concatenate each KundeType to a string with a ","
When finished looping you need to remove the last "," from the string. Then return the string to the query.
Terry > Du har beskrevet løsningen, men eg måtte lige forsøge at lave det. Jeg kan ikke umiddelbart se andre måder at gøre det på, men hvis det er store tabeller tror jeg ikke det kører specielt hurtigt.
Først funktionen: ---------- Function Concat(kundenr As Long) As String Dim db As DAO.Database Dim rs As DAO.Recordset Dim sTyper As String Set db = CurrentDb Set rs = db.OpenRecordset("SELECT kundetype FROM table1 WHERE kundenr=" & kundenr) Do While Not rs.EOF sTyper = sTyper & rs!kundetype & ", " rs.MoveNext Loop Concat = Left(sTyper, Len(sTyper) - 2) Debug.Print Concat rs.Close Set rs = Nothing Set db = Nothing End Function ----------
Og så skal den bruges således i en forespørgsel:
SELECT kundenr, concat([kundenr]) AS eks FROM Table1 GROUP BY kundenr, concat([kundenr])
Jesper, når jeg køre din løsning så stopper module på "db As DAO.Database" med fejl medl. "Compile error: User-defined type not defined". Hvad gøre jeg forkert?
Nu kører det fint, tusind tak Jesper. Bare et spørgsmål til: det kørte første efter jeg har lavet "Kundenr" felt om fra tekst til tal. Er denne løsning kun til Tal type felter?
Tak for point. Godt det virker. Hvis dit kundenr altid er et tal bliver der nok ingen problemer, men hvis kundenr kan være f.eks. "A2222" eller lignende skal dette nok ændres:
Function Concat(kundenr As Long) As String
til
Function Concat(kundenr As string) As String
Det burde man nok gøre under alle omstændigheder, da du nu har sat kundenr til at være tekst i tabellen.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.