Hallo! Nach zwei Monaten Einarbeitung mit Tcl-Tk-Sqlite (nach Ousterhout wären dafür nur 2 Tage notwendig, ich staune) habe ich nun folgendes Problem beim Abspeichern eines Textes in einer Datenbank. Ich will es mit Skript-Segmenten demonstrieren:
package require sqlite3; set nDb /home/hans/p/db/p_hilfe; sqlite3 db $nDb; eine Testzeile läuft korrekt, beide Werte werden abgespeichert : db eval { INSERT INTO t (befe,synt) VALUES ("Monika","Hans")} }
Folgende Prozedur mit Fehlermeldung wird weiter unten aufgerufen: proc sp_t {} { set bN [.o.eb get];# BefehlsName aus einem Entry-Widget. set bS [.m.l.t get 1.0 end]; BefehlsSynthax aus dem Text-Widget. db eval { INSERT INTO t (befe,synt) VALUES ($bN,$bS)}
Hier Abbruch und Meldung: Applikationsfehler Fehler: invalid command name "db" Details: invalid command name "db" while executing "db eval { INSERT INTO t (befe,synt) VALUES ($bN,$bS)}" ...
Offensichtlich ist innerhalb der Prozedur der beim Aufruf von sqlite3 erzeugte neue Tcl-Befehl nicht sichtbar, da er ja oben funktioniert. Was immer ich auch versuche, ich komme nicht weiter. Nun, aller Anfang ist schwer. Ist für euch wahrscheinlich selbstverständlich, vielleicht hilft mir jemand weiter. Dank im voraus, mfg DrHaWo
Ergänzend noch Skriptsegmente zum Text- Entry-und Button-Widget, funktioniert aber alles: text .m.l.t -wid 120; pack .m.l.t -side left -padx 10; label .o.lb -text "Befehl: ";entry .o.eb -width 100; pack .o.lb .o.eb -side left -padx 3
Hier wird die obige Prozedur aufgerufen *** button .m.r.b6 -text "Speichern" -command sp_t; pack .m.r.b6 -side top -padx {30 3} -pady 3