2014-10-08 4 views
0

Я использую java swing и базу данных mysql для своего приложения на основе рабочего стола. И у меня есть следующий запрос, давая фильтр даты в отчетах. Если я не ввел To_date в From_date в JTextField, тогда он должен показать все записи из моей таблицы базы данных mysql, и если я ввел дату, тогда он должен показывать записи между этими двумя датами. Итак, я попробовал (дата между To_date и From_date). Но его отображение записей происходит только тогда, когда я даю датам запрос иначе пустым. Не могли бы вы предложить мне что-нибудь?показать все записи из таблицы базы данных mysql, когда дата не выбрана в форме java swing

ответ

0

Вы должны попробовать статическое значение для столбца даты, если его значение равно null. Надеюсь, что ниже запрос поможет вам решить вашу проблему.

SELECT * FROM YourTable WHERE IFNULL(@StartDateParameter, IFNULL(DateColumn,'1900-01-01')) <= IFNULL(DateColumn,'1900-01-01') 
AND IFNULL(@EndDateParameter, IFNULL(DateColumn,'1900-01-01')) >= IFNULL(DateColumn,'1900-01-01') 

Пожалуйста, дайте мне знать, если вы не можете решить свою проблему с помощью этого запроса.

+0

Можете ли вы, пожалуйста, объяснить это бит? и его тоже не работает. Пожалуйста, проверьте фактический запрос. выберите sccode, scname, SUM (stota), скопируйте из SalesVoucher, CustomerMaster, где scname = cname И ifnull (@ newdate1, ifnull (date, '1900-01-01')) <= ifnull (date, '1900-01-01 ') И IFNULL (@ newdate2, IFNULL (дата,' 1900-01-01 '))> = IFNULL (дата,' 1900-01-01 ') группа по sccode, scname; "); –

+0

вы можете мне сказать, что проблема, с которой вы столкнулись с вашим запросом (который вы указали в своем последнем комментарии)? , если хотите, мы можем пообщаться на http://chat.stackoverflow.com/ для обсуждения. –

+0

mysql-запрос не показывает никаких ошибок в моем java-коде но когда я даю период, то также показываю все записи из моей таблицы базы данных –

0

Вы можете использовать IFNULL (http://www.mysqltutorial.org/mysql-ifnull/) и сформировать свой запрос таким образом, чтобы, если ваш параметр равен нулю, для сравнения используйте значение столбца. , например.

SELECT * FROM YourTable WHERE IFNULL(DateColumn,@YourParameter) = @YourParameter 
+0

Большое вам спасибо за ваш ответ. его показ всех записей, когда я не передал какую-либо ценность, но когда я дам даты, которые не показывают записи за эти две даты –

+0

, есть ли там? Я пробовал ifnull (дата, дата между To_date AND From_date), это правильный путь? –

+0

Нет, это неправильно. Отправленный еще один ответ, проверьте его и дайте мне знать, если это не поможет –

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