我在Tquery的SQL属性中写了select top 3 * from orders for xml auto语句,
程序可以正常执行,但是我 不知道怎么返回查询的xml文档的结果(用DBE连接数据库的)。
我用Tdbmemo控件,并且把fieldname设为xml_f52e2b61_什么的,
但是执行时显示找不到“xml_f52e2b61_……”。
那我改怎么办才能返回xml文档的结果那 ?

解决方案 »

  1.   

    要是不行用
    TBLOBFIELD(query1.Fields[0])。SAVETOFILE()
      

  2.   

    我不知道在BDE能不能读出XML BLOB数据。查过一些资料,这种返回XML数据的方法是SQL SERVER2000特有的,
    而且多半只能由ADO 2.5版本以上的ADO _STREAM对象读入.
    DELPHI6带的ADO控件没有包装ADO _STREAM对象,看来是不够用的,得
    自己导入ADO 2.6的类型库.
    不过我还没有成功用DELPHI写出它. 下面是用VB读出它的部分代码,抄自网上,参考参考.
    //----------------------------------------------
    Const adExecuteStream=1024
    Const MSSQLXML_DIALECT 
    ="{5D531CB2-E6Ed-11D2-B252-00C04F681B71}"
    Dim conDB 'As ADODB.Connection
    Dim cmdXML 'As ADODB.Command
    Set conDB =CreateObject("ADODB.Connection")
    With conDB    
        .Provider ="SQLOLEDB"
        .ConnectionString ="DATA SOURCE=(local);" &&_
             "INITIAL CATALOG=Northwind;" &&_
             "INTEGRATED SECURITY=SSPI;"
        .Open
    End With
    Set cmdXML =CreateObject("ADODB.Command")
    ‘指定Connection物件至Command物件
    Set cmdXML.ActiveConnection =conDB
    Dim strQry 'As String
    strQry ="<Invoice 
    xmlns:sql='urn:schemas-microsoft-com:xml-sql'>"
    strQry =strQry &"<sql:query>"
    strQry =strQry &"SELECT OrderID,OrderDate FROM Orders"
    strQry =strQry &"WHERE OrderID =10248 FOR XML AUTO"
    strQry =strQry &"</sql:query></Invoice>"
    ‘指定MSSQLXML語言及查詢
    cmdXML.Dialect =MSSQLXML_DIALECT
    cmdXML.CommandText =strQry
    Dim stmXMLout'AS ADODB.Stream
    Set stmXMLout =CreateObject("ADODB.Stream")
    stmXMLout.Open
    cmdXML.Properties("Output Stream")=stmXMLout
    cmdXML.Execute ,,adExecuteStream
    Dim strXML 'As String
    strXML 
    =Replace(stmXMLout.ReadText,">",">"&Chr(10)
    +Char(13))
    MsgBox strXML,vbInformation,"XML Invoice"//-----------------------------------------------