0 / 0 / 0
Регистрация: 10.07.2018
Сообщений: 11
1

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

10.07.2018, 08:31. Показов 1493. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2018, 08:31
Ответы с готовыми решениями:

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

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

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

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

9
5058 / 3944 / 1303
Регистрация: 14.04.2014
Сообщений: 18,159
Записей в блоге: 18
10.07.2018, 08:36 2
оформляйте код как следует, пожалуйста

использование дат для выборки пример тут
https://www.cyberforum.ru/blog... g5254.html
0
Модератор
7343 / 4811 / 2014
Регистрация: 21.01.2014
Сообщений: 20,406
Записей в блоге: 3
10.07.2018, 09:57 3
По ошибке судя, у Вас в БД поля символьного типа, а не DateTime...
0
0 / 0 / 0
Регистрация: 10.07.2018
Сообщений: 11
10.07.2018, 10:47  [ТС] 4
D1973, нет, в базе тип datetime...
0
Модератор
7343 / 4811 / 2014
Регистрация: 21.01.2014
Сообщений: 20,406
Записей в блоге: 3
10.07.2018, 10:53 5
Значит, системную дату, которую выдает DateTimePicker надо преобразовывать в формат, требуемый на Вашем SQL-сервере... Скорее всего там у Вас mm/dd/yyyy, тогда как в ОС - dd.mm.yyyy
0
5058 / 3944 / 1303
Регистрация: 14.04.2014
Сообщений: 18,159
Записей в блоге: 18
10.07.2018, 11:27 6
Лучший ответ Сообщение было отмечено Sav_KS как решение

Решение

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

Добавлено через 1 минуту
только тип параметров не забывать указывать
1
221 / 65 / 32
Регистрация: 23.05.2014
Сообщений: 645
11.07.2018, 06:37 7
Sav_KS, и все же убедитесь, что у вас в региональных настройках сервера (и клиента на всякий случай) все совпадает по датам/времени с нашим регионом, а то может на сервере вообще какой-нибудь марсианский формат даты установлен, а вы ему наш пропихнуть пытаетесь.
0
0 / 0 / 0
Регистрация: 10.07.2018
Сообщений: 11
11.07.2018, 08:59  [ТС] 8
так, с датой вроде бы разобралась, вопрос в следующем: как вывести найденную инфу в stringgrid???
0
5058 / 3944 / 1303
Регистрация: 14.04.2014
Сообщений: 18,159
Записей в блоге: 18
11.07.2018, 09:21 9
Лучший ответ Сообщение было отмечено Sav_KS как решение

Решение

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

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

Как сделать фильтрацию в DataSet по двум датам используя DateTimePicker
Фильтрую данные в DBGrid по одному DateTimePicker (с даты...): ...

Фильтрация в админке по датам
Сделал приложение Booking. Хочу сделать возможность фильтрации в админке списка заявок на...

DataGridView — фильтрация по датам
Доброго времени суток всем. Товарищи, прошу помощи, мозг кипит и прочее... Есть база в access....

Запрос по двум датам с условием и сортировкой повторяющихся значений
Здравствуйте уважаемые форумчане. Помогите пожалуйста. Я если честно в программировании очень плохо...


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

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

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