次の方法で共有


ADOAdapter2.BuildSQLFromXMLNodes メソッド

指定した XML ノードを使用して SQL コマンド テキスト フラグメントを返します。

このメソッドは、CLS に準拠していません。  

名前空間: Microsoft.Office.Interop.InfoPath.SemiTrust
アセンブリ: Microsoft.Office.Interop.InfoPath.SemiTrust (microsoft.office.interop.infopath.semitrust.dll 内)

構文

'宣言
<DispIdAttribute(8)> _
Function BuildSQLFromXMLNodes ( _
    pXmlNode As IXMLDOMNode _
) As String
'使用
Dim instance As ADOAdapter2
Dim pXmlNode As IXMLDOMNode
Dim returnValue As String

returnValue = instance.BuildSQLFromXMLNodes(pXmlNode)
[DispIdAttribute(8)] 
string BuildSQLFromXMLNodes (
    IXMLDOMNode pXmlNode
)

パラメータ

  • pXmlNode
    SQL フラグメントに変換される XML ノード。

戻り値

SQL コマンド文字列フラグメント。

コメント

BuildSQLFromXMLNodes メソッドが生成する SQL フラグメントは、フィールド = 値という形式の SQL WHERE 句になります。pXmlNode 引数に使用する XML ノードは、dfs:queryFields ノードの子孫である必要があります。既に生成した SQL コマンド文字列フラグメントがある場合には、Command プロパティを使用して、ADOAdapterObject オブジェクトの既存の SQL コマンド文字列にそのフラグメントを追加できます。

メモ重要 :

このメンバは、現在開いているフォームと同じドメイン内で実行されているフォーム、またはドメインを越えたアクセス許可を付与されているフォームだけがアクセスできます。

次の例では、BuildSQLFromXMLNodes メソッドを使用して、Northwind データベースの Orders テーブルにクエリを送信しています。データが返されたら、queryFieldNode の値以上かどうかでそのデータをフィルタしています。

private void QueryGreaterThan()
{
 string oldCommand;
 string whereClause;
 IXMLDOMNode queryFieldNode;
 IXMLDOMNode curQueryFieldAttribute;
 IXMLDOMNamedNodeMap queryFieldAttributes;
 ADOAdapter adapter = (ADOAdapter)thisXDocument.QueryAdapter;

 // Build the WHERE clause from the QueryFields in the form's
 // underlying XML DOM.
 queryFieldNode = thisXDocument.DOM.selectSingleNode("dfs:myFields/dfs:queryFields/q:Orders");
 whereClause = adapter.BuildSQLFromXMLNodes(queryFieldNode);

// The QueryFields are empty.
 if (whereClause == null)
 {
  whereClause = String.Empty;
 }
 // Replace the '=' signs with '>=', and append the clause to 
 // the SQL command text.
 whereClause = whereClause.Replace(@"=", @">=");
 oldCommand = adapter.Command;
 
 if (whereClause != "")
 {
  adapter.Command = oldCommand + " where " + whereClause;
 }
 
 // Clear the QueryFields so the WHERE clause isn't 
 // automatically generated.
 queryFieldAttributes = queryFieldNode.attributes;
 while ((curQueryFieldAttribute = queryFieldAttributes.nextNode()) != null)
 {
  curQueryFieldAttribute.text = "";
 }

  // Perform the query.
 try
 {
  thisXDocument.Query();
 }
 catch (Exception ex)
 {
  thisXDocument.UI.Alert("Failed to query.\n\n" + ex.Message);
 }

 // Reset the command so that subsequent queries are based on 
 // the correct SQL command text string.
 adapter.Command = oldCommand;
}

関連項目

参照

ADOAdapter2 インターフェイス
ADOAdapter2 のメンバ
Microsoft.Office.Interop.InfoPath.SemiTrust 名前空間