指定した 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 名前空間