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

У меня есть раскрывающийся список в форме 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 Provider для SQL Server] Неверный синтаксис рядом ключевое слово "ГДЕ".

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

dataQueryConnection.Command = select "КодСотрудник", "AccountName", "Имя_проект", "ProjectID", "ProjectRole", "BillableUtilization", "Имя_клиент", "BillingCode", "BUHead" из "TRF". "hrt_vw_ProjectInformation" как "hrt_vw_ProjectInformation" ГДЕ ProjectId = '3072507' ГДЕ ProjectId = '3076478'

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

Как я могу решить этот вопрос?

1 Ответ

0 голосов
/ 01 июля 2010

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

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

} 
...