Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Sav_KS
0 / 0 / 0
Регистрация: 10.07.2018
Сообщений: 11
1

Фильтрация по двум датам DateTimePicker

10.07.2018, 08:31. Просмотров 1078. Ответов 9
Метки нет (Все метки)

Есть БД SQL Server
Надо осуществить фильтрацию по двум полям (датам: DateTimePicker1, DateTimePicker2). Написала код:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
function date_update(date:string):string;
  var res_str:string;
  begin
    res_str:=date[7]+date[8]+date[9]+date[10]+'-'+date[4]+date[5]+'-'+date[1]+date[2];
    Result:=res_str;
  end;
 
 
function date_update_GGGGMMDD(date:string):string;
  var res_str:string;
  begin
    if Length(date)<>8 then res_str:='НЕВЕРНАЯ ДАТА' else
    
    res_str:=date[7]+date[8]+'.'+date[5]+date[6]+'.'+date[1]+date[2]+date[3]+date[4];
    Result:=res_str;
 
  end;
 
 
procedure tnew_converter.execute;
  begin
    synchronize(convert);
  end;
 
procedure TForm1.BitBtn1Click(Sender: TObject);
 
  begin
    new_convert:=tnew_converter.Create(true);
    new_convert.FreeOnTerminate:=true;
    new_convert.Priority:=tpNormal;
    new_convert.Resume;
  end;
 
procedure tnew_converter.convert;
  begin
form1.ADOQuery_converter.SQL.Clear;
form1.ADOQuery_converter.Close;
form1.ADOQuery_converter.SQL.Text:= 'SELECT * FROM main WHERE CreatDate >= :dstart and CreatDate<= :dend';
form1.ADOQuery_converter.Parameters.ParamByName('dstart').Value:= Form1.DateTimePicker1.DateTime;
form1.ADOQuery_converter.Parameters.ParamByName('dend').Value:= Form1.DateTimePicker2.DateTime;
form1.ADOQuery_converter.Open;
...
Ошибка: "The conversion of char date type to datetime date type resulted in an out-of-range datetime value.
Помогите, пожалуйста
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2018, 08:31
Ответы с готовыми решениями:

Select по датам, заданным в DateTimePicker
Привет, коллеги! Посветите, бьюсь долго и безуспешно.:wall: Надо организовать выборку строк из...

Поиск по двум датам
Подскажите как правильно сделать запрос диапазона по двум датам? С этим кодом не получается ...

Фильтрация в table с datetimepicker
Здравствуйте....есть DBgrid с базой данных.Как cделать фильтрацию , чтоб при выборе даты с...

Фильтрация даних DBGrid и DateTimePicker
Вопрос. Как сделать фильтрацию данных в Гриде. Есть колонка Дата куда прописываем дату. И...

Фильтрация данных через два DateTimePicker
Есть две таблицы del] вывести информацию обо всех маршрутах самолетов данного типа в указанный...

9
krapotkin
4062 / 3388 / 1149
Регистрация: 14.04.2014
Сообщений: 16,228
Записей в блоге: 17
10.07.2018, 08:36 2
оформляйте код как следует, пожалуйста

использование дат для выборки пример тут
http://www.cyberforum.ru/blogs/469693/blog5254.html
0
D1973
Модератор
4776 / 3416 / 1560
Регистрация: 21.01.2014
Сообщений: 14,485
Записей в блоге: 3
Завершенные тесты: 1
10.07.2018, 09:57 3
По ошибке судя, у Вас в БД поля символьного типа, а не DateTime...
0
Sav_KS
0 / 0 / 0
Регистрация: 10.07.2018
Сообщений: 11
10.07.2018, 10:47  [ТС] 4
D1973, нет, в базе тип datetime...
0
10.07.2018, 10:47
D1973
Модератор
4776 / 3416 / 1560
Регистрация: 21.01.2014
Сообщений: 14,485
Записей в блоге: 3
Завершенные тесты: 1
10.07.2018, 10:53 5
Значит, системную дату, которую выдает DateTimePicker надо преобразовывать в формат, требуемый на Вашем SQL-сервере... Скорее всего там у Вас mm/dd/yyyy, тогда как в ОС - dd.mm.yyyy
0
krapotkin
4062 / 3388 / 1149
Регистрация: 14.04.2014
Сообщений: 16,228
Записей в блоге: 17
10.07.2018, 11:27 6
Лучший ответ Сообщение было отмечено Sav_KS как решение

Решение

если использовать параметры, ничего преобразовывать не надо

Добавлено через 1 минуту
только тип параметров не забывать указывать
1
drvolodko
218 / 62 / 32
Регистрация: 23.05.2014
Сообщений: 612
11.07.2018, 06:37 7
Sav_KS, и все же убедитесь, что у вас в региональных настройках сервера (и клиента на всякий случай) все совпадает по датам/времени с нашим регионом, а то может на сервере вообще какой-нибудь марсианский формат даты установлен, а вы ему наш пропихнуть пытаетесь.
0
Sav_KS
0 / 0 / 0
Регистрация: 10.07.2018
Сообщений: 11
11.07.2018, 08:59  [ТС] 8
так, с датой вроде бы разобралась, вопрос в следующем: как вывести найденную инфу в stringgrid???
0
krapotkin
4062 / 3388 / 1149
Регистрация: 14.04.2014
Сообщений: 16,228
Записей в блоге: 17
11.07.2018, 09:21 9
Лучший ответ Сообщение было отмечено Sav_KS как решение

Решение

эмм?
у датасета есть поля
у полей значения
ячейки грида - это строки, если значения в виде строки класть в ячейки, цель и достигнется

Delphi
1
grid.cells[x,y] := query.FieldByName('xxx').AsString;
1
Sav_KS
0 / 0 / 0
Регистрация: 10.07.2018
Сообщений: 11
11.07.2018, 09:33  [ТС] 10
krapotkin, большое спасибо, Вам! извиняюсь за столь "новичковые" вопросы
0
11.07.2018, 09:33
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2018, 09:33

Фильтрация по двум полям
Добрый день. Необходимо сделать фильтрацию по двум полям: &quot;Код_группы&quot; и &quot;Код_приказа&quot;. Т.е...

Фильтрация по двум условиям
у меня есть таблица Ttabel и в ней поле год мне надо отфильтровать данные по двум значениям из...

Фильтрация по двум полям
проблема вот в чем нужно найти записи в базе но они организованы таким образом что запись 1 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.