我的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提供程序 for SQL Server]附近的语法不正确 关键字'WHERE'。
这就是第二次
的原因每次使用先前执行的查询时,dataQueryConnection.Command =选择 “雇员”, “ACCOUNTNAME”, “项目名”, “专案编号”, “ProjectRole”, “BillableUtilization”, “CLIENTNAME”, “BillingCode”, “BUHead” 来自“TRF”。“hrt_vw_ProjectInformation” as“hrt_vw_ProjectInformation”WHERE ProjectId ='3072507'WHERE ProjectId ='3076478'
后续事件触发WHERE子句。
我如何能够摆脱这个问题?
答案 0 :(得分: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();
}