我試圖在Session變量中存儲表項列表以跟蹤項目複選框的最後一個狀態(CHECKED或UNCHECKED)。VBScript:通過字典中的會話變量讀取
我首先通過將所有值設置爲UNCHECKED,第一次用戶加載頁面。在這部分代碼似乎工作:
model = Request.querystring("model")
If IsEmpty(Session(model)) Then
Set dicX = CreateObject("Scripting.Dictionary")
sqlStr = "SELECT DISTINCT level FROM IFPDB WHERE IFPDB.model='"
sqlStr = sqlStr & model
sqlStr = sqlStr & "'"
Set objRS = objConn.Execute(sqlStr)
' For each unique level get all of that levels menu names
Do While (Not objRS.EOF)
level = objRS("level")
dicX.Add level, CreateObject("Scripting.Dictionary")
' for each menu name set the initial state to OFF
sqlStr2 = "SELECT * FROM IFPDB WHERE IFPDB.model='"
sqlStr2 = sqlStr2 & model
sqlStr2 = sqlStr2 & "' AND IFPDB.level='"
sqlStr2 = sqlStr2 & level_name
sqlStr2 = sqlStr2 & "'"
Set objRS2 = objConn.Execute(sqlStr2)
Do While (Not objRS2.EOF)
menu_item = objRS2("menu_names")
dicX(level).Add menu_item, CreateObject("Scripting.Dictionary")
' add a dictionary item
dicX(level)(menu_item).Add "menu_state", "UNCHECKED"
objRS2.MoveNext
Loop
objRS.MoveNext
Loop
Set Session(model) = dicX
End If
現在的問題,當我嘗試讀取這些值來。不管如何,我試圖訪問他們,我得到「Object_required:_‘[未定義]’」
我已經試過
' Check the last state of this option
menu_name = objResult("menu_names")
response.write(menu_name & "<br>") ' writes correctly
If Not IsEmpty(Session(model))
my_state = Session(model)(current_level)(menu_name).Item("menu_state") ' dies here
response.write(my_state & "<br>")
End If
' tried these as well
my_state = Session(model)(current_level)(menu_name)("menu_state")
'and
my_state = Session(model)(current_level).Item(menu_name).Item("menu_state")
'and others
我想我只是不知道如何閱讀會話我做的變量。有任何想法嗎?
您是否知道您使用一個變量'level'和'level_name'?如果後者從未設置爲某個值,則查詢將失敗,並且objRS2從不會設置任何數據(除非發生意外,並且存在值爲''的IFPDB.level)。 – AutomatedChaos 2012-04-03 06:58:07
level和level_name被假定爲始終設置,因爲它們是數據庫表的必需部分。 – 2012-04-03 13:16:44
哈哈!一小時之後,我發現你正在談論困難的方式。變量級神奇地變成了變量level_name。我想這是使用明確和Dim'ing所有變量的情況下... – 2012-04-03 16:46:53