2013-03-24 85 views
2

我不斷收到此pyodbc驅動程序錯誤,我無法修復它,任何人都可以幫助嗎?我使用微軟訪問pyqt4作爲數據存儲庫。忽略任何狡猾的縮進。PYQT4-pyodbc驅動程序錯誤

這裏是我的錯誤:

Traceback (most recent call last): 
File "F:\computing\Payroll v2 2\mainwindow.py", line 53, in loadUpcomingBirthdaysForm 
self.ui.upcomingBirthdaysForm = UpcomingBirthdays.UpcomingBirthdays() 
File "F:\computing\Payroll v2 2\UpcomingBirthdays.py", line 22, in __init__ 
cursor.execute("select Forename,Surname,DOB from employees where (DOB=?))",9) 
pyodbc.Error: ('HYC00', '[HYC00] [Microsoft][ODBC Microsoft Access Driver]Optional feature not implemented (106) (SQLBindParameter)') 

這裏是我的代碼:

from PyQt4 import uic 
from PyQt4 import QtCore,QtGui 
import validation 
import pyodbc 
import datetime 

(Ui_UpcomingBirthdays, QMainWindow) = uic.loadUiType('UpcomingBirthdays.ui') 

class UpcomingBirthdays (QMainWindow): 
"""Upcoming Birthdays inherits QMainWindow""" 

def __init__ (self, parent = None): 
    QMainWindow.__init__(self, parent) 
    self.ui = Ui_UpcomingBirthdays() 
    self.ui.setupUi(self) 
    today = datetime.date.today() 
    thismonth= int(today.strftime("%m")[0:2]) 
    thisday= int(today.strftime("%d")[0:2]) 
    cnxn = pyodbc.connect('Driver={Microsoft Access Driver (*.mdb, *.accdb)}; Dbq=F:\\computing\\Payroll v2 2\\employees.accdb') 
    cursor = cnxn.cursor() 
    cursor.execute("select Forename,Surname,DOB from employees where (DOBmonth=?))",thismonth) 
    residentList = cursor.fetchall() 
    cnxn.close() 
    self.ui.residentTableWidget.setRowCount(0) 
    for item in residentList: 
     print (item) 
     rowcount = self.ui.residentTableWidget.rowCount() 
     self.ui.residentTableWidget.insertRow(rowcount) 
     self.ui.residentTableWidget.setItem(rowcount,0,QtGui.QTableWidgetItem(str(item[0]))) 
     self.ui.residentTableWidget.setItem(rowcount,1,QtGui.QTableWidgetItem(str(item[1]))) 
     self.ui.residentTableWidget.setItem(rowcount,2,QtGui.QTableWidgetItem(str(item[2]))) 







def __del__ (self): 
    self.ui = None 

回答

3

我想通了,故障出在下面一行:

cursor.execute("select Forename,Surname,DOB from employees where (DOBmonth=?))",thismonth) 

我應該已將「thismonth」變量改爲一個字符串,例如

str(thismonth)) 
+0

看起來在該行還有一個額外的括號。不要忘記你可以接受你自己的答案。 – Bryan 2013-03-26 14:52:49