次の方法で共有


AdoQueryConnection.BuildSqlFromXmlNodes メソッド

指定されたクエリ フィールド値を含む XML ノードから解析された SQL コマンド テキスト フラグメントを返します。

名前空間:  Microsoft.Office.InfoPath
アセンブリ:  Microsoft.Office.InfoPath (Microsoft.Office.InfoPath.dll)

構文

'宣言
Public MustOverride Function BuildSqlFromXmlNodes ( _
    input As XPathNavigator _
) As String
'使用
Dim instance As AdoQueryConnection
Dim input As XPathNavigator
Dim returnValue As String

returnValue = instance.BuildSqlFromXmlNodes(input)
public abstract string BuildSqlFromXmlNodes(
    XPathNavigator input
)

パラメーター

戻り値

型: System.String
指定したノードのクエリ フィールド値から作成された WHERE 句。

例外

例外 条件
InvalidOperationException

次の条件の 1 つが発生しました。

  • 入力ノードから生成された SQL コマンド文字列を解析できません。

  • 入力ノードがクエリ フィールド値のテーブルではありません。

  • 入力ノードに、クエリされているデータ ソースに存在しない列 (XML 属性) が含まれます。

ArgumentNullException

このメソッドに渡されたパラメーターは null 参照 (Visual Basic ではNothing ) です。

ArgumentException

このメソッドに渡されるパラメーターは無効です。たとえば、型または形式が正しくありません。

解説

BuildSQLFromXmlNodes メソッドが生成する SQL のフラグメントは、フィールド名 = 値ペアの形式の SQL WHERE 句です。複数のペアがある場合、各ペアは AND 演算子で結合されます。たとえば、Northwind データベースの Employees テーブルをクエリするために、Last Name フィールドと First Name フィールドに対するクエリ フィールドに「Davolio」および「Nancy」と入力すると、BuildSQLFromXmlNode メソッドによって返される SQL フラグメントは次のようになります。

("Employees"."LastName"='Davolio' AND "Employees"."FirstName"='Nancy')

input パラメーターに対して指定する XML ノードは、フォームの dfs:queryFields ノードの子孫でなければなりません。Command プロパティを使用すると、ADOQueryConnection オブジェクトの既存の SQL コマンド文字列に、SQL コマンド テキスト フラグメントを追加できます。

注意

input パラメーターに渡すクエリ フィールド値を含むテーブルに対する XPath 式を決定するには、[データ ソース] 作業ウィンドウを表示して、[queryFields] グループを展開し、使用するクエリ フィールドを含むテーブルを右クリックして、[XPath のコピー] をクリックします。

このメンバーには、現在開いているフォームと同じドメインで実行中のフォーム、またはクロスドメインのアクセス許可が与えられたフォームのみがアクセスできます。

この型またはメンバーには、Microsoft InfoPath Filler または Web ブラウザーで開かれたフォームを実行中のコードからアクセスできます。

次の例では、[ボタン] コントロールに対するイベント ハンドラーで、ADOQueryConnection クラスの BuildSQLFromXMLNodes メソッドを使用して現在のクエリ フィールド値を解析し、メッセージ ボックスに表示しています。

この例では、フォーム テンプレートに、SQL Server Northwind サンプル データベースの Employees テーブルに対する "Main connection" という名前のデータ接続があるものとしています。

public void DisplaySQL_Clicked(object sender, ClickedEventArgs e)
{
   // Get the query fields node.
   string queryFieldsXPath = 
      "dfs:myFields/dfs:queryFields/q:Employees";
   XPathNavigator mainDataSourceNav = MainDataSource.CreateNavigator();
   XPathNavigator queryFieldsNav = mainDataSourceNav.SelectSingleNode(
      queryFieldsXPath, NamespaceManager);

   // Create AdoQueryConnection from the 
   // DataConnections collection.
   AdoQueryConnection myAdoQueryConnection = 
      (AdoQueryConnection)(DataConnections["Main connection"]);
   
   // Display BuildSQLFromXMLNodes output.
   string sqlFromXmlNodes = 
      myAdoQueryConnection.BuildSqlFromXmlNodes(queryFieldsNav);
   MessageBox.Show(sqlFromXmlNodes);
}
Public Sub DisplaySQL_Clicked(ByVal sender As Object, _
   ByVal e As ClickedEventArgs)
   ' Get the query fields node.
   Dim queryFieldsXPath As String = 
      "dfs:myFields/dfs:queryFields/q:Employees"
   Dim mainDataSourceNav As XPathNavigator  = _
      MainDataSource.CreateNavigator()
   Dim queryFieldsNav As XPathNavigator = _
      mainDataSourceNav.SelectSingleNode( _
      queryFieldsXPath, NamespaceManager)

   ' Create AdoQueryConnection from the 
   ' DataConnections collection.
   Dim myAdoQueryConnection As AdoQueryConnection  = _
      DirectCast(DataConnections["Main connection"], _
      AdoQueryConnection)
   
   ' Display BuildSQLFromXMLNodes output.
   Dim sqlFromXmlNodes As String  = 
      myAdoQueryConnection.BuildSqlFromXmlNodes(queryFieldsNav)
   MessageBox.Show(sqlFromXmlNodes)
End Sub

関連項目

参照

AdoQueryConnection クラス

AdoQueryConnection メンバー

Microsoft.Office.InfoPath 名前空間