次の方法で共有


AdoQueryConnection.BuildSqlFromXmlNodes(XPathNavigator) メソッド

定義

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

public:
 abstract System::String ^ BuildSqlFromXmlNodes(System::Xml::XPath::XPathNavigator ^ input);
public abstract string BuildSqlFromXmlNodes (System.Xml.XPath.XPathNavigator input);
abstract member BuildSqlFromXmlNodes : System.Xml.XPath.XPathNavigator -> string
Public MustOverride Function BuildSqlFromXmlNodes (input As XPathNavigator) As String

パラメーター

input
XPathNavigator

XPathNavigator SQL フラグメントに変換するクエリ フィールド値を含む dfs:queryFields XML ノードに配置される 。

戻り値

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

例外

次のいずれかの条件が発生しました:入力ノードから生成された SQL コマンド文字列を解析できません。入力ノードは、クエリ フィールド値のテーブルではありません。入力ノードには、クエリ対象のデータ ソースに存在しない列 (XML 属性) が含まれています。

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

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

次の例では、Button コントロールのイベント ハンドラーで 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

注釈

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 ノードの子孫である必要があります。 プロパティを使用して、 ADOQueryConnection オブジェクトの既存の SQL コマンド文字列に SQL コマンド テキスト フラグメントを Command 追加できます。

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

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

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

適用対象