Avatar billede jesperdyhr Praktikant
10. september 2007 - 20:19 Der er 6 kommentarer og
1 løsning

OCR linie til FI-indbetalingskort - kontrolciffer

Hej eksperter

Hvem kan lige trylle en lille beegning til en forespørgsel som danner kontrolcifferet til kodelinien på FI kort af typen 71?

Man beregner kontrolcifferet som modulus 10 af de 14 cifre der er plads til, men jeg skal under alle omstændigheder kun bruge fire cifre ud af de 14, og det gør måske opgaven lettere?

Kan nogen mon hjælpe stakkels lille mig?
Avatar billede mugs Novice
10. september 2007 - 20:23 #1
Er de 4 cifrer regner fra højre, venste eller i midten?
Avatar billede jesperdyhr Praktikant
10. september 2007 - 20:56 #2
Hej Mugs

Det er de sidste 4 cifre yderst til højre.

Faktisk et kundenummer, så de 14 cifre skulle være 00000000002193 hvis kundenummeret er 2193.

Hilsen
Jesper
Avatar billede benson Nybegynder
10. september 2007 - 21:05 #3
Hej Jesper

Her er den VBA kode jeg bruger i Excel til at beregne det sidste kontrolciffer

Public Function Tjektal(Tal As String) As Integer
taeller = 1
gemtal = 0
Tjektal = 0
    For i = Len(Tal) To 1 Step -1
        If taeller = 1 Then
            gemtal = CInt(Mid(Tal, i, 1)) * 2
            taeller = 2
        Else
            gemtal = CInt(Mid(Tal, i, 1))
            taeller = 1
        End If
        Tjektal = Tjektal + TværSum(CStr(gemtal))
    Next i
Tjektal = 10 - Tjektal Mod 10
If Tjektal = 10 Then
    Tjektal = 0
End If
'Tjektal = gemtal
End Function

Public Function TværSum(Tal As String) As Integer

TværSum = 0
For i = 0 To Len(Tal) - 1
    TværSum = TværSum + Val(Left(Right(Tal, Len(Tal) - i), 1))
Next i

End Function


Denne næste kode bruger jeg til at fylde nuller foran det endelige tal:
Public Function Fyldnul(Tal As String, num As Integer) As String

Fyldnul = Tal
While Len(Tal) < num
    Tal = "0" & Tal
Wend

Fyldnul = Tal
End Function

Dvs. jeg i Excel kalder funktionerne således:
fyldnul(""&2193&tjektal(2193);15)

Hvilket giver resultatet: 000000000021931
Avatar billede mugs Novice
10. september 2007 - 21:12 #4
Lav et udtry i din foresprædel:

Udtryk1: Right([DIT FELTNAVN];4)
Avatar billede jesperdyhr Praktikant
11. september 2007 - 07:15 #5
Hej Mugs

Det er kontrolcifferet jeg skal have genereret. Jeg har tallet 2193 og skal generere linien: 00000000002193X hvor X er kontrolcifferet. De foranstillede nuller skal jeg også lige have med. Mine kundenumre er fra 1 til 4 cifre intdil videre, men kunne nok blive fem-cifrede med tiden.
Avatar billede jesperdyhr Praktikant
11. september 2007 - 07:18 #6
Hej Benson

Hvordan bruger jeg VBA koden i excel. Jeg kunne jo bruge din "generator" til at lave en tabel i Acceess, hvor jeg slår FI-kodelinien op med kundenummeretsom reference.
Det er nok ikke raketvidenskab, men det fungerer. Måske kunne du lave et excel-ark med kundenumre fra 1 til 9999 med tilhørende FI-kodelinier?
Avatar billede benson Nybegynder
11. september 2007 - 08:16 #7
Du kan finde et eksempel på www.hojholt.dk/download/test.xls
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