VBScript: Передача параметра с нулевым значением к хранимой процедуре?

Ничего себе, эта проблема популярна. Это основано на недоразумении в vertical-align свойство. Эта превосходная статья объясняет его:

Понимание vertical-align, или, "Как (Не) Вертикально Центрировать Содержание" Gavin Kistner.

“How для центрирования в CSS” является большим веб-инструментом, который помогает найти необходимый CSS, центрируя атрибуты для различных ситуаций.

Вкратце (и предотвратить гниль ссылки) глоток> :

  • Встроенные элементы [только 1 113] встроенные элементы) могут быть вертикально выровненные в их контексте через vertical-align: middle. Однако “context” isn’t общая высота родительского контейнера, it’s высота текстовой строки they’re в. jsfiddle пример
  • Для элементов блока, выравнивание по вертикали более трудно и сильно зависит от определенной ситуации:
    • , Если внутренний элемент может иметь зафиксированная высота , можно сделать ее положение absolute и определить ее height, margin-top и top положение. jsfiddle пример
    • , Если элемент в центре состоит из одной строки и , его родительская высота фиксируется , можно просто установить container’s line-height для заполнения его высоты. Этот метод довольно универсален, по моему опыту. jsfiddle пример
    • †¦ существует больше таких особых случаев.

11
задан Cade Roux 22 July 2009 в 03:48
поделиться

3 ответа

Если вы Для построения строк и проверки / защиты от SQL-инъекций вы можете просто использовать слово null в своей строке SQL или оператор EXEC с разделителями-запятыми.

'calling a stored proc.
strSQL = "EXEC UpdateCustomer @CustomerID=" & iCustomerID + ",@PhoneNumber=null"

Вот как использовать null в созданной вручную строке для отправки в БД

strSQL = "UPDATE Customer SET PhoneNumber = null WHERE CustomerID = " + iCustomerID
2
ответ дан 3 December 2019 в 06:46
поделиться

Передача null в хранимую процедуру с использованием объекта команды.

Set cn = CreateObject("ADODB.Connection")
Set cmd = CreateObject("ADODB.Command")
cn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Data Source=.\Test"
Set cmd.ActiveConnection = cn
cmd.CommandText = "TestTable.sp_ModifyData"
cmd.CommandType = 4
cmd.NamedParameters = True

set cnParam = cmd.CreateParameter("@RowID",3,3,,-1)
cmd.Parameters.Append cnParam
set cnParam = cmd.CreateParameter("@AddRemoveModify",3,1,,0)
cmd.Parameters.Append cnParam
set cnParam = cmd.CreateParameter("@Value1",3,1,,0)
cmd.Parameters.Append cnParam
set cnParam = cmd.CreateParameter("@Value2",8,1,-1,"Test")
cmd.Parameters.Append cnParam
set cnParam = cmd.CreateParameter("@value3",5,1,,null)
cmd.Parameters.Append cnParam
set cnParam = cmd.CreateParameter("@value4",5,1,,0)
cmd.Parameters.Append cnParam
set cnParam = cmd.CreateParameter("@value5",8,1,-1,"")
cmd.Parameters.Append cnParam
cmd.Execute
cn.Close
Set cmd = Nothing
Set cn = Nothing

Извините, я не особо задумывался над присвоением имен полям в моей базе данных.

10
ответ дан 3 December 2019 в 06:46
поделиться

Попробуйте vbNullString или vbNullChar. Вам также может понадобиться adParamNullable.

set cnParam = cmd.CreateParameter("@value3",5,1,,vbNullString)  
cnParam.Attributes = adParamNullable  
cmd.Parameters.Append cnParam

Обновление:

На самом деле это сработало для меня:

set cnParam = cmd.CreateParameter("@value3",5,1,,Null)  
cnParam.Attributes = adParamNullable  
cmd.Parameters.Append cnParam

Да, это тоже сработало:

set cnParam = cmd.CreateParameter("@value3",5,1,,Null)  
cmd.Parameters.Append cnParam

Пойдем, набери.

4
ответ дан 3 December 2019 в 06:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: