Результат базы данных передается как ноль, если он не прочитан - PullRequest
0 голосов
/ 16 марта 2011
Set rslistings = my_conn.Execute(strSQL)

Do while NOT rslistings.Eof
    description = strip(rslistings("description"))
rslistings.MoveNext
loop

В полосе - NULL передается. Однако, если я присоединяю отладчик и проверяю содержимое rslistings («описание»), то фактический объект Field пропускается через

Это довольно старый код asp, но он работает на IIS6, только не на IIS7

РЕДАКТИРОВАТЬ Это происходит только в поле "описание" с типом текста (база данных MySQL)

полоска ничего не делает:

If NOT IsNull(passedinvalue) Then 
    // do something
Else
    // do something else

Если я назову strip like strip (rs ("description")), она никогда не будет нулевой, поскольку объект Field передается. Если я назначаю его другому значению, то передаю его (например, strip (mynewvar)), затем правильное значение передается в.

Редактировать - биты базы данных, как указано ниже

Set my_conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
my_conn.Open "DSN=mydb"

SQL

Set rs = my_conn.Execute("SELECT description FROM table")

Ответы [ 2 ]

1 голос
/ 22 марта 2011

Коллекция полей является элементом по умолчанию для объекта Recordset.

, так же как и свойство value для объекта Field.

, поэтому следующие два оператора кода эквивалентны.

Debug.Print objRs.Fields.Item(0)  ' Both statements print 
Debug.Print objRs(0)              '  the Value of Item(0).

разница, если вы присваиваете значение переменной или используете его в качестве параметра в функции.

0 голосов
/ 16 марта 2011

@ Пол: Если strip не проверяет, является ли description значением NULL, прежде чем работать с ним, вы можете сделать это -

Do while NOT rslistings.Eof
    description = rslistings("description")

    If NOT IsNull(description) Then 
        description = strip(description)
    Else
        description = "" ' or you could have description = " " 
                         ' if you output to screen later on
    End If
rslistings.MoveNext
loop
...