ADOAdapter2.BuildSQLFromXMLNodes(IXMLDOMNode) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает фрагмент текста команды SQL с использованием указанного узла XML.
public:
System::String ^ BuildSQLFromXMLNodes(Microsoft::Office::Interop::InfoPath::Xml::IXMLDOMNode ^ pXmlNode);
public string BuildSQLFromXMLNodes (Microsoft.Office.Interop.InfoPath.Xml.IXMLDOMNode pXmlNode);
abstract member BuildSQLFromXMLNodes : Microsoft.Office.Interop.InfoPath.Xml.IXMLDOMNode -> string
Public Function BuildSQLFromXMLNodes (pXmlNode As IXMLDOMNode) As String
Параметры
- pXmlNode
- IXMLDOMNode
Узел XML, который следует преобразовать в фрагмент SQL.
Возвращаемое значение
Фрагмент текста команды SQL.
Реализации
Примеры
В следующем примере метод BuildSQLFromXMLNodes используется для запроса таблицы Orders в базе данных Northwind. Возвращаемые данные фильтруются по элементам, превышающим или равным значению 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.<span class="label">BuildSQLFromXMLNodes</span>(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;
}
Комментарии
Фрагмент SQL, создаваемый методом BuildSQLFromXMLNodes , представляет собой предложение SQL WHERE в виде поля = значение. Xml-узел, используемый для аргумента pXmlNode
, должен быть потомком dfs:queryFields
узла. При наличии фрагмента текста команды SQL его можно добавить в существующую командную строку ADOAdapterObject SQL объекта с помощью Command свойства .