21. februar 2001 - 08:44Der 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\").
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
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
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.
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
Synes godt om
Ny brugerNybegynder
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.