Domino 9 und frühere Versionen > Entwicklung
Mehrstellige Zahl in mehrere einzelne Variablen unterteilen
Glombi:
Hier eine Lösung in LotusScript - die Formel musst Du ggf. an den Kontext anpassen (diese Formel ist bspw. für einen Button):
Das Ergebnis steht in der Variablen "pruefziffer". Der Wert zur Berechnung wird aus dem Feld "KontoNr" geholt. Das muss ein Textfeld sein.
Dim ws As NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim kontonr As String
Dim laenge As Integer
Dim zahl As Integer
Dim i As Integer
Dim summe As Integer
Dim modulo_erg As Integer
Dim pruefziffer As Integer
Set ws = New NotesUIWorkspace
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
kontonr = Cstr( doc.KontoNr(0) )
laenge = Len( kontonr )
summe = 0
For i = 2 To laenge
zahl = Cint( Mid( kontonr, laenge - i + 1, 1 ) )
summe = summe + zahl * i
Next
modulo_erg = summe Mod 11
If modulo_erg <= 1 Then
pruefziffer = 0
Else
pruefziffer = 11 - modulo_erg
End If
Andreas
animate:
ah, sehr schön.
nur die Anforderung
--- Zitat ---Hierbei ist immer die letzte Stelle die Prüfziffer. Die 6 Ziffern davor werden zur Berchnung benötigt, wenn die Kontonummer kürzer als 7 Zeichen (also die Prüfziffer plus die 6 Berechnungsziffern) ist brauche ich nur die Stellen die vorhanden sind zur Berechnung.
--- Ende Zitat ---
ist noch nicht mit eingebaut
Wenn ich das richtig sehe, dann könntest du prüfen, wie lang die Nummer ist und wenn sie > 7 ist, dann einfach die überflüssigen Zahlen abschneiden
ungefähr so
...
kontonr = Cstr( doc.KontoNr(0) )
If Len(kontonr) > 7 then
kontonr = right(kontonr, 7)
End if
laenge = Len( kontonr )
...
Glombi:
@Thomas:
Meine Formel geht auch für kürzere Kontonummern. Deine Formel geht von mehr als 7 Stellen aus.
Andreas
animate:
ich habe das so verstanden, dass die Zahl 2-10 stellig sein kann.
Aber nur die letzten 7 Stellen werden zur Berechnung benötigt, wenn die Zahl kleiner als 7 Stellen ist, dann werden alle Stellen zur Berechnung verwendet.
Deswegen dachte ich, dass man eine Zahl, die größer ist als 7 Stellen, kürzen muss, denn sonst würden mit deinem Algorithmus mehr als 7 Stellen zur Berechnung verwendet, was evtl ein falsches Ergebnis liefern könnte.
Glombi:
Ich habe es mir nochmal genau durchgelesen - es kann in der Tat sein, dass nur die letzten 7 Zahlen herangezogen werden sollen. Dann muss Dein Code noch verwendet werden:
Dim ws As NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim kontonr As String
Dim laenge As Integer
Dim zahl As Integer
Dim i As Integer
Dim summe As Integer
Dim modulo_erg As Integer
Dim pruefziffer As Integer
Set ws = New NotesUIWorkspace
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
kontonr = Cstr( doc.KontoNr(0) )
If Len(kontonr) > 7 then
kontonr = Right$(kontonr, 7)
End if
laenge = Len( kontonr )
summe = 0
For i = 2 To laenge
zahl = Cint( Mid( kontonr, laenge - i + 1, 1 ) )
summe = summe + zahl * i
Next
modulo_erg = summe Mod 11
If modulo_erg <= 1 Then
pruefziffer = 0
Else
pruefziffer = 11 - modulo_erg
End If
Andreas
Die ersten 3 Stellen sind dann wohl die Filialbezeichnung oder so was in der Art.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln