Когда я добавляю это к моему предложению where:
DueDate <= getDate() AND DueDate IS NOT null
Я получаю небольшую ошибку, которая говорит:
Не удалось создать дочерний элемент: System.Reflection.TargetInvocationException: исключение было выдано целью вызова. ---> System.Data.EvaluateException: выражение содержит неопределенный вызов функции getDate ().
Есть идеи, что я делаю не так?
Обновление
Используемый код:
private string getFilter(int mode) {
String filter = "";
if ((ALL_WORK_ORDERS & mode) == 0) {
if ((mode & OUTSTANDING_WORK_ORDERS) == OUTSTANDING_WORK_ORDERS) {
filter += "DueDate <= getDate() AND DueDate IS NOT null OR";
}
if ((mode & COMPLETED_WORK_ORDERS) == COMPLETED_WORK_ORDERS) {
filter += " FinishedDate IS NOT null";
}
}
filter = filter.Trim();
if (filter.EndsWith("OR")) {
filter = filter.Remove(filter.Length - 2);
}
return filter;
}
И здесь привыкаешь:
tblWorkOrderBindingSource.Filter = getFilter(mode);
В таблице DueDate - это тип datetime.
Примечание:
Я могу запустить
SELECT [ID]
,[WorkDesc]
,[DueDate]
FROM [RentalEase].[dbo].[tblWorkOrder]
WHERE [DueDate] <= getDate() AND [DueDate] IS NOT null
в MS SQL Server Management Studio Express без проблем.
Окончательное решение
private string getFilter(int mode) {
String filter = "";
if ((ALL_WORK_ORDERS & mode) == 0) {
if ((mode & OUTSTANDING_WORK_ORDERS) == OUTSTANDING_WORK_ORDERS) {
filter += "DueDate <= #" + DateTime.Now.ToShortDateString() + "# AND DueDate IS NOT null AND FinishedDate IS null OR";
}
if ((mode & COMPLETED_WORK_ORDERS) == COMPLETED_WORK_ORDERS) {
filter += " FinishedDate IS NOT null";
}
}
filter = filter.Trim();
if (filter.EndsWith("OR")) {
filter = filter.Remove(filter.Length - 2);
}
return filter;
}