Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2011, 23:37   #1
Серёга Русич
Пользователь
 
Регистрация: 11.05.2011
Сообщений: 31
Восклицание SQL-запрос (поиск)

Добрый вечер! Народ, подскажите пожалуйста, как отсортировть (оставить в DBGrid'е) записи, у которых значение поля Sled_Vstrecha равно сегодняшней дате (DateToStr(Now))?
Код:
ADOQuery1.sql.Text:='SELECT * FROM Clients WHERE Sled_Vstrecha Like'+#39+'%'+Edit1.Text+'%'+#39;
ADOQuery1.ExecSQL;
DataSource1.Enabled:=False;
DataSource1.Enabled:=True;
Код вроде как правильный и ошибок не выдаёт, но визуально в DBGride ничего не происходит
Серёга Русич вне форума Ответить с цитированием
Старый 13.05.2011, 02:37   #2
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от Серёга Русич Посмотреть сообщение
Добрый вечер! Народ, подскажите пожалуйста, как отсортировть (оставить в DBGrid'е) записи, у которых значение поля Sled_Vstrecha равно сегодняшней дате (DateToStr(Now))?
Код:
ADOQuery1.sql.Text:='SELECT * FROM Clients WHERE Sled_Vstrecha Like'+#39+'%'+Edit1.Text+'%'+#39;
ADOQuery1.ExecSQL;
DataSource1.Enabled:=False;
DataSource1.Enabled:=True;
Код вроде как правильный и ошибок не выдаёт, но визуально в DBGride ничего не происходит
Код:
DataSource1.Enabled:=False;
ADOQuery1.sql.Text:='SELECT * FROM Clients WHERE Sled_Vstrecha Like'+#39+'%'+Edit1.Text+'%'+#39;
ADOQuery1.ExecSQL;
DataSource1.Enabled:=True;
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 13.05.2011, 02:40   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Код:
DataSource1.Enabled:=False;
ADOQuery1.sql.Text:='SELECT * FROM Clients WHERE Sled_Vstrecha Like'+#39+'%'+Edit1.Text+'%'+#39;
ADOQuery1.Open;
DataSource1.Enabled:=True;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 13.05.2011, 02:51   #4
Серёга Русич
Пользователь
 
Регистрация: 11.05.2011
Сообщений: 31
По умолчанию

Неа, не помогает(
Серёга Русич вне форума Ответить с цитированием
Старый 13.05.2011, 02:54   #5
Серёга Русич
Пользователь
 
Регистрация: 11.05.2011
Сообщений: 31
По умолчанию

Запрос на добавление записи работает нормально, в принципе всё тоже самое:

Код:
Form1.AdoQuery1.SQl.Text:='INSERT INTO Clients (Data_Vstrechi, Tipa_Object, Address, Rab_Tel, Sot_Tel, FIO, Rezult, Sled_Vstrecha, Prim) VALUES ('#39+Form2.Edit1.Text+#39','#39+Form2.Edit2.Text+#39','#39+Form2.Edit3.Text+#39','#39+Form2.Edit4.Text+#39','#39+Form2.Edit5.Text+#39','#39+Form2.Edit6.Text+#39','#39+R+#39','#39+Form2.Edit8.Text+#39','#39+Form2.Edit9.Text+#39')';
Form1.AdoQuery1.ExecSQL;
Form1.ADOTable1.Active:=False;
Form1.ADOTable1.Active:=True;
Серёга Русич вне форума Ответить с цитированием
Старый 13.05.2011, 03:29   #6
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от Серёга Русич Посмотреть сообщение
Неа, не помогает(
Код:
ADOQuery1.sql.Text:='SELECT * FROM Clients WHERE Sled_Vstrecha Like'+#39+'%'+Edit1.Text+'%'+#39;
ADOQuery1.ExecSQL;
ADOQuery1.Active := true;
DataSource1.Enabled:=False;
DataSource1.Enabled:=True;
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 13.05.2011, 08:19   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) запросы на изменение данных (DELETE FROM ... / INSERT INTO ... / UPDATE ... )
выполняются через метод датасета .ExecSQL;
эти запросы не возвращают набор данных

2) запросы на получение набора данных (SELECT .. FROM )
выполняются через метод .Open;
(или, что полностью то же самое установление свойства .Active := true; )
ExecSQL в данном случае не только бесполезен - он ВРЕДЕН!.

3) для ввода даты лучше использовать не Edit - а специальный компонент - TDateTimePicker

4) запросы, где фигурирует дата лучше делать параметрическими (поиск по форуму даст множество тем)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.05.2011, 12:58   #8
Серёга Русич
Пользователь
 
Регистрация: 11.05.2011
Сообщений: 31
По умолчанию

Код:
ADOQuery1.sql.Text:='SELECT * FROM Clients WHERE Sled_Vstrecha Like'+#39+'%'+Edit1.Text+'%'+#39;
ADOQuery1.ExecSQL;
ADOQuery1.Active := true;
DataSource1.Enabled:=False;
DataSource1.Enabled:=True;
Тот же результат, даже если вместо ExecSQL стоит Open
Кстати, Edit1.Text стоял временно, для тестирования. Сейчас стоит DateToStr(Now). Но сути дело это не меняет. Я даже поле с датой в аксесе в текстовый формат перевёл
Серёга Русич вне форума Ответить с цитированием
Старый 13.05.2011, 13:00   #9
Серёга Русич
Пользователь
 
Регистрация: 11.05.2011
Сообщений: 31
По умолчанию

Может я пришлю Вам программу, а Вы посмотрите?
Серёга Русич вне форума Ответить с цитированием
Старый 13.05.2011, 14:29   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Может я пришлю Вам программу, а Вы посмотрите?
насколько я понимаю, у Вас уже есть права на прикрепление вложений к вашим сообщениям ("расширенный режим" - "Управление вложениями").
Ну, либо выложите проект на любой бесплатный файлообемнник, а сюда ссылку на скачивание.
Только не забудьте приложить небольшую текстовую БД и исходники запаковать в архив. EXE файл включать в архив совсем не обязательно!

и ещё. не пишите несколько коротких сообщений друг за другом.
Это запрещено правилами форума.
Есть что добавить - нажимайте на своём крайнем сообщении "Правка" и дописывайте/изменяйте текст.



ДОБАВЛЕНО

Пока Вы не выложили архив.
Какая у Вас СУБД?
И скажите, поле Sled_Vstrecha в БД какого типа? Строковое? Или Date (DateTime) ?
и в таблице Clients есть записи, где Sled_Vstrecha имеет значение 13.05.2011 (сегодняшнее число) ?!

я бы для начала попробовал так:
Код:
ADOQuery1.sql.Text:='SELECT * FROM Clients WHERE Sled_Vstrecha = :PDATE1';
ADOQuery1.Parameters.ParamByName('PDATE1').Value := Trunc(Now);
ADOQuery1.Open;

А всё это (что ниже) не нужно:
DataSource1.Enabled:=False;
DataSource1.Enabled:=True;

Последний раз редактировалось Serge_Bliznykov; 13.05.2011 в 14:36.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
Поиск SQL запрос ANT35 Помощь студентам 1 28.04.2010 00:03
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
SQL-запрос на поиск LANDER БД в Delphi 13 04.06.2009 07:00
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15