Код, который я использовал для отладки другой проблемы, вызвал мою проблему.В частности, я неправильно понял семантику передачи и назначения параметров VBScript.
Вот код, который выполняет оператор вставки:
insert_statement = INSERT INTO [RemitChangeControl].[dbo].[FormData]" & vbcrlf _
& "VALUES " & vbcrlf _
& join(value_clauses.Items, "," & vbcrlf) & ";"
write_to_web_page insert_statement ' OOPS!
objconn.Execute insert_statement
Вот функция, которую он вызывал:
sub write_to_web_page(s)
' assigment to s mutates it!
s = Replace(Server.HTMLEncode(s), vbcrlf, "<br />")
response.write("<p>" & t & "</p>")
end sub
Когда я передаю insert_statement
на write_to_web_page
, это передается по ссылке.Когда я переназначаю результат Replace
в локальную переменную, он изменяется в вызывающей программе, в результате чего insert_statment
содержит число "<br />"
.Это то, что я получаю за ожидание семантики присваивания Python в VBScript.
Я, наконец, понял это, урезая свой код до нужного размера, чтобы конкретизировать мой вопрос здесь.Удивительно, но мой маленький пример не показал ошибку.Затем я вставил вызовы на write_to_web_page
, чтобы выяснить, что происходит.Потом моя ошибка снова появилась, и лампочка загорелась.