Disconnected Recordset in Classic ASP VBScript
October 3rd, 2009 | Published in Programming
What is a Disconnected Recordset?
A Disconnected Recordset is A recordset object that exists in an application, but does not have an associated data connection associated with it.
Why use a Disconnected Recordset?
The ADO Recordset is considered an extremely “rich object model” which means it provides more functionality than say, an array.
Also, you can load XML into a disconnected recordset, which means that there is no difference in your RS than if you hit a database.
How to code a Disconnected Recordset?
Here is an example of putting data from XML into a recordser, a disconnected recordset to be exact.
Const adVarChar = 200
Const adSingle = 4
Const adPersistxml = 1
Const adUseClient = 3
Const adOpenStatic = 3
Const adLockBatchOptimistic = 4
Const adStateOpen = 1
Public Function fGetXmlForRs(strFieldsCsv, intFieldLen)
Dim objRs, arrFields, intCount, objXmlDom, objXmlRows, objXmlRow, objXmlColumns, objXmlColumn
Set objRs = CreateObject("ADODB.recordset") 'create disc. rs
Set objXmlDom = CreateObject("Msxml2.DOMDocument")
objXmlDom.LoadXML "YOUR_XML_HERE"
arrFields = split(replace(strFieldsCsv," ",""),",")
For intCount = 0 To uBound(arrFields)
objRs.Fields.Append arrFields(intCount), adVarChar, intFieldLen 'fieldname, type, size
Next
objRs.Open , , adOpenStatic, adLockBatchOptimistic
Set objXmlRows = objXmlDom.selectNodes("YOUR_ROW_NODE_HERE")
For Each objXmlRow In objXmlRows 'for each row
intCount = 0
set objXmlColumns = objXmlRow.selectNodes("col")
objRs.AddNew()
For Each objXmlColumn In objXmlColumns
objRsLocal (arrRequestedFields(intCountCol)).value = objXmlColumn.text
intCount = intCount + 1
Next
objRs.Update()
Next
Set objXmlDom = Nothing
Set fGetRntRs = objRs
Set objRs .ActiveConnection = Nothing
End function
To use the XML to Recordset function, just call this:
Set yourNewRs = fGetXmlForRs("field1name, field2name, etc", 255)
do while not yourNewRs.eof....
