Avatar billede rickie Juniormester
20. december 2005 - 13:39 Der er 11 kommentarer og
3 løsninger

Right string

Hej,

Jeg har tallet nogle belöb. Feks 8.613,27 og 22.493,50 som skal deles op i enkelfelter da det skal bruges på et svenskt girokort. Der er et felt for hvert tal.

8.613,27 skal så på girokortet se ud sådan her: 8 6 1 3 2 7

Den skal tage hensyn til hvor mange siffrer der er. Hvis jeg bruger funktionen MID virker dette ikke. Det skal vel vären en kombination mellem MID og RIGHT men jeg ved bare ikke hvordan.

Ha det godt =)
Avatar billede Slettet bruger
20. december 2005 - 13:58 #1
dim var1
dim var2
dim var2a
dim var3
dim var3a
dim var4
dim var4a
osv

var1=right(me.beløb,1)
var2a=right(me.beløb,2)
var2=left(var2a,1)
var3a=right(me.beløb,3)
var3=left(var3a,1)
var4a=right(me.beløb,4)
var4=left(var4a,1)
osv

me.girokortBeløb=var4 & " " & var3 & " " & var2 & " " & var1

?~)
Avatar billede Slettet bruger
20. december 2005 - 13:58 #2
Måske!~)
Avatar billede supertekst Ekspert
20. december 2005 - 14:05 #3
Sub giro()
    beløb =Dim beløb, girobeløb
"8.613,27"
   
    girobeløb = ""
    For f = Len(beløb) To 1 Step -1
        If InStr(".,", Mid(beløb, f, 1)) = 0 Then
            girobeløb = " " + Mid(beløb, f, 1) + girobeløb
        End If
    Next f

End Sub
Avatar billede supertekst Ekspert
20. december 2005 - 14:10 #4
Der gik lidt koks i den forrige - her er den igen:
Sub giro()
Dim beløb, girobeløb
    beløb = "8.613,27"
   
    girobeløb = ""
    For f = Len(beløb) To 1 Step -1
        If InStr(".,", Mid(beløb, f, 1)) = 0 Then
            girobeløb = " " + Mid(beløb, f, 1) + girobeløb
        End If
    Next f
End Sub
Avatar billede jesperfjoelner Nybegynder
20. december 2005 - 15:40 #5
Function Giro(tal As String) As String

Dim s As String
Dim t As String
Dim i As Integer

s = Replace(Replace(tal, ",", ""), ".", "")
For i = 1 To Len(s)
  t = t & Mid(s, i, 1)
  If i <> Len(s) Then
        t = t & " "
  End If
Next
Giro = t
End Function

og kalde den således:
me!feltnavn = giro("8.613,27")
Avatar billede rickie Juniormester
21. december 2005 - 09:23 #6
Belöbet er forskellig hver gang da det hentes fra databasen. Vil jeres virke?
Avatar billede rickie Juniormester
21. december 2005 - 09:30 #7
Hvert tal skal deles op i et felt for sig da det skal printes på et girokort og hver tal skal stå i en rude for sig selv

FRA HÖJRE med belöb 8.613,27. Belöbene hentes fra en database og kan väre forskellige belöb.
Rude 1: 7
Rude 2: 2
Rude 3: 3
Rude 4: 1
Rude 5: 6
Rude 6: 8
Rude 7: Blank
Rude 8: Blank
Rude 9: Blank
Rude 10: Blank
Avatar billede Slettet bruger
21. december 2005 - 10:13 #8
Hvis du har lyst kan du arbejde videre på dette:

Private Sub Kommandoknap4_Click()
Dim var1
Dim var2
Dim var2a
Dim var3
Dim var3a
Dim var4
Dim var4a
Dim var5
Dim var5a
Dim var6
Dim var6a
Dim var7
Dim var7a
Dim var8
Dim var8a
Dim var9
Dim var9a
Dim var10
Dim var10a

var1 = Right(Me.Beløb * 100, 1)
var2a = Right(Me.Beløb * 100, 2)
var2 = Left(var2a, 1)
var3a = Right(Me.Beløb * 100, 3)
var3 = Left(var3a, 1)
var4a = Right(Me.Beløb * 100, 4)
var4 = Left(var4a, 1)
var5a = Right(Me.Beløb * 100, 5)
var5 = Left(var5a, 1)
var6a = Right(Me.Beløb * 100, 6)
var6 = Left(var6a, 1)
var7a = Right(Me.Beløb * 100, 7)
var7 = Left(var7a, 1)
var8a = Right(Me.Beløb * 100, 8)
var8 = Left(var8a, 1)
var9a = Right(Me.Beløb * 100, 9)
var9 = Left(var9a, 1)
var10a = Right(Me.Beløb * 100, 10)
var10 = Left(var10a, 1)

Me.Girobeløb = var10 & " " & var9 & " " & var8 & " " & var7 & " " & var6 & " " & var5 & " " & var4 & " " & var3 & " " & var2 & " " & var1
End Sub


Det virker næsten!~)

Problemet er at hvis der er mindre end 10 variable i alt så vil den tage den til venstre og bruge den, dvs. 12345,67 = 1 1 1 1 2 3 4 5 6 7

Der skal altså bruges nogle if sætninger, men du kan jo bare sige hvis me.beløb >=10000 and me.beløb <100000 then og så sættes var5 ellers " "

Du ved, noget i den retning, det er lidt omstændigt og kan helt sikkert optimeres, men du kan sagtens få det til at virke!~)

Held og lykke....
Avatar billede Slettet bruger
21. december 2005 - 10:15 #9
P.s. der forudsættes at beløbet er Fast Format, dvs. med 2 decimaler....
Avatar billede Slettet bruger
21. december 2005 - 10:19 #10
Der skal altså bruges nogle if sætninger, men du kan jo bare sige hvis (me.beløb >=10000 er forkert..) and me.beløb <100000 then og så sættes var5 ellers " "
Avatar billede Slettet bruger
21. december 2005 - 10:30 #11
Det her må jeg hellere selv redde mig ud af!~)

Private Sub Kommandoknap4_Click()
Dim var1
Dim var2
Dim var2a
Dim var3
Dim var3a
Dim var4
Dim var4a
Dim var5
Dim var5a
Dim var6
Dim var6a
Dim var7
Dim var7a
Dim var8
Dim var8a
Dim var9
Dim var9a
Dim var10
Dim var10a

var1 = Right(Me.Beløb * 100, 1)
If Me.Beløb >= 0.1 Then
var2a = Right(Me.Beløb * 100, 2)
var2 = Left(var2a, 1)
Else
var2 = " "
End If
If Me.Beløb >= 1 Then
var3a = Right(Me.Beløb * 100, 3)
var3 = Left(var3a, 1)
Else
var3 = " "
End If
If Me.Beløb >= 10 Then
var4a = Right(Me.Beløb * 100, 4)
var4 = Left(var4a, 1)
Else
var4 = " "
End If
If Me.Beløb >= 100 Then
var5a = Right(Me.Beløb * 100, 5)
var5 = Left(var5a, 1)
Else
var5 = " "
End If
If Me.Beløb >= 1000 Then
var6a = Right(Me.Beløb * 100, 6)
var6 = Left(var6a, 1)
Else
var6 = " "
End If
If Me.Beløb >= 10000 Then
var7a = Right(Me.Beløb * 100, 7)
var7 = Left(var7a, 1)
Else
var7 = " "
End If
If Me.Beløb >= 100000 Then
var8a = Right(Me.Beløb * 100, 8)
var8 = Left(var8a, 1)
Else
var8 = " "
End If
If Me.Beløb >= 1000000 Then
var9a = Right(Me.Beløb * 100, 9)
var9 = Left(var9a, 1)
Else
var9 = " "
End If
If Me.Beløb >= 10000000 Then
var10a = Right(Me.Beløb * 100, 10)
var10 = Left(var10a, 1)
Else
var10 = " "
End If

Me.Girobeløb = var10 & " " & var9 & " " & var8 & " " & var7 & " " & var6 & " " & var5 & " " & var4 & " " & var3 & " " & var2 & " " & var1
End Sub
Avatar billede jesperfjoelner Nybegynder
21. december 2005 - 11:44 #12
Det bliver en større omgang. Jeg forsøger med en sammenskrevet version her:

Rickie > Jeg går ud fra at du har en formular med 10 textbokse kalde r1, r2, r3... r10. De står således at r1 står længst til højre og r10 står længst til venstre.
Du har en textbox "belob" hvor beløbet er indtastet.
Prøv så dette under en knap:


Private Sub cmdOK_Click()

Dim s As String
Dim i As Integer

s = Replace(Replace(Me!belob, ",", ""), ".", "")

For i = 1 To Len(s)
  Me("r" & i) = Mid(s, Len(s) - (i - 1), 1)
Next

End Sub
Avatar billede jesperfjoelner Nybegynder
22. december 2005 - 04:12 #13
Fandt du ud af det?
Avatar billede rickie Juniormester
22. december 2005 - 10:37 #14
Hej,

Jeg har desvärre ikke haft tid at kigge på det endnu men vender tilbage så hurtigt som muligt.
Tak!
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