2010-06-30 8 views
1

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

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

} 

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

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

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

dataQueryConnection.Command = выберите "EmployeeID", "AccountName", "ProjectName", "ProjectID", "ProjectRole",» BillableUtilization», "Имя_клиента", "BillingCode", "BUHead" от "TRF". "hrt_vw_ProjectInformation" как "hrt_vw_ProjectInformation", где ProjectID = '3072507', ГДЕ ProjectID = '3076478'

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

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

ответ

0

Сохраните исходную командную строку в глобальной переменной в вашем коде (в событии загрузки). Затем в вашей функции 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(); 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^