| Un nuevo método para sumar a un objeto recordset,
es la capacidad de guardar recordsets dentro del formato XML.
La Función RecordsetToXML
El primer item es una variable global
<%
Dim iLevel
Lo que sigue es la daclaración de la función (toma 2 argumentos). El
primero es recordset a convertir y el segundo es el nombre que se la dará
a la colección XML.
Function RecordsetToXML (oRec, sName)
Dim oFld
Dim sXML
Dim sSpaces
Dim nNames
sSpaces = Spaces (iLevel * 2)
Checkear cuando el nombre pasado es plural o no
If Right (sName, 1) = "s" Then
sNames = sName
sName = Left(sName, Len(sName) -1)
Else
sNames = sName & "s"
End If
Ahora hay que desarrollar el string XML
sXML = sSpaces & "<" & sNames
& "<" & vbCR
Listos para el primer recordset
iLevel = iLevel + 1
sSpaces = Space (iLevel * 2)
Recorrer el recordset
oRec.MoveFirst
While Not oRec.EOF
Ahora estamos dentro de un record, y sumamos el tag al string XML
For Each oFld In oRec.Fields
Si este campo es un recordset, llamar a la función RecordsetToXml nuevamente
If oFld.Type = adChapter Then
Set oChapter = oFld.Value
If Not oChapter.EOF Then
iLevel = iLevel + 1
sXML = sXML & RecordsetToXML (oChapter,
oFld.Name)
iLevel = iLevel -1
End If
Else
sXML = sXML & sSpaces & " " &
"<" & oFld.Name & ">"
& oFld.Value & "</" &
oFld.Name & ">" & vbCR
End If
Next
Terminar el final de un record y sumar el final de un record tag
sXML = sXML & sSpaces &
"</" & sName & "<"
& vbCR
Mover dentro del próximo record
oRec.MoveNext
Wend
iLevel = iLevel - 1
sSpaces = Space (iLevel * 2)
sXML = sXML & sSpaces & "</"
& sNames & ">" & vbCR
Finalmente, retornamos el string XML
RecordsetToXML = sXML
End Function
%>
Utilizar la Función
<!--METADATA TYPE="typelib"
FILE="C:\program files\common files\system\ado\msado15.dll -->
<!-- #INCLUDE FILE="RecordsetToXML.asp"-->
<%
Set oRec = Server.CreateObject("ADODB.Recordset") oRec.Open
"authors", "DNS=pubs"
Response.Write RecordsetToXML (oRec, "Authors")
oRec.Close
%>
Esto crea el siguiente código XML:
<Authors>
<Author>
<au_id>172-32-1176</au_id>
<au_Iname>Whiter</au_Iname>
<au_fname>Bob</au_fname>
<phone>408 496-7223</phone>
<address>10932 Bigge Rd.</address>
<city>Menlo Park</city>
<state>CA</state>
<zip>94025</zip>
<contract>True</contract>
</Author>
<Author>
<au_id>213-46-8915</au_id>
<au_Iname>Green</au_Iname>
</Author>
</Authors>
Data Binding
Usar esto como parte de tu RDS data-binding scheme es bastante sencillo.
Con IE5 es puede usar el XML directamente el la página HTML, de dos maneras.
Incluyendo un XML Dada Island:
<XML ID="dsoAuthors">
<Authors>
<Author>
<au_id)172-32-1176</au_id>
</Author>
<Author>
<au_id>213-46-8915</au_id>
<au_Iname>Green</au_Iname>
</Author>
</Authors>
</XML>
O se puede uar el tag XML y referenciar el XML data:
<XML ID="dsoAuthors" SRC="authors.xml">
</XML>
<TABLE DATASRC="#dsoAuthors" CELLSPACING=10>
<TR ID="tblSales" vAlign="TOP">
<TD><SPAN DATAFLD="au_fname"></SPAN></TD>
<TD><SPAN DATAFLD="au_Iname"></SPAN></TD>
<TD><SPAN DATAFLD="phone"></SPAN></TD>
<TD><SPAN DATAFLD="city"></SPAN></TD>
<TD><SPAN DATAFLD="state"></SPAN></TD>
</TABLE>
|