Avatar billede Jacob A Nybegynder
21. februar 2001 - 08:44 Der er 7 kommentarer og
2 løsninger

Fjern mellemrum i felter.

Jeg har en tabel med adskillige tusinde poster hvor telefonnumre skrevet som f.x.: \"99 99 99 99\", \"9999 9999\", \"99-99 9999\", osv.
det det skal resultere i er at alle emners tlf.nr. står uden mellemrum (\"99999999\").
Avatar billede janbangm Nybegynder
21. februar 2001 - 08:52 #1
Hej

Jeg mener der er en funktion der hedder Trim der fjerner mellemrum. Jeg sidder ikke hjemme i øjeblikket, så jeg kan ikke undersøge det, men prøv at søge i hjælp efter Trim
Avatar billede privaten Nybegynder
21. februar 2001 - 09:09 #2
Trim fjerner mellemrum i starten og slutningen af strengen

Prøv nedenstående metode fx.

debug.print removeUnwantedChar(\" \",\"99 99 99 99 \")


Function removeUnwantedChar(c As String, s As String) As String
    While InStr(s, c) > 0
        s = Mid(s, 1, InStr(s, c) - 1) + Mid(s, InStr(s, c) + 1)
    Wend
    removeUnwantedChar = s
End Function

Avatar billede dalkaer Nybegynder
21. februar 2001 - 09:32 #3
følgende funktion klarer problemet:

Public Function RemSpace(value As Variant) As Variant
    If Not IsNull(value) Then RemSpace = Replace(value, \" \", \"\")
End Function

Funktionen kaldes fra en forespørgsel med følgende syntax:

Tlf: RemSpace([Telefon])

[Telefon] er et felt i tabellen

Hilsen
LC, Dansk Dataskole, Glostrup
Avatar billede ds-zim Nybegynder
22. februar 2001 - 09:01 #4
Hvorfor er det lige at der ikke afsluttes med endif ?
Avatar billede privaten Nybegynder
22. februar 2001 - 10:58 #5
zim: fordi der ikke er et linieskifte...

if x>2 then y = 3  \' ok

if x>2 then  \' ok
  y = 3
end if

if x>2 then  \' ikke ok
  y = 3
Avatar billede ds-zim Nybegynder
22. februar 2001 - 11:09 #6
I C ! Thanx m8 :-)
Avatar billede ds-zim Nybegynder
22. februar 2001 - 11:10 #7
Håber du oxo kan den her! På forhånd tak

http://www.eksperten.dk/spm/51591
Avatar billede Jacob A Nybegynder
22. februar 2001 - 15:57 #8
Hej - jeg glemte helt at kigge efter Dalkaer\'s svar, men tak for inspirationen.

jeg brugte en opdateringsforespørgsel som foreslået, men fik en null fejl (kunne ikke erstatte med \"tomt\" tegn) - så inden jeg fik tænkt mig om havde jeg fundet nedenstående funktion og kørte derefter en søg og erstat på %-tegnene, det tog lidt tid for serveren - men det virkede.

Dog forstår jeg stadig ikke hvorfor jeg ikke kunne erstatte med tomt tegn...




Option Compare Database
Option Explicit
Function FindChar(strField As String) As String
\'This function will find the tabs in a text or memo field, then call another function to replace the tabs
\'To use the function, create a query base on the table you want to search, add the fields in question,
\'convert query to an update query . Add \"FindChar(<[fieldname]>)\" to the Update To, where <[fieldname]> is
\'the field you want to fix.
\'-------------------------\'
\'Chr(9) - Tab
\'Chr(10) - Linefeed
\'Chr(13) - Carrige Return
\'Chr(32) - Space
\'-------------------------\'
Dim intCounter As Integer
Dim strText As String
Dim intStart As Integer

intStart = 1
intCounter = 1
strText = strField

    Do Until intCounter = 0
        \'Chr(9) is the Tab character.
        intCounter = InStr(intStart, strText, Chr(32))
        intStart = intCounter + 1
       
        If intCounter > 0 And Not IsNull(intCounter) Then
            strText = ReplaceChar(intCounter, strText) \'This is a call to another function
        End If
    Loop
   
    FindChar = strText

End Function
Function ReplaceChar(intStart As Integer, strText As String) As String
\'This function is called from the FindChar() function. It accepts two arguments, intStart and strText.
\'The function replaces the char with \"%\". It returns the updated text.
 
    Mid(strText, intStart, 1) = \"%\"
    ReplaceChar = strText
   
End Function
Avatar billede privaten Nybegynder
23. februar 2001 - 09:27 #9
Du kan ikke erstartte med et tomt tegn (\"\") fordi:

Du fortæller programmet at karakteren \"%\" er lig \"\", altså at den ikke er, hvis du forstår hvad jeg mener.

Måden at gøre det på er at indarbejde en logik der tager højde for det. fx. :

if tegn_der_skal_indsættes =\"\" then
  resultat = left(den del af strengen der står til venstre for intStart) + right(den del af strengen der står til højre for intStart)
end if

Prøv at lege med det, se evt. også på metoden replace (se dalkjaer), den kan nemlig det nummer
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