Mein erstes Posting, natürlich gleich eine Frage, an der ich mir den Kopf zerbreche.
Verbindung zur MySQL-Datenbank steht, Abfrage und Anzeige auch.
ID ist eindeutiges unique Feld.
Windows10, Qt4, Python 2.7
Es geht um ein kleines Programm, mit Qt-Oberfläche zur Anzeige von Konto-Buchungsdaten.
Anzeige soweit ok, möchte nun aber über eine ComboBox Kategorien zu den einzelnen Buchungen vergeben.
Update der Kategorie und schreiben in Datenbank klappt auch.
Aber:
Ich möchte, wenn ich den Datensatz mit der eindeutigen ID, z.B. "186", geändert und gespeichert habe,
diesen Datensatz mit dieser ID (und der aktuellen Kategorie) aktualisiert anzeigen. Auch wenn ich mal über
die beiden Button "vor" und "zurück" durch die Ergebnismenge von fetchall steppe.
Ich könnte das Abfrageergebnis mit "reihe = cursor.execute(sql)" aktualisieren.
Dann würde wieder der erste Datensatz angezeigt werden. Es soll aber der gerade geänderte wieder angezeigt werden.
Also wie bekomme ich aus meiner Abfragemenge (Liste der Datensätze) wieder den Datensatz mit der ID "186" vorgesetzt, sprich lokalisiert?
Muss ich manuell durch die Ergebnismenge der Abfrage iterieren bis ich ID gefunden habe? Oder geht das auch anders?
Code: Alles auswählen
db = pymysql.connect("localhost","root","aktPW","di" )
cursor= db.cursor()
sql = "SELECT datum, vz,ag,bt,kat,betrag,saldo,id,info FROM ba ORDER BY id DESC LIMIT 50"
reihe = cursor.execute(sql)
results = cursor.fetchall()
Code: Alles auswählen
def nachsterDatensatz():
global reihe
global i
if i < reihe-1:
i = i + 1
anzeige()
def vorherigerDatensatz():
global reihe
global i
if i > 0 :
i = i -1
anzeige()
def anzeige():
global i
#datum, vz,ag,bt,kat,betrag,saldo,id,info
w.lineEdit1.setText(str(results[i][0])) #datum
w.lineEdit2.setText(str(results[i][1])) #vz
w.lineEdit3.setText(str(results[i][2])) #ag
w.lineEdit4.setText(str(results[i][3])) #bt
w.lineEdit5.setText(str(results[i][4])) #kat
w.lineEdit6.setText(str(results[i][5])) #betrag
w.lineEdit7.setText(str(results[i][6])) #saldo
w.Label1.setText(str(results[i][7])) #ID
w.lineEdit8.setText(str(results[i][8])) #info
w.comboBox1.setEditText(str(results[i][4])) #kat
Code: Alles auswählen
procedure THauptformular.EditFuellen(id:string);
var
SearchOptions: TLocateOptions;
begin
SearchOptions := [loPartialKey];
query.Locate('ID',id,SearchOptions);
CbbKST.Text := query.FieldByName('KST').AsString;
Gibt es sowas wie ein cursor.Locate(ID,"186") ?
Danke für Hilfe
