Проблема с динамической загрузкой данных в раскрывающемся списке в 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] Неверный синтаксис рядом с ключевым словом "ГДЕ".

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

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

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

Как я могу прийти из этого вопроса?

1 ответ

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

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(); 

} 
Другие вопросы по тегам