Autor Thema: Mehrstellige Zahl in mehrere einzelne Variablen unterteilen  (Gelesen 11380 mal)

Glombi

  • Gast
Re:Mehrstellige Zahl in mehrere einzelne Variablen unterteilen
« Antwort #20 am: 12.01.04 - 08:56:47 »
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
« Letzte Änderung: 12.01.04 - 09:05:30 von Glombi »

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Mehrstellige Zahl in mehrere einzelne Variablen unterteilen
« Antwort #21 am: 12.01.04 - 12:07:46 »
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.
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 )
...
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Glombi

  • Gast
Re:Mehrstellige Zahl in mehrere einzelne Variablen unterteilen
« Antwort #22 am: 12.01.04 - 12:16:35 »
@Thomas:
Meine Formel geht auch für kürzere Kontonummern. Deine Formel geht von mehr als 7 Stellen aus.

Andreas

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Mehrstellige Zahl in mehrere einzelne Variablen unterteilen
« Antwort #23 am: 12.01.04 - 12:55:08 »
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.
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Glombi

  • Gast
Re:Mehrstellige Zahl in mehrere einzelne Variablen unterteilen
« Antwort #24 am: 12.01.04 - 13:08:07 »
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.

Offline jens1979

  • Aktives Mitglied
  • ***
  • Beiträge: 115
  • Geschlecht: Männlich
Re:Mehrstellige Zahl in mehrere einzelne Variablen unterteilen
« Antwort #25 am: 12.01.04 - 14:55:48 »
Hallo erstmal wieder.

Mit der Filialbezeichnung haben die stellen nix zu tun. Es ist einfach in Deutschland so das Kontonummern mind. 2 und max. 10 Stellen haben dürfen (Vorgabe von der LZB). Für jedes Bankeninstitut gibt es eine eigene Prüfziffernberechnung. Bei manchen Banken werden hierbei mind. 2 und max. 9 Stellen berechnet, bei anderen max. 5 und in diesem Fall eben max. 6 Stellen, wobei die letzte immer die Prüfziffer ist.

Hier noch ein anderes Bsp. die KTO 2020 z.B. Hierbei handelt es sich um eine 0 als Prüfziffer und nur 3 Stellen zur Berechnung.
D.h.  2 0 2 0
        4 3 2 P
       -----------
        8+0+4=12

12:11=1 Rest 1

11-Rest1=10

10 = Prüfziffer 0

Ich hoffe das ich das damit nochmal ganz gut beschreiben konnte.


Ich Dank euch auf jeden Fall erstmal für die Mühe die Ihr euch macht und werd nachher gleich mal probieren obs so klappt.

CYA Jens

Glombi

  • Gast
Re:Mehrstellige Zahl in mehrere einzelne Variablen unterteilen
« Antwort #26 am: 12.01.04 - 15:08:30 »
Die Formel sollte dann das richtige tun.

Andreas

Offline jens1979

  • Aktives Mitglied
  • ***
  • Beiträge: 115
  • Geschlecht: Männlich
Re:Mehrstellige Zahl in mehrere einzelne Variablen unterteilen
« Antwort #27 am: 12.01.04 - 16:24:15 »
Hab die Formel grad mal probiert und ein bissel abgewandelt (auf meine Feldnamen und so) und muss sagen ... SUPER, funktioniert 100%ig. Und das beste ist ich glaube sogar verstanden zu haben was passiert.
Werd mir jetzt nochmal in aller Ruhe den Code zu Gemüte führen und ggf. nochmal nachfragen wenn ich irgendeinen Zusammenhang nicht verstehe.

Danke erstmal.


Jens

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz