von juetho » Mi, 12.09.2012 17:34
In meinem Unterformular für Kontodaten wird der Inhalt des Kontrollfeldes BIC nicht in die Datenbank-Tabelle übernommen. Kann mir das jemand erklären? Ich habe alles jetzt wie folgt geregelt;
der Arbeitsablauf selbst funktioniert.
- Die Tabelle konto enthält die Felder ID (als Verknüpfung zum Hauptformular), Part (zur Auswahl mehrerer Konten zur gleichen Adresse), IBAN, BIC, Name (Kontoinhaber). (Zumindest für DE kann ich auf den Banknamen verzichten; inwieweit das international nötig ist, lasse ich erstmal offen. Das interessiert auch für das Problem nicht.)
- Die Felder Part, BIC, Name werden mit Kontrollfeldern verknüpft: Part als numerisches Feld, Name als Textfeld, BIC als maskiertes Feld (wegen automatischer Großschreibung).
- Das Datenfeld IBAN wird nach dem Einlesen (Ereignis "nach dem Datensatzwechsel") aufgeteilt in die Kontrollfelder Lkz (maskiert, nur Großbuchstaben), Zahl (maskiert, zwei Ziffern), Konto (maskiert, bis zu 37 Zeichen incl. Leerzeichen).
- Nach dem Verlassen des Feldes Konto (Ereignis "bei Fokusverlust") wird die Gültigkeit der IBAN geprüft (siehe meine früheren Fragen). Außerdem werden für DE mithilfe der Bankleitzahl (den ersten 8 Stellen der Kontoangabe) aus der Tabelle blz mit einem SELECT-Befehl die BIC und der Bankname ausgelesen und in die Kontrollfelder BIC (siehe oben) und Bankname (Text, zz. nur Anzeige) eingetragen:
Code: Alles auswählen
oForm.Bankname.Text = oResult.getString(1)
oForm.BIC.Text = oResult.getString(2)
- Gespeichert wird durch einen Button Bestätigen mit dem Ereignis "Aktion ausführen". Das Makro dafür setzt die IBAN-Teile zusammen und speichert:
Code: Alles auswählen
text = oForm.iban_lkz.Text + oForm.iban_zahl.Text + ReplaceString( oForm.iban_konto.Text, "", " ")
oForm.updateString(3, text)
if oForm.isNew then oForm.insertRow() else oForm.updateRow
Problem: Im Zusammenhang mit
updateRow wird der Feldinhalt des Kontrollfeldes BIC gelöscht und
nicht in der Tabelle gespeichert. Nach dem Einlesen wird der Tabelleninhalt direkt in das Kontrollfeld BIC übernommen. Als Zwischenlösung habe ich in den vorstehenden Code noch eingefügt (so klappt es auch):
Was ist da los? Kann mir das Ignorieren des Feldinhalts von BIC jemand erklären? Danke! Jürgen
In meinem Unterformular für Kontodaten wird der Inhalt des Kontrollfeldes BIC nicht in die Datenbank-Tabelle übernommen. Kann mir das jemand erklären? Ich habe alles jetzt wie folgt geregelt; [b]der Arbeitsablauf selbst funktioniert.[/b]
[list][*]Die Tabelle [i]konto [/i]enthält die Felder ID (als Verknüpfung zum Hauptformular), Part (zur Auswahl mehrerer Konten zur gleichen Adresse), IBAN, BIC, Name (Kontoinhaber). (Zumindest für DE kann ich auf den Banknamen verzichten; inwieweit das international nötig ist, lasse ich erstmal offen. Das interessiert auch für das Problem nicht.)
[*]Die Felder Part, BIC, Name werden mit Kontrollfeldern verknüpft: Part als numerisches Feld, Name als Textfeld, BIC als maskiertes Feld (wegen automatischer Großschreibung).
[*]Das Datenfeld IBAN wird nach dem Einlesen (Ereignis "nach dem Datensatzwechsel") aufgeteilt in die Kontrollfelder Lkz (maskiert, nur Großbuchstaben), Zahl (maskiert, zwei Ziffern), Konto (maskiert, bis zu 37 Zeichen incl. Leerzeichen).
[*]Nach dem Verlassen des Feldes Konto (Ereignis "bei Fokusverlust") wird die Gültigkeit der IBAN geprüft (siehe meine früheren Fragen). Außerdem werden für DE mithilfe der Bankleitzahl (den ersten 8 Stellen der Kontoangabe) aus der Tabelle blz mit einem SELECT-Befehl die BIC und der Bankname ausgelesen und in die Kontrollfelder BIC (siehe oben) und Bankname (Text, zz. nur Anzeige) eingetragen:[code] oForm.Bankname.Text = oResult.getString(1)
oForm.BIC.Text = oResult.getString(2)[/code]
[*]Gespeichert wird durch einen Button [i]Bestätigen [/i]mit dem Ereignis "Aktion ausführen". Das Makro dafür setzt die IBAN-Teile zusammen und speichert:[code]text = oForm.iban_lkz.Text + oForm.iban_zahl.Text + ReplaceString( oForm.iban_konto.Text, "", " ")
oForm.updateString(3, text)
if oForm.isNew then oForm.insertRow() else oForm.updateRow[/code][/list]
[b]Problem:[/b] Im Zusammenhang mit [i]updateRow [/i]wird der Feldinhalt des Kontrollfeldes BIC gelöscht und [u]nicht[/u] in der Tabelle gespeichert. Nach dem Einlesen wird der Tabelleninhalt direkt in das Kontrollfeld BIC übernommen. Als Zwischenlösung habe ich in den vorstehenden Code noch eingefügt (so klappt es auch):
[code]oForm.updateString(5, oForm.BIC.Text)[/code]
Was ist da los? Kann mir das Ignorieren des Feldinhalts von BIC jemand erklären? Danke! Jürgen