2013-10-05 4 views
0

Пожалуйста, смотрите ниже DDL:Recordset .value недвижимость

CREATE TABLE TestDate (bookingdate datetime) 
INSERT INTO TestDate VALUES ('2013-10-04') 

Пожалуйста, смотрите ниже ADODB записей:

rs.open "SELECT bookingdate FROM TestDate" 
If rs("bookingdate") > dateadd("yyyy", -6, Now) 
    msgbox("test") 
end if 

В чем разница между указанием rs("bookingdate") и rs("bookingdate").value. Я прочитал несколько вопросов здесь, где ответчики говорят, что всегда используют .value, но это не объяснено почему. Я посмотрел на MSDN, но не нашел ответа.

+0

«Почему» - тот же фактор риска, который участвует в любом использовании свойства по умолчанию. Люди беспечно проигнорируют это и уйдут с ним в 99 раз из 100, а затем в 100-й раз укусят HARD очень сложно диагностировать ошибку. – Bob77

ответ

1

Value является default property от Field объекта, так что в VB6 нет никакой разницы между rs("bookingdate") и rs("bookingdate").valuewhen used without Set.

Я лично предпочитаю не использовать свойства по умолчанию, которые не принимают параметры. Он составляет код less confusing IMO.

В VB.NET свойство по умолчанию должно иметь параметр, поэтому эта ситуация не возникает.
Примечание Recordset имеет такое свойство по умолчанию с параметром, и вы используете его для возврата объекта Field: rs("bookingdate") на самом деле rs.Item("bookingdate"). Использование этих ИМО не наносит вреда.

+0

SET включает в себя управление ссылкой в ​​соответствии с вашей ссылкой. Это верно? – w0051977

+0

@ w0051977 Да, это связано с манипулированием ссылкой. Например. вы можете объявить переменную 'f' типа' Field' и 'Set f = rs (" bookingdate ")'. – GSerg

+0

Неправда. Существует много случаев, когда 'Set' не является фактором, например, когда вы передаете выражение в качестве аргумента некоторой процедуре. – Bob77

Смежные вопросы