Hallo zusammen,
ich versuche gerade meine erste tkinter-Programmierung und habe das Problem, dass das sql-Statement nur leere Strings in die sqlite3-Datenbank überträgt. Leider verstehe ich noch nicht woran das liegt.
sql-Befehl:
def AddToDataBase(id_value, customer_id_value, customer_name_value, customer_lob_value, case_id_value, case_title_value, case_reportingdate_value, case_closingdate_value, source_name_value):
connection = sqlite3.connect("database.db")
cursor = connection.cursor()
row = (id_value,
customer_id_value, customer_name_value, customer_lob_value, case_id_value, case_title_value, case_reportingdate_value, case_closingdate_value, source_name_value)
command = """ INSERT INTO database
VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)
"""
cursor.execute(command, row)
connection.commit()
connection.close()
Variabeln:
id_value = tk.StringVar()
customer_id_value = tk.StringVar()
customer_name_value = tk.StringVar()
customer_lob_value = tk.StringVar()
case_id_value = tk.StringVar()
case_title_value = tk.StringVar()
case_reportingdate_value = tk.StringVar()
case_closingdate_value = tk.StringVar()
source_name_value = tk.StringVar()
[Über Entry-Felder werden die Daten dann abgefragt]
id_value_ = id_value.get()
customer_id_value_ = customer_id_value.get()
customer_name_value_ = customer_name_value.get()
customer_lob_value_ = customer_lob_value.get()
case_id_value_ = case_id_value.get()
case_title_value_ = case_title_value.get()
case_reportingdate_value_ = case_reportingdate_value.get()
case_closingdate_value_ = case_closingdate_value.get()
source_name_value_ = source_name_value.get()
Ausführen über den Button:
save_new_buttom = ttk.Button(self, text="Neuer Fall", command = AddToDataBase(id_value_, customer_id_value_, customer_name_value_, customer_lob_value_, case_id_value_, case_title_value_,
case_reportingdate_value_, case_closingdate_value_, source_name_value_))
save_new_buttom.grid(row=6, column=2)
Ich hoffe ihr könnt mir relativ einfach helfen.
Vielen Dank schon einmal und viele Grüße
Daniel
Daten in Datenbank erfassen schlägt fehl
Die ganzen value-Suffixe können weg. Alles ist irgendwie ein Wert. Das behindert nur das Lesen und bietet keinen Mehrwert.
Du fragst die Werte sofort nach dem Erzeugen der Eingabefeld ab. Da steht natürlich noch nichts drin. Außerdem rufst du die Funktion zum Speichern schon beim Erzeugen des Knopfs auf und nicht erst beim Drücken.
Du fragst die Werte sofort nach dem Erzeugen der Eingabefeld ab. Da steht natürlich noch nichts drin. Außerdem rufst du die Funktion zum Speichern schon beim Erzeugen des Knopfs auf und nicht erst beim Drücken.
Vielen Dank, Sirius3.
den zweiten Teil habe ich verstanden um umgesetzt. Den ersten Teil mit dem Eingabefeld ist mir leider noch nicht klar.
Ich habe die Variablen deklariert und mit StringVar verbunden.
id_value = tk.StringVar()
Dann baue ich die Eingabemaske auf (so in dem Stil):
id_label = ttk.Label(self, text="ID: ")
id_label.grid(row=0, column=0, sticky="W")
id_entry = ttk.Entry(self, width=15, textvariable=id_value)
id_entry.grid(row=0, column=1, sticky="EW")
Die textvariable greife ich dann ab:
id_value_ = id_value.get()
und will sie dann an die Command weiter geben. Wo muss ich da etwas ändern damit kein Leerstring dabei abgelegt wird?
Vielen Dank!!!
Viele Grüße
Daniel
den zweiten Teil habe ich verstanden um umgesetzt. Den ersten Teil mit dem Eingabefeld ist mir leider noch nicht klar.
Ich habe die Variablen deklariert und mit StringVar verbunden.
id_value = tk.StringVar()
Dann baue ich die Eingabemaske auf (so in dem Stil):
id_label = ttk.Label(self, text="ID: ")
id_label.grid(row=0, column=0, sticky="W")
id_entry = ttk.Entry(self, width=15, textvariable=id_value)
id_entry.grid(row=0, column=1, sticky="EW")
Die textvariable greife ich dann ab:
id_value_ = id_value.get()
und will sie dann an die Command weiter geben. Wo muss ich da etwas ändern damit kein Leerstring dabei abgelegt wird?
Vielen Dank!!!
Viele Grüße
Daniel