C# 调整空字段的查询

C# 调整空字段的查询,c#,sql,visual-studio,dataset,C#,Sql,Visual Studio,Dataset,在VisualStudio中,我正在做 SELECT calendar.info, …. , calendar.ino AS Expr1, doss.dosno FROM calendar INNER JOIN doss ON calendar.ino = doss.ino AND calendar.ino = doss.ino WHERE (calendar.b_date >= @cboDateFrom) AND (calendar.b_date <= @cboDateTo) A

在VisualStudio中,我正在做

SELECT calendar.info, …. ,
calendar.ino AS Expr1, doss.dosno
FROM calendar INNER JOIN
doss ON calendar.ino = doss.ino AND calendar.ino = doss.ino
WHERE (calendar.b_date >= @cboDateFrom) AND  (calendar.b_date <= @cboDateTo) AND 
calendar.aguv like @cboUitvoerder)

你能做一些类似于:

WHERE (calendar.b_date >= @cboDateFrom) AND (calendar.b_date <= @cboDateTo) 
AND
((@cboUitvoerder IS NULL) OR (calendar.aguv LIKE @cboUitvoerder))

WHERE(calendar.b_date>=@cboDateFrom)和(calendar.b_date我认为您可以使用Rob博士的解决方案,但是如果您想将null作为@cboUitvoerder传递,您应该使用DBNull.Value而不是c#null。

然后我得到了:错误:与“WindowsFormsApplication3.ToAdatasettableAdapters.calendarTableAdapter.Fill”匹配的最佳重载方法(WindowsFormsApplication3.TogaDataSet.calendarDataTable、System.DateTime、System.DateTime、System.DateTime)'有一些无效的argumentsOk…SQL部分是否工作?这可能是两个独立的问题。请查看生成时错误消息此错误是否有其他信息-通常会有一条次要消息告诉您哪个方法参数不正确。在我看来,您的参数太多或类型不正确对于其中一个参数。上面的SQL是正确的,不会导致该错误。该错误表明您没有向表适配器上的fill方法传递正确或足够的参数。我怀疑这是因为映射到cboUitvoerder的参数是一个日期时间,您不能为其传递null。我通过不更改我的SQL和doi解决了该问题ng this:string x;if(cboUitvoerder.SelectedItem==null){x=“%%”;}否则{x=cboUitvoerder.SelectedItem.ToString();}this.calendarTableAdapter.Fill(this.togaDataSet.calendar,this.cboDateFrom.Value.Date,this.cboDateTo.Value.Date,x);
WHERE (calendar.b_date >= @cboDateFrom) AND (calendar.b_date <= @cboDateTo) 
AND
((@cboUitvoerder IS NULL) OR (calendar.aguv LIKE @cboUitvoerder))