Я искал похожие ошибки, но ничего не указывало c на мою проблему. У меня есть INSERT, который я использую, который отлично работает. Тем не менее, обновление с теми же данными дает мне эту ошибку. Кроме того, когда я запускаю SQL UPDATE за пределами Python, он работает нормально. Даже когда я ничего не изменяю и просто пытаюсь ОБНОВИТЬ то, что было возвращено мне в def view (self): это не работает.
Полная ошибка:
pypyodb c .DataError: ('22018', '[22018] [Microsoft] [ODB C SQL Драйвер сервера] [SQL Сервер] Невозможно преобразовать значение символа в деньги. Значение символа имеет неверный синтаксис. ')
def view(self):
self.cursor.execute("SELECT * from(SELECT WellID,AFEno,Accountcode,AFEAmount from WellAFEDetails "
"WHERE WellID = '111testh') d pivot(max(AFEAmount) for AccountCode in ([10102]))piv")
rows = self.cursor.fetchall()
return rows
def update(self, wellid, afeamount,accountcode):
tsql = ("UPDATE WellAFEDetails SET afeamount = ? WHERE wellid=? AND AccountCode= ?")
values = (wellid,afeamount,accountcode)
self.cursor.execute(tsql, values)
self.con.commit()
messagebox.showinfo(title="Survey", message="Survey Updated")
db = Bookdb()
def get_selected_row(event):
global selected_tuple
index = list_bx.curselection()[0]
selected_tuple = list_bx.get(index)
selected_tuple = list_bx.get(index)
wellid_entry.delete(0, 'end')
wellid_entry.insert('end', selected_tuple[0])
afeno_entry.delete(0, 'end')
afeno_entry.insert('end', selected_tuple[1])
accountcode102_entry.delete(0, 'end')
accountcode102_entry.insert('end', selected_tuple[2])
print("The text is", wellid_text.get())
print("The text is", afeno_text.get())
print("The text is", accountcode102_text.get())
print("The text is", accountcode103_text.get())
def view_records():
list_bx.delete(0, 'end')
for row in db.view():
list_bx.insert('end', row)
def clear_screen():
list_bx.delete(0,'end')
wellid_entry.delete(0,'end')
afeno_entry.delete(0,'end')
accountcode102_entry.delete(0,'end')
accountcode103_entry.delete(0,'end')
def update_records():
db.update(selected_tuple[0],accountcode102_text.get(),wellid_text.get())
wellid_entry.delete(0, "end")
afeno_entry.delete(0, "end") # Clears input after inserting
accountcode102_entry.delete(0, "end")
con.commit()