Topic: SQL запросы
DriveSoft помоги пожалуйста! Как сформировать SQL запрос следующего вида:
есть список дат, нужно вывести только те даты, до которых осталось 2 дня от текущей даты.
My Visual Database → Russian → SQL запросы
DriveSoft помоги пожалуйста! Как сформировать SQL запрос следующего вида:
есть список дат, нужно вывести только те даты, до которых осталось 2 дня от текущей даты.
Пожалуйста )
SELECT * FROM tablename WHERE date(datefield) = date('now', '-2 day');
DriveSoft, а можно как то посмотреть мой проект? в чем моя ошибка я одно не пойму.
В видео уроке похожее было. Там говорилось о том что в таблицу чтоб не выводились все данные нужно было снять галочку автоматический запрос. Так вот и меня похожая ситуация.
Хотелось более подробно рассмотреть. Но как? Можно загрузить скрины проекта? Или все как то проект глянуть?
Заранее спасибо!
скиньте мне проект на support@drive-software.com
посмотрю )
Скинул
Поправил, отправил на мыло.
Добрый день!
Благодарю Вас за очень полезный и нужный проект!
пытаюсь выбрать записи с ограничением типа LIKE в SQL запросе и натолкнулся на следующее:
select object.name from object where object.name like '%а%' - это выражение выбирает все строки как положено, где в поле name входит буква "а"
select object.name from object where object.name like '%{Edit1}%' - а это выражение выбирает только те строки, поле name НАЧИНАЕТСЯ с буквы "а", если ввести в Edit1 "а"
select object.name from object where object.name like "{Edit1}" - а так вообще не работает
В чем моя ошибка?
pilot91269
только что протестировал, все работает, скиньте пожалуйста свой проект на support@drive-software.com
посмотрю в чем делом.
Спасибо.
Такой вопрос - есть на форме поле текстовое поле ввода, куда на само деле вводятся числа. В sql запросе пишу
where table.count={edCount} Если в поле есть число, то все работает, если поле пустое - ошибка. Пытался сделать так;
where {edCount} is null OR table.count={edCount} но тоже приводит к ошибке. Как в этом случае нужно написать условие в where?
atempbox
можно задать значение по умолчанию, если в текстовом поле не будет данных, в данном примере значение по умолчанию 0.
WHERE case when '{edCount}'='' then 0 else 0{edCount} end = table.count
Спасибо -это работает, у Вас небольшая помарка, нужно очевидно так:
WHERE case when '{edCount}'='' then 0 else '{edCount}' end = table.count
но мне нужно немного другая логика - если поле не заполнено, то должны показываться все записи, то есть условие должно вернуть true Как быть в этом случае?
Наверное так:
WHERE case when '{edCount}'='' then 1=1 else '{edCount}'=table.count end
atempbox
Помарки в этом нет: 0{edCount} так и задумано,
но ваш способ лучше, как то я сам не догадался просто поставить 1=1
А как проверить comboBox таким способом на пустое значение? Что там должно быть - 0 или ''? Что-то ни то ни то не работает.
То есть как быть в случае:
1 ComboBox
case when '{cbStatus}'='' then 1=1 else table.status= '{cbStatus}' end - не работает
2.Строка
case when '{edClientName}'='' then 1=1 else table.clientname LIKE "%{edClientName}%" end - не работает
atempbox
ComboBox возвращает не текст, а идентификатор выбранной записи, и возвращает -1 если ничего не выбрано, т.е.:
WHERE case when {cbGroup}=-1 then 1=1 else {cbGroup}=id_group end
Спасибо! Я так и понял, что возвращается Id - пытался на 0 проверить, было смутное подозрение про -1 , но не попробовал. А как по поводу проверки строки?
atempbox
вроде все правильно, я у себя проверил такой вариант:
WHERE case when '{edFirstName}'='' then 1=1 else person.firstname LIKE "%{edFirstName}%" end;
А зависит результат этой проверки для строки от значения в свойстве Filter строки-параметра?
atempbox
нет, скиньте проект на support@drive-software.com
посмотрю в чем дело, наверно как то связано с регистром букв.
Собственно я задавал вопросы по условиям sql запроса в связи с тем, что у меня такая задача:
Есть грид на форме, который заполняется из таблицы базы данных при показе формы. Есть кнопка Поиск, которая выполняет акшин Поиск с использованием нескольких полей для поиска и результаты помещает в этот грид. Все работает нормально. Но мне понадобилось в гриде добавить условие в поле Фильтр - (table.id_register=1) После этого при нажатии на кнопку Поиск происходит ошибка near "WHERE": syntax error. если в каком-либо из полей которые участвуют в условиях поиска есть данные (очевидно формируются условия поиска и они как-то соединяются с условием в поле Фильтр грида) Можно как-то решить эту проблему? Я решил по кнопке Поиск делать не экшин Поиск а sql запрос с условиями, про которые я тут задавал вопросы. В принципе это решает проблему выбора и показа нужных записей, но в этом случае я не могу открыть запись на редактирование, так как нет в запросе id записи. Если id добавить, то открыть на редактирование можно, но поле id показывается в гриде, что не очень хорошо.
atempbox
При добавлении условия в фильтр, ошибки не должно быть, проверил у себя, пришлите проект пожалуйста на support@drive-software.com
проверю в чем дело.
Если вы не хотите видеть значение id в компоненте таблицы, введите название для этой колонки delete_col
http://myvisualdatabase.com/help_ru/com … n_sql.html
Про скрытое id понял, спасибо! Кусок проекта отправил на support.
atempbox
Нашел у себя ошибку, исправил.
Скачайте файл builder.dll и скопируйте в папку с программой My Visual Database с заменой, затем запустите проект, ошибка должна исчезнуть.
https://www.dropbox.com/s/prhcfpwagmjgu9m/builder.zip
Спасибо, заработало! НО - если теперь убрать из Settings грида фильтр, то возникает ошибка! :-(
My Visual Database → Russian → SQL запросы
Powered by PunBB, supported by Informer Technologies, Inc.
Theme Hydrogen by Kushi