Tekst verwijderen uit string van het laatste record

Status
Niet open voor verdere reacties.

Robby2

Gebruiker
Lid geworden
3 feb 2006
Berichten
40
Hallo,

Geinspireerd op twee andere codes heb ik een nieuwe code gemaakt. De bedoeling is om in access de waarde van het laatste record te strippen van letterd e.d. zoadat ik alleen een getal over houd. Vervolgens wil ik de laatste twee cijfers van het jaar toevoegen aan de laatste twee cijfers van de gestripte string samenvoegen en die als standaardwaarde meegeven in een tekstveld. De code die ik tot nu toe heb bedacht is:


Function StripString(MyStr As Variant) As Variant
On Error GoTo StripStringError
Dim strChar As String, strHoldString As String
Dim i As Integer

' Exit if the passed value is null.
If IsNull(MyStr) Then Exit Function

' Check each value for invalid characters.
For i = 1 To Len(MyStr)
strChar = Mid$(MyStr, i, 1)

If strChar >= "0" And strChar <= "9" Then
strHoldString = strHoldString & strChar
Else
Next i

' Pass back corrected string.
StripString = strHoldString
StripString = Left(Date, 2) & Left(StripString, 2)

StripStringEnd:
Exit Function

StripStringError: MsgBox Error$
Resume StripStringEnd
End Function

Ik weet nog niet:
- hoe ik aan de waarde kom van het laatste record
- of de code van het strippen zo klopt
- hoe ik de waarde als defaultwaarde in het tekstveld krijg

Wil iemand even met me mee denken?

Bedankt!
 
Bijna goed. Ik zou er dit van maken:

Code:
 Function StripString(vntStr As Variant) As Variant
On Error GoTo StripStringError
Dim strChar As String, strHoldString As String
Dim intX As Integer

' Exit if the passed value is null.
If IsNull(vntStr) Then Exit Function

' Check each value for invalid characters.
For intX = 1 To Len(vntStr)
    strChar = Mid$(vntStr, intX, 1)

    If strChar >= "0" And strChar <= "9" Then
        strHoldString = strHoldString & strChar
    end if

Next i

' Pass back corrected string.
StripString = strHoldString
StripString = [B]Left(Date, 2) & Left(StripString, 2)[/B]

StripStringEnd:
Exit Function

StripStringError: MsgBox Error$
Resume StripStringEnd
End Function

Ik heb dus alleen van ELSE, END IF gemaakt.
Verder moet je nog even kijken naar het dikgedrukte.

StripString = Left(Date, 2) & Left(StripString, 2)

Ik weet niet of het DATE statement teruggeeft wat jij wilt.

Verder is in je code geen sprake van een recordset dus daar kan ik weinig over zeggen. behalve dit:
Code:
rs.openrecordset() etc

Do While not rs.eof

'Record bewaren voor het geval deze de laatste is
vntRecordset = rs.veld

Loop

'EOF is bereikt.
'vntRecordset heeft de waarde van je laatste record.
...

HTH
Weest gegroet,
Guus
 
Laatst bewerkt:
Hoi Guus,

Goh, dat valt me niet tegen. Ik begin het langzaamaan toch een beetje te begrijpen geloof ik...

StripString = Left(Date, 2) & Left(StripString, 2) moet zijn StripString = Right (Date, 2) & Right (StripString, 2)

... en eigenlijk moet er bij Right (StripString, 2) nog 1 bij opgeteld worden. Maar ik denk dat ik dan van stripstring eerst een Number moet maken.

De waarde die in de stripstring-functie moet worden gestopt, is de laatste waarde uit een tabel (die ook gekoppeld is aan een combobox waaraan de nieuwe waarde weer teruggegeven moet worden als er een nieuw record wordt aangemaakt). Het resultaat is een soort automatische nummering, maar dan voor een tekstveld.

Bedankt ...., ik kan weer verder zo.
 
Gelukt! Ik krijg de juiste waarde, maar aan de voorkant valt er een 0 weg. Ik krijg bv 603 ipv 0603. (De uitkomst is een string en geen getal). Hoe kan ik dat oplossen?

De codes zijn:

Function StripString(MyStr As Variant) As Variant

On Error GoTo StripStringError

Dim strChar As String, strHoldString As String
Dim intX As Integer

' Exit if the passed value is null.
If IsNull(MyStr) Then Exit Function

' Check each value for invalid characters.
For intX = 1 To Len(MyStr)
strChar = Mid$(MyStr, intX, 1)

If strChar >= "0" And strChar <= "9" Then
strHoldString = strHoldString & strChar
End If

Next intX

' Pass back corrected string.
StripString = strHoldString + 1
StripString = Right(Date, 2) & Right(StripString, 2)

StripStringEnd:
Exit Function

StripStringError: MsgBox Error$
Resume StripStringEnd
End Function

en voor de knop:

Private Sub Knop304_Click()
On Error GoTo Err_Knop304_Click
Dim strVullen

strVullen = StripString(Me!c_nr)
Me!c_nr.DefaultValue = strVullen
DoCmd.GoToRecord , , acNewRec

Exit_Knop304_Click:
Exit Sub

Err_Knop304_Click:
MsgBox Err.Description
Resume Exit_Knop304_Click

End Sub
 
Gebruik het format commando om je output te formatteren:

Code:
strStripString = Format(strStripString, "0###")

Het kan zijn dat de syntax niet helemaal juist is. Kijk ff in de helpfile.

HTH
Weest gegroet,
Guus
 
Hoi Guus,

intLengte = Len(strHoldString) - 2
If intLengte < 1 Then GoTo StripStringEnd
strStripString = (Right(Date, 2) & Right((strHoldString + 1), intLengte))

Dit levert een juiste string in een msgbox op (dus met voorloop 0). Maar als strStripString in de tekstbox wordt geplaatst, verdwijnt de 0. Het Format commando helpt daarbij niet.

Heb je nog suggesties?

Groet, Robby
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan