Numeriek uit een string veld halen

Status
Niet open voor verdere reacties.

danny k99

Gebruiker
Lid geworden
12 nov 2004
Berichten
12
Ik zit met het volgende probleem in acces. In een bepaald stringveld kan bijvoorbeeld het volgende staan "amsterdam 6101" of "6101 amsterdam" of "7104 amersfoort". Ik weet de combinatie niet en kan ze ook niet inschatten. Nu wil ik in apart veld alleen de numerieke waardes uit de string. voorbeeld:

kolom 1
amsterdam 6101
6101 amsterdam
7104 amersfoort

kolom2
6101
6101
7104

Hoe kan ik uit het stringveld alleen de numeriekewaardes selecteren zoals in kolom 2.

Danny
 
Moet je even een functie voor schrijven in VBA:

Public Function fnGetNumericPart(mstrData As String) As Integer
Dim intTeller As Integer
Dim strResult As String

intTeller = 1
strResult = ""

If Len(mstrData) < 1 Then
fnGetNumericPart = 0
Exit Function
End If
Do While intTeller <= Len(mstrData)
If IsNumeric(Mid(mstrData, intTeller, 1)) Then
strResult = strResult & Mid(mstrData, intTeller, 1)
End If
intTeller = intTeller + 1
Loop
fnGetNumericPart = CInt(strResult)
End Function

Deze functie haalt het numerieke deel uit de aangeboden parameter en retourneert dat als een integer.
 
Perfect het werkt.

Kan ik ook een if functie hierin bouwen, voor als er geen numeriek waarde aan wezig is.

Danny
 
Ja tuurlijk,

Public Function fnGetNumericPart(mstrData As String) As Integer
Dim intTeller As Integer
Dim strResult As String

intTeller = 1
strResult = ""

If Len(mstrData) < 1 Then
fnGetNumericPart = 0
Exit Function
End If
Do While intTeller <= Len(mstrData)
If IsNumeric(Mid(mstrData, intTeller, 1)) Then
strResult = strResult & Mid(mstrData, intTeller, 1)
End If
intTeller = intTeller + 1
Loop
If len(cstrResult) > 0 Then
fnGetNumericPart = CInt(strResult)
else
fnGetNumericPart = 0
end if
End Function
 
Ziet er goed uit, maar nu zijn al m´n resultaten nul. Ik heb bv. de volgende velden:

9505 Hoofdkantoor
Amersfoort

Bij de eerste versie die je hebt geplaatst kreeg ik een error bij "amersfoort" en bij "9505 hoofdkantoor" 9505. Nu bij de tweede versie met de if functie zijn de resultaten allemaal 0.

Kan er een functie in als het resultaat error is de waarde x wordt geplaatst?

Danny
 
Typefoutje

Public Function fnGetNumericPart(mstrData As String) As Integer
Dim intTeller As Integer
Dim strResult As String

intTeller = 1
strResult = ""

If Len(mstrData) < 1 Then
fnGetNumericPart = 0
Exit Function
End If
Do While intTeller <= Len(mstrData)
If IsNumeric(Mid(mstrData, intTeller, 1)) Then
strResult = strResult & Mid(mstrData, intTeller, 1)
End If
intTeller = intTeller + 1
Loop
If len(strResult) > 0 Then
fnGetNumericPart = CInt(strResult)
else
fnGetNumericPart = 0
end if
End Function
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan