webForumDet fria alternativet

Ta bort oönskade tecken i Access

6 svar · 558 visningar · startad av Rob Tjotji

Rob TjotjiMedlem sedan juni 200341 inlägg
#1

Hej!

Jag skulle vilja skapa en fråga som tar bort oönskade tecken (allt som inte är siffror) från ett fält.
Ex:
"12 34 56-7890" och "123456-7891" skall presenteras som "1234567890" och "1234567891".

Skulle bli jätteglad om någon kunde ge mig ett snabbt svar.

@ndersMedlem sedan juni 200032 969 inlägg
#2

Om du vet precis vilka tecken du vill ta bort så hade jag försökt mig på ett par vanliga UPDATE-frågor. Jag har för mig att man kan använda Replace() i SQL för Access. Ex:

UPDATE tabell SET fält = REPLACE(fält, ' ', '')
Engine^Medlem sedan dec. 20003 887 inlägg
#3

Enklast är nog om du gör en modul och lägger till följande funktion, som med hjälp av regular expression ordnar det.

Funktionen

Function ExtractNumbers(strSource) As String
  Dim objRX As New RegExp

  objRX.Global = True
  objRX.IgnoreCase = True
  objRX.Pattern = [^\d]

  ExtractNumbers = objRX.Replace(strSource, "")
End Function

Sedan ska det bara vara att skapa en fråga, exempelvis

UPDATE [i]tabell[/i] SET [i]kolumn[/i]  = ExtractNumbers([i]kolumn[/i])

Men det är alltid en bra ide att testa en sådan fråga innan man kör den på lite skräpdata, så att man inte står där utan att kunna ångra sig efter man kört frågan.

För att funktionen ska kunna göras behövs förresten en referens till Microsoft VBScript Regular Expressions 5.5 under verktyg i VBA-editorn.

Rob TjotjiMedlem sedan juni 200341 inlägg
#4

Det det skulle jag kunna klara av om det gällde webbsidor men hur gör jag det i Access?
Dessutom vill jag inte ändra i tabellen utan i frågeresultatet alternativ i en ny tabell.

Engine^ skrev:

Enklast är nog om du gör en modul och lägger till följande funktion, som med hjälp av regular expression ordnar det.

Funktionen

Function ExtractNumbers(strSource) As String
  Dim objRX As New RegExp

  objRX.Global = True
  objRX.IgnoreCase = True
  objRX.Pattern = [^\d]

  ExtractNumbers = objRX.Replace(strSource, "")
End Function

Sedan ska det bara vara att skapa en fråga, exempelvis

UPDATE [i]tabell[/i] SET [i]kolumn[/i]  = ExtractNumbers([i]kolumn[/i])

Men det är alltid en bra ide att testa en sådan fråga innan man kör den på lite skräpdata, så att man inte står där utan att kunna ångra sig efter man kört frågan.

För att funktionen ska kunna göras behövs förresten en referens till Microsoft VBScript Regular Expressions 5.5 under verktyg i VBA-editorn.

Engine^Medlem sedan dec. 20003 887 inlägg
#5

Jag tänkte att du skulle göra det i Access... du kan ju alltid använda en selectsats för att se resultatet utan att ändra något.

SELECT ExtractNumbers([i]kolumnen[/i]) FROM [i]tabellen[/i]

Har jag missuppfattat något här?

Rob TjotjiMedlem sedan juni 200341 inlägg
#6

Nej du har nog inte missuppfattat något utan det är nog mer min okunskap.
Testade nedanstående men får meddelandet:
Odefinierad funktion 'ExtractNumbers' i uttryck.
Finns det en lösning?
Tackar för din kunskap.

Engine^ skrev:

Jag tänkte att du skulle göra det i Access... du kan ju alltid använda en selectsats för att se resultatet utan att ändra något.

SELECT ExtractNumbers([i]kolumnen[/i]) FROM [i]tabellen[/i]

Har jag missuppfattat något här?

Engine^Medlem sedan dec. 20003 887 inlägg
#7

En lösning är den jag skrev - dock med en liten förändring i koden. Jag glömde citationstecken runt [^\d], så det är bara att lägga till det.

Tyvärr har jag inte Access här att testa på, men min erfarenhet säger mig att det ska inte vara några problem.

Har du skapat en ny modul och lagt in funktionen där?

139 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)