Avatar billede Basse25 Novice
07. marts 2011 - 13:04 Der er 12 kommentarer og
1 løsning

Fjern overflødige kommaer i en sammenkædning af felter

Hej

Jeg har sammenkædet forskellige felter i en forespørgsel i Access på følgende måde: Udtryk1: [EO] & "," & [EK] & "," & [EØ]. Det er ikke i alle rækker, hvor der er data i de forskellige kolonner, og så bliver der sat et dobbeltkomma (eller flere) - Hvordan kommer jeg uden om det?
Avatar billede hugopedersen Nybegynder
07. marts 2011 - 15:08 #1
Det må kunne gøres med IIF

F.eks.
Udtryk1: IIf(nz([EO];0)<>"";[EO];"") & IIf(nz([EK];"")<>""; ", " & [EK];"")& IIf(nz([EØ];"")<>""; ", " & [EØ];"")

Jeg tror dog ikke den funker hvis EO = ""

PS: danske tegn i feltnavne er ikke noget at bruge!
PPS: ovenstående er IKKE testet
Avatar billede Basse25 Novice
07. marts 2011 - 15:22 #2
Det virker næsten efter hensigten, men du har ret i, at det ikke virker, hvis EO = "" - Er der et bud på, hvordan jeg kan få kommaet væk, hvis EO = ""?
Avatar billede fdata Forsker
07. marts 2011 - 19:47 #3
Bare en idé: Hvad med at smide en Replace funktion, der udskifter ,, med , uden om hele dit udtryk:

Udtryk1: Replace ([EO] & "," & [EK] & "," & [EØ] , ",," , ",")
Avatar billede hugopedersen Nybegynder
07. marts 2011 - 21:23 #4
Det hjælper vel ikke hvis der står [EO],,  så kommer der til at stå [EO], og det er jo næsten lige så forkert.
Avatar billede Basse25 Novice
08. marts 2011 - 08:07 #5
Jeg har afprøvet ovenstående ud, men det virker slet ikke - Andre bud?
Avatar billede fdata Forsker
08. marts 2011 - 18:27 #6
Ja da.

Du kunne gå via en lille funktion. F.eks.:

Private Sub Test_Konkat()
  Debug.Print Konkat("xx", "", "")
  Debug.Print Konkat("", "yy", "")
  Debug.Print Konkat("xx", "yy", "")
  Debug.Print Konkat("", "", "zz")
  Debug.Print Konkat("xx", "", "zz")
  Debug.Print Konkat("", "yy", "zz")
  Debug.Print Konkat("xx", "yy", "zz")
End Sub

Function Konkat(EO As Variant, EK As Variant, EØ As Variant) As String
  Konkat = EO & "," & EK & "," & EØ
  Konkat = Replace(Konkat, ",,", ",")
  If Left(Konkat, 1) = "," Then Konkat = Mid(Konkat, 2)
  If Right(Konkat, 1) = "," Then Konkat = Left(Konkat, Len(Konkat) - 1)
End Function

Smid koden i et vilkårligt modul.
Avatar billede fdata Forsker
08. marts 2011 - 18:28 #7
... og se testresultaterne i Immediate vinduet (Ctrl-G)
Avatar billede Basse25 Novice
23. marts 2011 - 13:18 #8
Undskyld min sene tilbagemelding. - Jeg kan stadig ikke få det til at virke.
Avatar billede fdata Forsker
23. marts 2011 - 18:28 #9
... og hvorfor ikke?
Har du lagt funktionen i et modul?
Er du ikke enig i resultaterne i Test_Konkat?
Har du kaldt funktionen i din forespørgsel?
  Udtryk1: Konkat([EO];[EK];[EØ])
Avatar billede Basse25 Novice
19. april 2011 - 14:45 #10
Tak for hjælpen.
Avatar billede fdata Forsker
22. april 2011 - 21:15 #11
... og så mangler du vist bare at lukke spm ;o)
Avatar billede Basse25 Novice
26. april 2011 - 08:43 #12
Hermed.
Avatar billede fdata Forsker
01. maj 2011 - 22:26 #13
Når du lukker spm og napper pointene selv, kan det jo kun tolkes som at du ikke var tilfreds med svarene. Vi er jo flere som har sat os ind i dit problem og prøvet at løse det. Pyt med pointene - det er bare en underlig afslutning på tråden. Kunne du ikke kort gøre rede for hvordan sagen endte?
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





White paper
Rapport kortlægger de 13 bedste muligheder for at sætte turbo på din cloud computing