2011-03-16 32 views
0
Set rslistings = my_conn.Execute(strSQL) 

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

在strip中 - 正在傳遞NULL。但是,如果我附上一個調試器,檢查rslistings的內容(「說明」),則實際Field對象通過數據庫結果作爲NULL傳遞,除非它被讀取

這是很老的ASP代碼通過,但它適用於IIS6,只是沒有IIS7

編輯這隻有可能發生在「說明」字段是文本類型(MySQL數據庫)

條並不做了很多:

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

如果我打電話條狀帶(RS(」描述「)),它我當Field對象被傳入時,它永遠不會爲null。如果將它分配給另一個值,然後將其傳遞(如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") 
+0

這隻發生在「描述」字段上,並且是一個文本類型(MySQL數據庫) – Paul 2011-03-16 15:04:25

+0

你可以發佈'strip'' Sub' /'Function'的代碼嗎? – stealthyninja 2011-03-16 15:57:04

+0

我已經添加了strip功能,不是很多 – Paul 2011-03-16 16:44:10

回答

0

@保羅:如果strip不檢查descriptionNULL它的工作之前,你可以這樣做 -

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 
+0

啊,你實際上遇到了我的問題。 strip的第一件事是檢查null(IF NOT ISNULL(passedinvalue))。但是,傳遞rslistings(「description」)意味着passedinvalue從不爲null,因爲它似乎傳遞給Field對象,而不是值。通過rslistings(「description」)。值傳遞正確的東西 - 但我不能這樣做(sooo很多代碼來改變!) – Paul 2011-03-16 16:36:30

+0

@Paul:這真的很奇怪......你可能會發布你如何創建和設置'my_conn',你使用的連接字符串和你正在運行的SQL查詢? – stealthyninja 2011-03-17 21:13:59

+0

我已將該代碼添加到原始問題中 – Paul 2011-03-21 14:53:20

1

Field Collection是Recordset對象的默認成員。

so是Field對象的value屬性。

所以以下兩個代碼語句是等價的。

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

這是一個區別,如果您爲變量賦值或將其用作函數中的參數。

相關問題