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....