[Gelöst] Texteingabe: Zeichen maskieren/escapen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [Gelöst] Texteingabe: Zeichen maskieren/escapen

Re: [Gelöst] Texteingabe: Zeichen maskieren/escapen

von gigabert » Do, 24.09.2009 11:06

Hallo ihr,

ich danke euch auch mal für die vielen brauchbaren Tipps...

Gruss
Bert

Re: [Gelöst] Texteingabe: Zeichen maskieren/escapen

von eBayer » Do, 24.09.2009 10:50

Hallo Christiana,
danke für Deinen Hinweis. Das liest sich jedenfalls recht gut und bringt mir einen guten Lösungsansatz.
Sind ja einige Denkanstöße drin, di man weiterverfolgen kann.
Gruß eBayer

Re: [Gelöst] Texteingabe: Zeichen maskieren/escapen

von Christiana » Do, 24.09.2009 10:29

Hallo eBayer,
eBayer hat geschrieben:Wenn Du die Prüfroutine aber vom Ereignis "vor der Datensatzaktion" abhängig machst, erscheint zwar brav der programmierte Fehlerhinweis, aber den Vorgang kannst Du dann nicht mehr unterbrechen!
Wenn Du dafür eine Lösung haben solltest, kannst Du sie mir ja mal verraten.
Dazu habe ich zwar noch keine fertige Lösung, nur eine noch ungetestete Idee. Schau Dir mal den ”XRowSetApproveListener“ genauer an. Er enthält die Methode ”approveRowChange“. Diese wird aufgerufen, bevor ein Datensatz eingefügt, geändert oder gelöscht wird. Da kannst Du dann Deine Prüfroutine einbauen und den Rückgabewert auf ”true“ oder ”false“ setzen, also auch die Datensatzaktion unterbrechen.
Erste und gute Erfahrungen habe ich bisher mit dem XConfirmDeleteListener und dem ”XActivationEventListener" gemacht. Auch wenn das Ganze etwas umständlich wirkt, ich bin mit den Listenern zum gewünschten Ergebnis gekommen.

Viel Erfolg wünscht Dir
Christiana

Re: [Gelöst] Texteingabe: Zeichen maskieren/escapen

von eBayer » Mi, 23.09.2009 23:01

Nochmal:
wenn ich mit einem PushButton den Speichervorgang per Makro aufrufe, kann ich natürlich prüfen und den Vorgang abbrechen.....
Wenn aber das Formular mit dem X geschlossen wird, erscheint zwar noch die Frage, ob der Vorgang gespeichert werden soll, aber wenn ich an der Stelle "Ja" sage, erfolgt die Speicherung der Daten ungeprüft.
Wenn Du die Prüfroutine aber vom Ereignis "vor der Datensatzaktion" abhängig machst, erscheint zwar brav der programmierte Fehlerhinweis, aber den Vorgang kannst Du dann nicht mehr unterbrechen!
Wenn Du dafür eine Lösung haben solltest, kannst Du sie mir ja mal verraten.
Gruß eBayer

Re: [Gelöst] Texteingabe: Zeichen maskieren/escapen

von gigabert » Mi, 23.09.2009 17:37

Hallo eBayer,

stimmt natürlich. Ich bin jetzt gerade erst soweit, dass ich so langsam zu diesen Problemen komme. Ich würde ja am liebsten die Navigation ausblenden und selbst programmieren. Aber meine "Kunden" wollen wohl gerne diese Navigationsleiste. Das mit den rotmarkierten Feldern beim Versuch zu Speichern fände ich aber auf jeden Fall eine bessere Lösung, als z.B. eine MsgBox nach Verlassen eines Eingabefeldes (Fokusverlust). Am besten wäre auch ein eigenes Modul, welches nur dafür zuständig ist. Ich werde mir das wohl nochmal genauer anschauen müssen.

Gruss
Bert

Re: [Gelöst] Texteingabe: Zeichen maskieren/escapen

von eBayer » Mi, 23.09.2009 17:24

Hallo Bert,
und was machst Du wenn jemand einfach nur über die Navigation zum nächsten Datensatz weiterblättert?
Dann hilft Dir die rote Anzeige nichts!
Wenn die Navigation allerdings abgeschaltet ist, klappt es mit der Prüfung beim schreiben...... mit EINER Ausnahme:
Schließen des Formulars über das X.... dann wird zwar noch gefragt, ob die Daten verworfen werden sollen, aber Du hast keinen direkten Einfluss mehr darauf!
Ich suche auch schon länger nach einer besseren Lösung, aber zur Zeit ist wohl keine Besserung in Sicht.
Gruß eBayer

Re: Texteingabe: Zeichen maskieren/escapen

von gigabert » Mi, 23.09.2009 16:47

Hallo,

und danke für deine Antworten. Ich werde mir zur Überprüfung der Eingaben wohl doch nochmal etwas genaueres einfallen lassen müssen. Bei den Formularen werde ich wohl eine Überprüfung am Ende (beim Speichern) vornehmen und dann die Felder farbig markieren, bei denen falsche Eingaben gemacht wurden.

Gruss
Bert

Re: Texteingabe: Zeichen maskieren/escapen

von gigabert » Di, 22.09.2009 16:24

Hallo,

es gab nur eine kleine Änderung:

Code: Alles auswählen

...
FOR position = 0 TO Len( eingabe )                  ' Zum Zeichen bei Position gehen
...
So ergab das eine Fehlermeldung ("Ungültige Prozeduraufruf"). Nachdem ich den Anfangswert von position auf 1 gesetzt hatte ging es aber problemlos. Fängt wohl bei den Zeichen mit 1 zu zählen an, und nicht mit 0. Danke jedenfalls für den Tipp. Das funktioniert nun so ganz prima.

Jetzt hätte ich aber noch eine Frage: Wie kann ich erreichen, dass bei Eingabefeldern z.B. nur Buchstaben oder Zahlen eingegeben werden dürfen? Wie macht ihr das? Ich könnte ja bei jeder Eingabe überprüfen, ob das eingegebene Zeichen den Vorgaben entspricht und dann eine MsgBox mit Fehlermeldung ausgeben. Dazu könnte ich ja gleich ein eigenes Modul zum Eingabe-Checken erstellen, da es ja in der Anwendung mehrere Formulare/Dialoge gibt, bei denen Eingaben überprüft werden. Oder gleich ein maskiertes Feld zur Eingabe nutzen. Was ist denn für den Anwender das bessere?

Gruss
Bert

Re: Texteingabe: Zeichen maskieren/escapen

von ykcim » Mo, 21.09.2009 16:32

Hi,

wenn Du nach jedem eingetippten Zeichen eine SQL-Abfrage auslöst, kannst Du doch vor der SQL-Abfrage das eingegebene Zeichen prüfen und entsprechend maskieren.

mfg
Michael

[Gelöst] Texteingabe: Zeichen maskieren/escapen

von gigabert » Mo, 21.09.2009 14:45

Hallo,

ich hab mir ja einen Suchdialog gebastelt, bei dem ich in das Eingabefeld was eintippen kann, und in der ListBox darunter dann gleich die Werte gefiltert angezeigt werden. Es wird also nach jedem eingetippten Zeichen eine neue SQL-Abfrage losgeschickt und ein ResultSet mit den gefilterten Werten geholt. Soweit klappt das auch ganz gut. Jetzt habe ich nur festgestellt, dass bei der Eingabe von einem Hochkomma (') in das Suchtext-Eingabefeld ein Fehler angezeigt wird, was mit dem abgeschickten SQL-Befehl zusammenhängt. Wie kann ich denn nun bei der Eingabe bestimmen, dass als Zeichen z.B. nur Buchstaben oder Zahlen erlaubt sind? Oder noch besser: wie kann ich das Hochkomma abfangen und maskieren/escapen? Irgendwie so etwas wie /' ? Weil es könnte ja bei gesuchten Namen auch sein, dass z.B. jemand den Namen O'Connor eingibt. Bei einem anderen Feld sollten z.B. nur Zahlen als Eingabe möglich sein.

Gruss
Bert

Nach oben