【发布时间】:2020-03-02 14:26:35
【问题描述】:
我已经解决了这个脚本的一些问题,但这个问题目前正在阻止我死在我的轨道上。它甚至不再返回错误,从我收集的信息来看,它应该可以工作,我处于“这不应该发生”阶段。我对 python 很陌生,但每天都在学习,迫不及待地想通过这条路来创造很棒的东西!
如果没有 fselemptext = ("'" + selemptext + "'"),我也遇到了同样的错误,通常你需要 MSSQL 上的引号,我想我也需要在这里添加它们。如果我按原样查询并替换 ?通过“用户名”,它可以完美运行。
import tkinter as tk
from tkinter import *
from tkinter import ttk
import pyodbc
import pandas as pd
root = Tk()
root.title('ONE')
root.iconbitmap('Y:\APPLICATIONS\ICONS\ONE_icon.ico')
root.geometry("1700x1000")
frm = Frame(root)
server = 'GDLAP009'
database = 'cwwebapp_gdl'
username = 'reporting'
password = '########'
conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+'; DATABASE='+database+';UID='+username+';PWD='+ password)
c = conn.cursor()
query = (""" SELECT
Time_Sheet.Time_Sheet_RecID,
Time_Sheet.TE_Period_RecID,
TE_Period.Period,
TE_Period.Date_Start,
TE_Period.Date_End,
Time_Sheet.Member_RecID,
Time_Sheet.TE_Status_ID,
Member.Member_ID
FROM Time_Sheet
INNER JOIN Member ON Time_Sheet.Member_RecID = Member.Member_RecID
INNER JOIN TE_Status ON Time_Sheet.TE_Status_ID = TE_Status.TE_Status_ID
INNER JOIN TE_Period ON Time_Sheet.TE_Period_RecID = TE_Period.TE_Period_RecID
WHERE Member.Member_ID LIKE ? """)
def searchemp():
c.execute(query, (fselemptext))
erecords = c.fetchall()
c.close()
return erecords
for record in erecords:
tv.insert('', 'end', values=record)
yoptions = ["2016", "2017", "2018", "2019", "2020"]
clky_b = StringVar()
clky_b.set(yoptions[4])
drpy_l = Label(root, text="Select Year")
drpy_l.grid(row=0, column=2, padx=20, pady=10)
drpy_b = OptionMenu(root, clky_b, *yoptions)
drpy_b.grid(row=0, column=3, padx=20, pady=10, columnspan=2)
emptext = StringVar()
sele_l = Label(root, text="Select Employee")
sele_l.grid(row=0, column=0, padx=20, pady=10)
sele_e = Entry(root, width=30, textvariable=emptext)
sele_e.grid(row=0, column=1, padx=20, pady=10)
emptext.set("Default Value")
selemptext = emptext.get()
fselemptext = ("'" + selemptext + "'")
runq_b = Button(root, text="Run Query", command=searchemp)
runq_b.grid(row=0, column=5, columnspan=2, padx=20, pady=10, ipadx=100)
frm.grid(row=50, column=0, padx=20, columnspan=8)
tv = ttk.Treeview(frm, columns=(1,2,3,4,5,6,7,8), show="headings", height="45")
tv.pack()
tv.heading(1, text="Name")
tv.heading(2, text="Time")
tv.heading(3, text="Test1")
tv.heading(4, text="Test2")
tv.heading(5, text="Test3")
tv.heading(6, text="Test4")
tv.heading(7, text="Test5")
tv.heading(8, text="Test6")
root.mainloop()
【问题讨论】:
-
for record in erecords:由于return erecords,这个循环永远不会被执行 -
对不起,被评论了,又忘记了,即使没有它,它也不起作用