pypyodb c .DataError: ('22018', '[22018] [Microsoft] [ODB C SQL Драйвер сервера] [SQL Сервер] - PullRequest
0 голосов
/ 31 января 2020

Я искал похожие ошибки, но ничего не указывало 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...