2014-04-08 65 views
1

自從我不使用經典的asp已經有好幾年了,我不記得如何做到這一點。檢查變量是否是一個記錄集

我正在循環槽我的會話變量將它們打印到文本框中,但是當它碰到記錄集變量時它會返回一個錯誤。

Dim Item  
    Dim sessao 

    For Each Item in Session.Contents 
     If Item <> "Servidor" AND Not IsNull(Session.Contents(item)) THEN 
      response.write(Session.Contents(item)) 
      response.write(item + "<br/>") 
      'sessao = sessao + (Item + "&" + Session.Contents(item) + "@") 
     end if 
    next 

所以,我需要這樣的東西如果項目<>記錄,然後跳過此情況包含對象

+1

請問您爲什麼將記錄集存儲在會話變量中?它們是爲了存儲小數據類型,調用查詢不是太昂貴。 – meda

+0

這將在任何基於對象的會話值中發生。嘗試使用'不是IsObject(Session.Contents(item)'。 – Lankymart

+0

很好,謝謝! @meda,它是一箇舊的系統,它現在已經被.NET重寫 –

回答

3

會話值如果您嘗試Response.Write他們的頁面總是會導致錯誤。

您可以通過檢查會話值是否包含使用IsObject()函數的對象來避免此問題。

在你的代碼像

If Item <> "Servidor" And Not IsObject(Session.Contents(item)) Then 

重要:

由於meda指出它是昂貴的存儲會話值內ADODB.Recordset對象。如果你能解釋你正在努力完成什麼,我們不建議這樣做,我們可能會提供一個更可行的解決方案。

+0

事實是,有這個asp/vb系統,我正在開發一個新的.NET,需要與asp兼容。 由於會話值不能在這兩者之間共享,所以我需要將它們打印到文本框中以便能夠在.NET系統中獲得它 –

+0

@ChristopherFreyburg對,你只是想解決那裏有什麼以及如何與它一起工作。可以理解的。 – Lankymart

+0

會話不可共享,但您可以開發一些代碼,它將採用[tag:asp-classic]會話並將其轉換爲ASP.Net會話。實際上它重建會話對象。它就像兩個人之間的中間人。請參閱[本文](http://stackoverflow.com/a/13067697/692942)。 – Lankymart

相關問題