1

I am going to make student registration form in which student will also need to enter their. But when I enter the photo it gives error on

button=tk.Button(frame,command=stdreg(f1))

this line and

cursor.execute('insert into studentreg(name,fname,email,pass,cpass,phone,photo)values(?,?,?,?,?,?,?)',(name1,ffname,ema,pas,cpas,p,data))

pyodbc.DataError: ('22003', '[22003] [Microsoft][ODBC SQL Server Driver][SQL Server]Arithmetic overflow error converting expression to data type int. (8115) (SQLParamData); [22003] [Microsoft][ODBC SQL Server Driver][SQL Server]The statement has been terminated. (3621)')

this also .

import tkinter as tk
from tkinter import messagebox
from tkinter import ttk
from tkinter import re
from PIL import Image,ImageTk
import tkinter.font as font
from tkinter import filedialog
import pyodbc
HEIGHT=650
WIDTH=800

root=tk.Tk()
root.title("Admin Registration")

canvas = tk.Canvas(root, height=HEIGHT, width=WIDTH)
canvas.pack()

def stdreg(path):
    name1=textname.get()
    fname=father_name.get()
    ema=Email.get()
    pas=Password.get()
    cpas=Confirm_Password.get()
    p=int(phno.get())
    with open(path,'rb') as f:
        data=f.read()

    conn = pyodbc.connect('Driver={SQL 
    Server};''Server=SHUMAILA\SHUM;''Database=FYP;''Trusted_Connection=yes;')
    cursor=conn.cursor()
    cursor.execute('insert into 
    studentreg(name,fname,email,pass,cpass,phone,photo)values(?,?,?,?,?,?,?)', 
    (name1,fname,ema,pas,cpas,p,data))
    messagebox.showinfo("Message","You are successfully registered!") 
    conn.commit()

load=Image.open('reg.png')
render=ImageTk.PhotoImage(load)
img=tk.Label(image=render)
img.image=render
img.place(relwidth=1, relheight=1)

frame = tk.Frame(root, bg='#33BEFF', bd=5)
frame.place(relx=0.1, rely=0.1, relwidth=0.8, relheight=0.8)

Fontlabel = font.Font(family='Helvetica', size=25, weight='bold')
label=tk.Label(frame,text="Student Registration Form",bg="#33BEFF",fg='navy')
label['font']=Fontlabel
label.pack()

#logo image
load_image=Image.open('l.png')
render=ImageTk.PhotoImage(load_image)
imgg=tk.Label(image=render)
imgg.image=render
imgg.place(relx=0.40,rely=0.20)

string=tk.StringVar()
label1=tk.Label(frame,text="Name:",font=20,bg="#33BEFF")
label1.place(relx=0.30,rely=0.35)
textname=ttk.Entry(frame,textvariable=string,text="")
textname.place(relx=0.53,rely=0.35)

label2=tk.Label(frame,text="Father Name:",font=20,bg="#33BEFF")
label2.place(relx=0.30,rely=0.41)
father_name=ttk.Entry(frame,textvariable=string,text="")
father_name.place(relx=0.53,rely=0.41)

label3=tk.Label(frame,text="Email Address:",font=20,bg="#33BEFF")
label3.place(relx=0.30,rely=0.47)
Email=ttk.Entry(frame,textvariable=string,text="")
Email.place(relx=0.53,rely=0.47)

label4=tk.Label(frame,text="Password:",font=20,bg="#33BEFF")
label4.place(relx=0.30,rely=0.53)
Password=ttk.Entry(frame,textvariable=string,text="",show='*')
Password.place(relx=0.53,rely=0.53)

label5=tk.Label(frame,text="Confirm Password:",font=20,bg="#33BEFF")
label5.place(relx=0.30,rely=0.59)
Confirm_Passwordd=ttk.Entry(frame,textvariable=string,text="",show='*')
Confirm_Passwordd.place(relx=0.53,rely=0.59)

label6 = tk.Label(root, text="Phone Number:", font=20, bg="#33BEFF")
label6.place(relx=0.34,rely=0.61)


phno = ttk.Entry(root, textvariable=string, text="",validate='key', validatecommand=(reg, '%P'))
phno.place(relx=0.52,rely=0.61)
phno.focus_set()

def photo():
    filepath=filedialog.askopenfilename()
    f1=str(filepath)
    # filepath.pack()
    stdfilee=Image.open(filepath)
    stdshow=ImageTk.PhotoImage(stdfilee)
    imageshow=tk.Label(image=stdshow)
    image_show.image=stdshow
    image_show.place(relx=0.70,rely=0.20)

    myFont = font.Font(family='Helvetica', size=10, weight='bold')
    button=tk.Button(frame,text="Sign Up",bg='#FF6E33') 
    button['font']=myFont
    button.place(relx=0.40,rely=0.8,relwidth=0.25,relheight=0.10)
    button=tk.Button(frame,command=stdreg(f1))
    #button=tk.Button(frame,command=std_register(f1))


label7=tk.Label(frame,text="Add your photo:",font=20,bg="#33BEFF")
label7.place(relx=0.30,rely=0.70)


photo=ttk.Entry(frame,textvariable=string,text="",)
photo.place(relx=0.53,rely=0.70)

browser=tk.Button(root,text="Browse here",command=photo)
browser.place(relx=0.69,rely=0.65)

root.mainloop()


the output should be  " You are successfully registered!"
Scott
  • 4,974
  • 6
  • 35
  • 62
Super
  • 23
  • 1
  • 8

1 Answers1

1

So in the line p=int(phno.get()), you're trying to convert phno to int. I suspect the phone number you're entering isn't a valid integer (maybe it's formatted like 123-456-7890 or whatever.)

The solution would be to either not casting the phone number as an int, or to do some pre-processing to strip out all non-digit characters before casting.

Yifan Lu
  • 64
  • 1