Проблема с динамической загрузкой данных в раскрывающийся список в InfoPath 2007?

У меня есть раскрывающийся список в моей форме InfoPath, и я загружаю некоторые другие поля на основе выбора раскрывающегося списка. так что я написал следующий код для события "изменено" в раскрывающемся списке.

public void ProjectName_Changed(object sender, XmlEventArgs e)
{
            string projectId = e.NewValue;
            dataQueryConnection = (AdoQueryConnection)this.DataConnections["ProjectInformation"];
            dataQueryConnection.Command = dataQueryConnection.Command + string.Format(" WHERE ProjectId = '{0}'",             projectId);
            dataQueryConnection.Execute();

}

Впервые, когда я изменяю элемент в раскрывающемся списке, он работает нормально, но для последующих изменений элементов (второй раз и т. Д.) Он дает следующую ошибку:

Запрос не может быть запущен для следующего объекта DataObject: ProjectInformation InfoPath не может выполнить указанный запрос. [0x80040E14] [Поставщик Microsoft OLE DB для SQL Server] Неправильный синтаксис рядом с ключевым словом "WHERE".

И это причина, во второй раз,

dataQueryConnection.Command = выберите "EmployeeID", "Accountname", "ProjectName", "ProjectId", "ProjectRole", "BillableUtilization", "ClientName", "BillingCode", "BUHead" из "TRF". "hrt_vw_ProjectInformation" как " hrt_vw_ProjectInformation "ГДЕ ProjectId = '3072507' ГДЕ ProjectId = '3076478'

последующее событие запускает предложение WHERE каждый раз с предыдущим выполненным запросом.

Как я могу избавиться от этой проблемы?


person vml19    schedule 30.06.2010    source источник


Ответы (1)


Сохраните начальную командную строку в глобальной переменной вашего кода (в событии загрузки). Затем в вашей функции Changed добавьте к глобальной переменной вместо предыдущего значения команды.

string OrigString

public void FormEvents_Loading(object sender, LoadingEventArgs e)
{
   OrigString = dataQueryConnection.Command;
}

public void ProjectName_Changed(object sender, XmlEventArgs e) 
{ 
            string projectId = e.NewValue; 
            dataQueryConnection = (AdoQueryConnection)this.DataConnections["ProjectInformation"]; 
            dataQueryConnection.Command = OrigString + string.Format(" WHERE ProjectId = '{0}'",             projectId); 
            dataQueryConnection.Execute(); 

} 
person ktharsis    schedule 01.07.2010