RecordSet 4: Roll Your Own RecordSet
<< Click to Display Table of Contents >> RecordSet 4: Roll Your Own RecordSet |
![]() ![]() ![]() |
This sample shows you how you can create a recordset on the fly and how you can save and load recordsets to disk in XML format
It finally shows how you can check if a recordset supports certain options
FUNCTION Start()
// This sample shows how you can create your own recordset
// And also hwo you can save and load recordsets to an XML file
LOCAL oRs AS AdoRecordSet
LOCAL aFields AS ARRAY
LOCAL i AS LONG
oRs := AdoRecordSet{}
IF ! File("TEST.XML")
oRs:Fields:Append("F1",adInteger,NIL,adFldRowId)
oRs:Fields:Append("F2",adVarChar,10,adFldMayBeNull)
oRs:Fields:Append("F3",adBoolean,NIL,adFldMayBeNull)
oRs:Fields:Append("F4",adDbDate,NIL,adFldMayBeNull)
oRs:Fields:Append("F5",adDouble,NIL,adFldMayBeNull)
aFields := {"F1","F2","F3","F4","F5"}
oRs:Open(NIL,NIL,adOpenStatic,adLockOptimistic,-1)
FOR i = 1 TO 50
oRs:AddNew(aFields, {I,CHR(64+I%26),I%2=0,TODAY()+i,SQRT(i)})
NEXT
oRs:Save("test.xml",adPersistXML)
? "New recordset created"
ELSE
oRs:Open("test.xml","Provider=MSPERSIST",AdOpenStatic,;
adLockOptimistic,NIL)
? "Recordset loaded from test.xml"
ENDIF
? "# of fields", oRs:Fields:Count
? "# of records",oRs:RecordCount
wait
? "Recordset supports:"
? "AddNew ", oRs:Supports(adAddNew)
? "Approx Position ", oRs:Supports(adApproxPosition)
? "Bookmark ", oRs:Supports(adBookmark)
? "Delete ", oRs:Supports(adDelete)
? "Find ", oRs:Supports(adFind)
? "HoldRecords ", oRs:Supports(adHoldRecords)
? "Index ", oRs:Supports(adIndex)
? "MovePrevious ", oRs:Supports(adMovePrevious)
? "Notifications ", oRs:Supports(adNotify)
? "Resync ", oRs:Supports(adResync)
? "Seek ", oRs:Supports(adSeek)
? "Update ", oRs:Supports(adUpdate)
? "Updatebatch ", oRs:Supports(adUpdateBatch)
wait
? "Display the contents of the recordset"
oRs:MoveFirst()
DO WHILE ! oRs:EOF
QOut()
FOR i := 1 TO oRs:Fields:Count
QQOut(oRs:FIELDs[i]:Value,"")
NEXT
oRs:MoveNext()
ENDDO
wait