博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

'注释:

Sub eb_Sheng_CloseUp()

  dim Arr,Dic

  eb_shi.Clear

  StrSql = "Select 城市 From 邮编区号 Where 省份 = '"+eb_Sheng.Text+"'"

  StrRet = DBEngine.WebFunction("SqlQuery",StrSql,"")

 

GetArrFromXML Dic,Arr,strRet

  FOR i=0 TO UBound(Arr,2)

    eb_Shi.AddItem Arr(0,i)

  NEXT

End Sub


Function GetArrFromXML(ByRef FieldArr, ByRef Arr1, Xml1)

 

Dim i, j, lsXml, lsChar, liStar, liEnd, lsStar, lsEnd, liLen,Dic1

 

lsStar = "<FieldName>"

 

lsEnd = "</FieldName>"

 

liLen = Len(lsStar)

 

i = InStr(1,Xml1, "<FieldInfoArray>",1)

 

If i <> 0 Then

 

lsXml = Mid(Xml1, i, Len(Xml1))

 

Else

 

Exit Function

 

End If

 

liStar = InStr(1, lsXml, lsStar, 1)

 

liEnd = InStr(1, lsXml, lsEnd, 1)

 

Do While liEnd > 0

 

If IsArray(FieldArr) Then

 

ReDim Preserve FieldArr(UBound(FieldArr) + 1)

 

Else

 

ReDim FieldArr(0)

 

End If

 

FieldArr(UBound(FieldArr)) = Mid(lsXml, liStar + liLen, liEnd - liStar - liLen)

 

liStar = InStr(liEnd+1, lsXml, lsStar, 1)

 

liEnd = InStr(liEnd+1, lsXml, lsEnd, 1)

 

Loop

 

 

Set Dic1 = CreateObject("Scripting.Dictionary")

 

For i = 0 To UBound(FieldArr, 1)

 

Dic1.Add FieldArr(i), CStr(i)

 

Next

liStar = InStr(1, lsXml, "<RowNum>", 1)

 

liEnd = InStr(1, lsXml, "</RowNum>", 1)

 

i = Int(Mid(lsXml,  liStar + Len("<RowNum>"), liEnd - liStar - Len("<RowNum>")))

 

ReDim Arr1(UBound(FieldArr, 1), i - 1)

 

For i = 0 To UBound(FieldArr, 1)

 

lsStar = "<" & FieldArr(i) & ">"

 

lsEnd = "</" & FieldArr(i) & ">"

 

liLen = Len(lsStar)

 

j = 0

 

liStar = InStr(1, lsXml, lsStar, 1)

 

liEnd = InStr(1, lsXml, lsEnd, 1)

 

Do While liEnd > 0  'i =  dic1.key(FieldArr(i))

 

Arr1(i, j) = Mid(lsXml, liStar + liLen, liEnd - liStar - liLen)

 

liStar = InStr(liEnd+1, lsXml, lsStar, 1)

 

liEnd = InStr(liEnd+1, lsXml, lsEnd, 1)

 

j = j + 1

 

Loop

 

Next

 

End Function