Bonjour,


Nom : 2018-05-27_19h37_50.png
Affichages : 833
Taille : 3,9 Ko

J'ai créé une base de données sql serveur jusqu'à la tout va bien, j'arrive à afficher mes données dans la listbox de tkinter.

Nom : 2018-05-27_19h39_38.png
Affichages : 1044
Taille : 23,0 Ko

Après avoir sélectionner une ligne dans ma listbox je n'arrive pas à récupérer la valeur du champ PartDescription, celui-ci affiche les
2 premiers caractères du champ ID ?


backend.py

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
 
import pyodbc
 
 
class Database:
 
    def __init__(self, db):
 
        self.conn = pyodbc.connect(db)
        self.cur = self.conn.cursor()
        self.cur.execute("SELECT * FROM dbo.tblPartMain")
        self.conn.commit()
 
 
 
    def view(self):
        self.cur.execute("SELECT * FROM dbo.tblPartMain")
        rows = self.cur.fetchall()
        return rows
 
    def search(self, PartDescription="", MfrPartNumber=""):
        self.cur.execute("SELECT * FROM dbo.tblPartMain WHERE PartDescription=? OR MfrPartNumber=?", PartDescription, MfrPartNumber)
        rows=self.cur.fetchall()
        return rows
 
 
    def __del__(self):
        self.conn.close()

frontend.py

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 
 
from tkinter import *
from backend import Database
 
database = Database('DRIVER={ODBC Driver 13 for SQL Server};SERVER=XD\SQLEXPRESS;user=XD*****\X****,'
      'password="";Trusted_Connection=yes;DATABASE=bdd_doce')
 
 
 
 
def get_selected_row(event):
    global selected_tuple
    index = list1.curselection()[0]
    selected_tuple = list1.get(index)
    e1.delete(0, END)
    e1.insert(END, selected_tuple[1])
    e2.delete(0, END)
    e2.insert(END, selected_tuple[2])
 
 
 
def view_command():
    list1.delete(0,END)
    for row in database.view():
        list1.insert(END,row)
 
def search_command():
    list1.delete(0,END)
    for row in database.search(PartDescription_text.get(), MfrPartNumber_text.get()):
        list1.insert(END, row)
 
window = Tk()
 
window.wm_title("Liste de Pièces")
 
l1 = Label(window, text="PartDescription")
l1.grid(row=0, column=0)
 
l2 = Label(window, text="MfrPartNumber")
l2.grid(row=0, column=2)
 
 
PartDescription_text=StringVar()
e1 = Entry(window, textvariable=PartDescription_text)
e1.grid(row=0, column=1)
 
MfrPartNumber_text=StringVar()
e2=Entry(window, textvariable=MfrPartNumber_text)
e2.grid(row=0,column=3)
 
 
 
list1=Listbox(window, height=6, width=35)
list1.grid(row=2, column=0, rowspan=6,columnspan=2)
 
sb1=Scrollbar(window)
sb1.grid(row=2,column=2, rowspan=6)
 
list1.configure(yscrollcommand=sb1.set)
sb1.configure(command=list1.yview)
 
list1.bind('<<ListboxSelect>>', get_selected_row)
 
b1 = Button(window,text="Lister Pièces", width=12, command=view_command)
b1.grid(row=2, column=3)
 
b2 = Button(window,text="Rechercher", width=12, command=search_command)
b2.grid(row=3, column=3)
 
 
window.mainloop()
Comment puis je récupérer cette valeur sachant que cela fonctionne avec une base de données sqlite ?
Merci pour votre aide