首页 > 解决方案 > 有没有办法解决我遇到的这个错误?

问题描述

这是我程序的前端。这是一个从表中删除一组记录的函数。它给了我这个错误:project1Database.deleteRec(sd[0]) NameError: name 'sd' is not defined。我知道这可能是一个小错误,因为我还是编码新手,所以任何事情都可以提供帮助。

def EmployeeRec(event):
    global sd
    searchEmp = employeelist.curselection()[0]
    sd = employeelist.get(searchEmp)
 
    self.txtEmpID.delete(0,END)
    self.txtEmpID.insert(0,sd[1])

    self.txtFirstname.delete(0,END)
    self.txtFirstname.insert(END,sd[2])

    self.txtMiddlename.delete(0,END)
    self.txtMiddlename.insert(END,sd[3])

    self.txtLastname.delete(0,END)
    self.txtLastname.insert(END,sd[4])

    self.txtDob.delete(0,END)
    self.txtDob.insert(END,sd[5])

    self.txtNationality.delete(0,END)
    self.txtNationality.insert(END,sd[6])

    self.txtNI.delete(0,END)
    self.txtNI.insert(END,sd[7])

    self.txtAddres.delete(0,END)
    self.txtAddres.insert(END,sd[8])

    self.txtPostcode.delete(0,END)
    self.txtPostcode.insert(END,sd[9])

    self.txtphonenumber.delete(0,END)
    self.txtphonenumber.insert(END,sd[10])

    self.txtEmail.delete(0,END)
    self.txtEmail.insert(END,sd[11])

    self.txtPassportnumber.delete(0,END)
    self.txtPassportnumber.insert(END,sd[12])

    self.txtPassportexpirydate.delete(0,END)
    self.txtPassportexpirydate.insert(END,sd[13])

    self.txtgender.delete(0,END)
    self.txtgender.insert(END,sd[14])
 

def deleteData():
    if(len(EmpID.get())!=0):
        project1Database.deleteRec(sd[0])
        clearData()
        displayData()

这是后端。这是我的程序的表格。

import sqlite3

#backend

def employeeData():
    conn = sqlite3.connect('projectv4.db')
    c= conn.cursor()

    c.execute("""CREATE TABLE IF NOT EXISTS employee(EmployeeID INTEGER PRIMARY KEY,EmpID text,
    Firstname text,Middlename text, Lastname text,
    Dob text, Nationality text, NI text, Addres text, Postcode text,  phonenumber text,
    Email text, Passportnumber text, Passportexpirydate text,
   gender text)""")
    conn.commit()
    conn.close()

这是我试图从我的前端调用的函数:

def deleteRec(EmployeeID):
    conn = sqlite3.connect('projectv4.db')
    c= conn.cursor()
    c.execute("DELETE FROM employee WHERE EmployeeID = ?", (EmployeeID,))
    conn.commit()
    conn.close()

标签: pythondatabasesqlite

解决方案


deleteDatasd在初始化之前。假设您的意思与 in 相同的全局变量EmployeeRec,您需要明确声明它是全局的:

def deleteData():
             
    if(len(EmpID.get())!=0):
        global sd #here!
        project1Database.deleteRec(sd[0])

        clearData()

        displayData()

推荐阅读