Ошибка преобразования типа данных varchar в числовой с использованием POST в форме .asp - PullRequest
0 голосов
/ 26 октября 2018

У меня есть следующий фрагмент кода, обрабатывающий форму с использованием POST на классической веб-странице .asp:

<%
update_LotNo = Replace(Request.Form, "&lotno=", ",")
update_LotNo = Replace(strIDs, "lotno=", "")

update_Qty = Replace(Request.Form, "&qty=", ",")
update_Qty = Replace(strIDs, "qty=", "")

update_Building = Replace(Request.Form, "&bldng=", ",")
update_Building = Replace(strIDs, "bldng=", "")

set DoModify = Server.CreateObject("ADODB.Command")
DoModify.ActiveConnection = MM_StockAccDB_STRING
DoModify.CommandText = "UPDATE tbl_stock_at_locations SET lotno_sal = '" & update_LotNo & "%', building_sal = '" & update_Building & "%', qty_sal = '" & update_Qty & "%' WHERE Lotno_SAL LIKE '" & update_LotNo & "%'"
'DoDelete.CommandType = 1
'DoDelete.CommandTimeout = 0
'DoDelete.Prepared = true
DoModify.Execute()
Response.Redirect("coe_in2.asp?8812901")
%>   

Это сообщение об ошибке, которое я получаю:

Поставщик Microsoft OLE DB для драйверов ODBC, ошибка '80040e07'

[Microsoft] [Драйвер ODBC SQL Server] [SQL Server] Ошибка преобразования типа данных varchar в числовой.

Очевидно, что в качестве конечного результата я бы хотел обновить запись строками формы.

Я новичок в SQL, поэтому прошу прощения, если это очень простой вопрос ...

1 Ответ

0 голосов
/ 27 октября 2018

Глядя на первую часть вашего запроса на обновление

"UPDATE tbl_stock_at_locations SET lotno_sal = '" & update_LotNo & "%',

Я почти уверен, что символа% там не должно быть,% - это подстановочный знак, который вы используете для поиска строк, выне хочу на самом деле записать это в поле.Я бы тоже потерял одинарные кавычки, и в VBScript есть функция, которая преобразует строки в числа, cint().

Собирая все это вместе и предполагая, что qty_sal также является числовым полем, измените ваш запрос на

"UPDATE tbl_stock_at_locations SET lotno_sal = " & cint(update_LotNo) & ", building_sal = '" & update_Building & "', qty_sal = " & cint(update_Qty) & " WHERE Lotno_SAL LIKE '" & update_LotNo & "%'"

Я также рекомендую вам взглянуть на некоторые учебники, включающие базы данных и классический asp, вместо того, чтобы использовать Dreamweaver для генерации вашего кода, код DW ужасен.Если это касается клиентов, вам следует изучить параметризованные запросы, в противном случае вы можете оказаться уязвимыми для атаки SQL-инъекцией

...