Avatar billede muggel Nybegynder
14. januar 2005 - 10:13 Der er 9 kommentarer og
1 løsning

Kan man trimme linieskift?

Jeg har brug for at trimme linieskift ud af nogle tekst strenge. Findes der en funktion i jetSQL der gør det?
Avatar billede lorentsnv Nybegynder
14. januar 2005 - 10:36 #1
Replace(Replace([Tekst],Chr(13),""),Chr(10),"")
Avatar billede muggel Nybegynder
14. januar 2005 - 10:53 #2
Er du sikker på at "Replace" er en SQL funktion? Det ligner mest af alt noget bv.
Avatar billede lorentsnv Nybegynder
14. januar 2005 - 10:58 #3
I Access 2003 kan jeg godt bruge Replace som en del af en query, og jeg mener denne også kan bruges i en eller to versioner tidligere. Hvilken version af Access bruger du?
Jeg lavet en query hvor jeg 'kørte' feltet [Tekst] igennem ovennævnte replace-funktion. Teksten i dette feltet havde jeg oprette i Notes, og lavet et par linieskift. Efter Repace, var alle linieskift fjernet.
Avatar billede lorentsnv Nybegynder
14. januar 2005 - 11:03 #4
Her er sql'en som jeg bruger i Access2003 (jeg har sat et ekstra space i replace-teksten, således at ord efte linieskift ikke bliver sammensat med ordet inden linieskift):

SELECT Table1.ID, Table1.Tekst, Replace(Replace([Tekst],Chr(13)," "),Chr(10),"") AS TekstUdenLinieskift
FROM Table1;
Avatar billede muggel Nybegynder
14. januar 2005 - 11:03 #5
jeg bruger access 2000 - når jeg prøver at afvikle SQL sætningen får jeg fejlmeddelelsen 'Undefined function "Replace" in expression'
Avatar billede lorentsnv Nybegynder
14. januar 2005 - 11:24 #6
Hvis du opretter følgende funtion i et modul:
Function RemoveLF(sString)
    'This functions removes all LineFeeds from text
    'Maybe it could be improved by searching after chr(10) and chr(13) in one search
    Dim nPos As Integer
   
    nPos = InStr(sString, Chr(10))
    Do While nPos > 0
        sString = Left(sString, nPos - 1) & " " & Mid(sString, nPos + 1)
        nPos = InStr(sString, Chr(10))
    Loop
   
    nPos = InStr(sString, Chr(13))
    Do While nPos > 0
        sString = Left(sString, nPos - 1) & Mid(sString, nPos + 1)
        nPos = InStr(sString, Chr(13))
    Loop
   
    RemoveLF = sString
End Function

Så skulle du fra en query kunne bruge :
SELECT ID, Tekst, RemoveLF([Tekst]) AS TekstUdenLinieskift
FROM Table1;

Det kan måske gøres mere elegant end dette, men det skulle fungere.
Avatar billede jnh Nybegynder
14. januar 2005 - 11:34 #7
Kna dette køres fra Access's indbyggede Queries?

Jesper
Avatar billede lorentsnv Nybegynder
14. januar 2005 - 14:10 #8
Access's indebyggede queries kan godt gøre brug af functions.
Avatar billede lorentsnv Nybegynder
22. januar 2005 - 11:47 #9
Har du prøvet funktionetn RemoveLF?
Avatar billede lorentsnv Nybegynder
31. januar 2005 - 13:52 #10
Hvad med at lukke det spørgsmål, med mindre du har flere spørgsmål hertil ;-)
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