次の方法で共有


AdoSubmitConnection.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 AdoSubmitConnection
Dim input As XPathNavigator
Dim returnValue As String

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

パラメータ

  • input
    SQL フラグメントに変換する XML ノードを示す XPathNavigator オブジェクト。

戻り値

指定したノードの WHERE 句。

例外処理

例外の種類 条件

InvalidOperationException

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

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

  • 入力ノードは値のテーブルではない。

  • 入力ノードに、列 (XML 属性) の送信先となるデータ ソースに存在しない列が含まれている。

ArgumentNullException

このメソッドに渡されたパラメータは null です。

ArgumentException

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

コメント

BuildSQLFromXMLNodes メソッドが生成する SQL のフラグメントでは、フィールド = のペアの形式で SQL WHERE 句が生成されます。input パラメータに指定する XML ノードは、フォームの dfs:queryFields ノードの子孫である必要があります。たとえば、ユーザーが Last Name フィールドおよび First Name フィールドのクエリ フィールドに「Davolio」および「Nancy」と入力して Northwind データベースの Employees テーブルをクエリした場合、BuildSQLFromXmlNode メソッドで返される SQL フラグメントは次のようになります。

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

Command プロパティを使用して、ADOSubmitConnection オブジェクトの既存の SQL コマンド文字列に SQL コマンド テキストのフラグメントを追加できます。

メモメモ :

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

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

この型またはメンバは、Microsoft Office InfoPath 2007 で開いているフォームで実行されているコードからのみアクセスできます。

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

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

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 AdoSubmitConnection from the 
   // DataConnections collection.
   AdoSubmitConnection myAdoSubmitConnection = 
      (AdoSubmitConnection)(DataConnections["Main connection submit"]);
   
   // Display BuildSQLFromXMLNodes output.
   string sqlFromXmlNodes = 
      myAdoSubmitConnection.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 AdoSubmitConnection from the 
   ' DataConnections collection.
   Dim myAdoSubmitConnection As AdoSubmitConnection  = _
      DirectCast(DataConnections["Main connection submit"], _
      AdoSubmitConnection)
   
   ' Display BuildSQLFromXMLNodes output.
   Dim sqlFromXmlNodes As String  = 
      myAdoSubmitConnection.BuildSqlFromXmlNodes(queryFieldsNav)
   MessageBox.Show(sqlFromXmlNodes)
End Sub

関連項目

参照

AdoSubmitConnection クラス
AdoSubmitConnection のメンバ
Microsoft.Office.InfoPath 名前空間