Formular zu Bankdaten (IBAN, BIC usw.)

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Formular zu Bankdaten (IBAN, BIC usw.)

Beitrag von juetho »

Hallo, ich habe eine Datenbank-Tabelle Banking mit den Feldern Kontoinhaber und IBAN (Wikipedia). Die IBAN ist (natürlich) mit VARCHAR(34) festgelegt, weil die üblichen Leerzeichen bei Datenübertragungen nichts zu suchen haben; also werden sie auch nicht in der Datenbank gespeichert. Dazu habe ich ein paar theoretische und praktische Fragen; vielleicht kann mir das jemand unter den Base-Bedingungen erläutern. Bisher war die IBAN hier noch kein Thema.
  1. Im Formular sollen die Leerzeichen selbstverständlich eingegeben und angezeigt werden. Dazu habe ich das Textfeld durch ein maskiertes Feld ersetzt. Ich verstehe aber noch nicht, wie ich es erreiche, dass die Leerzeichen für die Anzeige automatisch eingefügt und beim Speichern automatisch entfernt werden. Muss ich das durch zwei Makros und Ereignisse steuern oder besser in der Abfrage oder durch einen Trigger vor dem Speichern?
  2. Wie steuere ich am besten die unterschiedlichen Varianten: AT mit 20, CH mit 21, DE mit 22 Stellen? Ist es sogar sinnvoll, die Eingabe auf 3 Felder aufzuteilen - Lkz, Prüfzahl, Kontoangaben?
  3. Ist es sinnvoll, nach der Eingabe die Prüfziffer zu berechnen und zu kontrollieren? Welches Ereignis ist dafür am besten geeignet: Fokusverlust oder ein anderes?
  4. Zumindest für deutsche Banken kann aus der IBAN die BLZ und das Konto ausgelesen werden. Ist es sinnvoll, diese Angaben zusätzlich anzuzeigen?
  5. Oder ist es heute noch angemessen, BLZ/Konto als Eingabefelder vorzusehen und daraus die IBAN zu errechnen?
  6. Aus der BLZ-Datei der Deutschen Bundesbank - siehe Merkblatt und Download - können Bankname und BIC ausgelesen werden. Ist es sinnvoll, diese Angaben automatisch zu holen und nur zur Kontrolle anzuzeigen, oder ist die zusätzliche Eingabe sinnvoller?
Da ich mich gleichzeitig in Base einarbeite, kann es sein, dass ich die passenden Informationen noch nicht gefunden habe. Ihr dürft mich also gerne einfach auf die Dokumentationen verweisen (Buch, Kapitel, Abschnitt). Danke! Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Re: Formular zu Bankdaten (IBAN, BIC usw.)

Beitrag von pmoegenb »

Wenn Du Lektüre suchst, die kannst Du hier finden: http://de.libreoffice.org/hilfe-kontakt/handbuecher/.

Dein Vorhaben ist ohne gute StarBasic-Kenntnisse nicht zu verwirklichen.

- Umrechnung der Buchstabenfolge wie z. B. DE in Dezimalzahlen um eine eine Nach- oder Berechnung der Prüfziffer vornehmen zu können
- Berechnung der Prüfziffer im Modul-97-, bzw. Modul-98-Verfahren.
- Entfernen von Leerzeichen vor der Speicherung
- und, und, und

Ferner ist absehbar, dass BIC im internationalem Zahlungsverkehr wegfallen wird, da den Herrn aufgefallen ist, dass die nationale BLZ in der IBAN enthalten ist.
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
RobertG
********
Beiträge: 2034
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Formular zu Bankdaten (IBAN, BIC usw.)

Beitrag von RobertG »

Hallo Jürgen,

maskierte Felder stellen eine Maske dar, die mit abgespeichert wird. Das ist vermutlich nicht das, was Du suchst. Spontan fällt mir nur ein, lauter einzelne Felder zu machen und die auch so in die Datenbank zu übernehmen. Wie weit Du ansonsten mit einer Base-Abfrage und dem Entfernen der Maskierung kommst habe ich nicht getestet.

Gruß

Robert
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: Formular zu Bankdaten (IBAN, BIC usw.)

Beitrag von juetho »

RobertG hat geschrieben:maskierte Felder stellen eine Maske dar, die mit abgespeichert wird.
Dann ist vermutlich mein Gedanke mit getrennten Eingabefeldern sinnvoll: Lkz, Prüfzahl, Kontoangaben. Die Kontoangaben werden mit Leerzeichen gegliedert und genauso gespeichert. Gleichzeitig speichert die Datenbank per Trigger die eigentliche IBAN (REPLACE Leerzeichen durch nichts). Für die Eingabe und Anzeige im Formular werden die getrennten Felder verwendet. Das ist zwar etwas Datenredundanz, aber die dürfte vertretbar sein.
pmoegenb hat geschrieben:Wenn Du Lektüre suchst, die kannst Du hier finden:
Was glaubst du eigentlich, mit was für einem Idioten du es zu tun hast? Wenn ich nach konkreten Informationen frage, dann hilft mir der allgemeine Hinweis auf die Handbücher nicht sehr weit. Glaubst du, ich habe vergeblich in der Impress-Einführung gesucht? - Wer eine OOP-Programmiersprache beherrscht, wird sich auch in andere Sprachen hineinfinden; insofern stellt StarBasic vermutlich weniger Anforderungen. Das Hauptproblem liegt in der exakten Definition von Typen, Routinen und Variablen, aber nicht im grundsätzlichen Verständnis. - Wenn ich die Prüfziffernberechnung oder das Einfügen und Entfernen der Leerzeichen anspreche, weiß ich doch offensichtlich, wovon ich spreche. Also wenn du nicht mehr zu meinen Fragen beizutragen hast (ist es sinnvoll, ist es angemessen, was ist besser), dann lass' es besser ganz bleiben. Dein einziger nützlicher Hinweis (die Zukunft der BIC) bringt im Moment auch nichts.

Bisher habe ich von dir hilfreiche Antworten gelesen. Was willst du mir mit diesem Beitrag sagen? Dass ich mich zum Teufel scheren und euch nicht mit Fragen belästigen soll? Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Re: Formular zu Bankdaten (IBAN, BIC usw.)

Beitrag von pmoegenb »

juetho hat geschrieben:Was glaubst du eigentlich, mit was für einem Idioten du es zu tun hast? Wenn ich nach konkreten Informationen frage, dann hilft mir der allgemeine Hinweis auf die Handbücher nicht sehr weit.
Nun, ich habe dies aufgrund dieses Textes
juetho hat geschrieben: Da ich mich gleichzeitig in Base einarbeite, kann es sein, dass ich die passenden Informationen noch nicht gefunden habe. Ihr dürft mich also gerne einfach auf die Dokumentationen verweisen (Buch, Kapitel, Abschnitt).
auf Base bezogen. Deshalb der allgemeine Link zu den Handbüchern von LibO.
juetho hat geschrieben: Wer eine OOP-Programmiersprache beherrscht, wird sich auch in andere Sprachen hineinfinden; insofern stellt StarBasic vermutlich weniger Anforderungen.
Wenn dem so ist, was ich nicht bezweifle, wundert es mich, dass Du Dein Vorhaben mit einer Office-Umgebung und nicht mit einer Entwicklungsumgebung verwirklichen möchtest. Außerdem sei der Hinweis gestattet, dass die in BASE integrierte Datenbank HSQLDB nicht mehrbenutzerfähig ist.
juetho hat geschrieben:
Das Hauptproblem liegt in der exakten Definition von Typen, Routinen und Variablen, aber nicht im grundsätzlichen Verständnis.

Hier haben sich DELPHI schon Einige mit IBAN beschäftigt. Ist zwar Object-Pascal, aber das dürfte ja kein Problem sein. Auf der Website einfach IBAN eingeben und die Suche starten.
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
hr.hartwig
***
Beiträge: 52
Registriert: Mi, 09.05.2007 23:25

Re: Formular zu Bankdaten (IBAN, BIC usw.)

Beitrag von hr.hartwig »

Hallo Jürgen!
Ich weiß nicht, ob Du inzwischen eine Lösung gefunden hast.
Hab heute erst die Frage gelesen.
Wenn ich Dich richtig verstanden habe, kann ich Dir evtl. Deine Frage 1 und 2 beantworten.
Dazu habe ich Dir nachfolgend mal ein kleines Makro geschrieben,
was Leerzeichen automatisch in die Iban einfügt,
Länderabhängig (musst Du noch ergänzen),
fehlertolerante Eingabe des Benutzers.
Einfaches Textfeld, kein maskiertes Feld(damit hab ich immer Probleme...).

Code: Alles auswählen

Sub Ibanleerzeichen
' Library laden für 'ReplaceString'
If Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools") Then GlobalScope.BasicLibraries.LoadLibrary("Tools")

' Iban-Eingabe durch Dein Textfeld.
'Iban = "DEpp bbbb bbbb kkkk kkkk kk" ' (Aus Wikipedia)
Iban = "DE12 A234 B234 C234 D234 E2" ' Test-Iban

' Leerzeichen löschen, für den Fall, daß der Benutzer diese ausversehen falsch gesetzt hat:
' z.B. "D E12 A2 34B24 C234 D2 34E2" wird trotzdem korrekt umgesetzt 
Iban = ReplaceString(Iban,""," ")

' Falls der Benutzer die LKZ kleingeschrieben hat, diese in Großbuchstaben umwandeln.
Iban = ReplaceString(Iban, UCase(Left(Iban,2)), Left(Iban,2))

' Länderauswahl
Select Case Left(Iban, 2)
	Case "DE"
		' Wenn Länge nicht stimmt, ist Iban falsch.
		If Len(Iban) <> 22 Then Msgbox "Iban stimmt nicht, falsche Länge" : Exit Sub
		' Hier Leerzeichen einfügen.
		' 1.Zahl in Mid ist die Iban-Stelle, 2. Zahl ist Anzahl der Zeichen.
		Iban = Left(Iban, 4) + " " + Mid(Iban,5, 4) + " " + Mid(Iban,9, 4) + " " + Mid(Iban,13, 4) + " " + Mid(Iban,17, 4)+ " " + Right(Iban, 2)
	Case "AU"
		If Len(Iban) <> 20 Then Msgbox "Iban stimmt nicht, falsche Länge" : Exit Sub
		' Hier Zeile für Österreich eingeben.
	Case "CH"
		If Len(Iban) <> 21 Then Msgbox "Iban stimmt nicht, falsche Länge" : Exit Sub
		' Hier Zeile für Schweiz eingeben.
	Case Else:
		MsgBox "Land unbekannt." : Exit Sub
End Select

' Zeile mit eingefügten Leerzeichen in das Textfeld zurückschreiben. (Hier nur anzeigen)
Msgbox Iban

' Zeile ohne Leerzeichen für die Datenbank. (Hier nur anzeigen)
Iban = ReplaceString(Iban,""," ")
Msgbox Iban

End Sub
Das Makro würd ich dann mit 'Bei Fokusverlust' starten.
Du brauchst die Iban also nicht in verschieden Felder aufteilen.
War es das, wonach Du gefragt hast?
Würd mich freuen, wenn ich Dir helfen konnte.
Viele Grüße,
Hotti
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: Formular zu Bankdaten (IBAN, BIC usw.)

Beitrag von juetho »

Danke, so etwa hatte ich mir einen Kommentar vorgestellt. Das hilft mir sowohl für die Konzeption als auch für die Umsetzung sehr (abgesehen davon, dass ich für das Einfügen der Leerzeichen eine Schleife verwenden werde; die kann dann für alle Länder gleich sein).

Gruß Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Antworten