Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сортировка по Пикеру с переменной  [new]
Ser813
Member

Откуда:
Сообщений: 65
Здравствуйте, Почему не правильно сортирует по дате, если выставить Два дататаймпикера допустим с 1,05,2012 по 30,05,2012 выводятся данные и с предыдущего месяца ?
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text :='SELECT date,time,name,ed_izm,kol_vo,street ,predpr FROM dbo.material'
+ ' WHERE date BETWEEN :StartDate AND :FinishDate and predpr=redpr';
ADOQuery1.Parameters.ParamByName('p redpr').Value:=pred;
Dt1 := Trunc(DateTimePicker1.Date);
ADOQuery1.Parameters.ParamByName('S tartDate').Value := Dt1;
Dt2 := Trunc(DateTimePicker2.Date);
ADOQuery1.Parameters.ParamByName('F inishDate').Value := Dt2;
ADOQuery1.Active:=true;
3 окт 12, 09:38    [13259559]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по Пикеру с переменной  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Ser813,

какого типа :StartDate и :FinishDate ?
3 окт 12, 09:41    [13259567]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по Пикеру с переменной  [new]
Ser813
Member

Откуда:
Сообщений: 65
Вы имели в виду наверное :
var
Dt1, Dt2 : TDateTime;
3 окт 12, 09:46    [13259586]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по Пикеру с переменной  [new]
qwerty112
Guest
Ser813
Здравствуйте, Почему не правильно сортирует по дате, если выставить Два дататаймпикера допустим с 1,05,2012 по 30,05,2012 выводятся данные и с предыдущего месяца ?
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text :='SELECT date,time,name,ed_izm,kol_vo,street ,predpr FROM dbo.material'
+ ' WHERE date BETWEEN :StartDate AND :FinishDate and predpr=redpr';
ADOQuery1.Parameters.ParamByName('p redpr').Value:=pred;
Dt1 := Trunc(DateTimePicker1.Date);
ADOQuery1.Parameters.ParamByName('S tartDate').Value := Dt1;
Dt2 := Trunc(DateTimePicker2.Date);
ADOQuery1.Parameters.ParamByName('F inishDate').Value := Dt2;
ADOQuery1.Active:=true;

НЕ "сортируются", а "фильтруются"

тип поля date в таблице какой ?

зы
вопрос не этого форума, к слову
3 окт 12, 10:46    [13260003]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по Пикеру с переменной  [new]
qwerty112
Guest
Ser813
Вы имели в виду наверное :
var
Dt1, Dt2 : TDateTime;

и врёт, же главное, и не краснет

какой тогда Trunc, здесь ??
Dt1 := Trunc(DateTimePicker1.Date);
...
Dt2 := Trunc(DateTimePicker2.Date);
3 окт 12, 10:50    [13260034]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по Пикеру с переменной  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
В целом-то, конечно, понятно, что сравниваются не даты, а строковые представления дат.
Причём в этих строках сначала сравниваются дни, потом месяцы, а напоследок годы.
Может, ещё и количество символов у дней и месяцев разное в разных представлениях?
Тогда вообще ужас.

Этим и объясняется
Ser813
если выставить Два дататаймпикера допустим с 1,05,2012 по 30,05,2012 выводятся данные и с предыдущего месяца
3 окт 12, 10:52    [13260048]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по Пикеру с переменной  [new]
Ser813
Member

Откуда:
Сообщений: 65
date тип varchar
3 окт 12, 10:54    [13260063]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по Пикеру с переменной  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Ser813
date тип varchar
Ну так храните хотя бы в порядке уменьшения единиц измерения (годы-месяцы-дни),
чтобы можно было сравнивать непосредственно строки вместо дат.
При этом количество символов, выделяемое под каждую часть даты, должно быть постоянным.
Лучше всего подходит стандартный формат 'YYYYMMDD'

А вообще, в таблице надо хранить дату как дату, а не как строку.
Придумали же типы SMALLDATETIME, DATETIME, DATE, DATETIME2, DATETIMEOFFSET и т.п.
И в Дельфи параметры должны быть подходящего типа.
3 окт 12, 11:02    [13260121]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по Пикеру с переменной  [new]
Ser813
Member

Откуда:
Сообщений: 65
Всем большое спасибо проблема решилась, тип поля изменил на Date.
3 окт 12, 11:45    [13260525]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по Пикеру с переменной  [new]
Ser813
Member

Откуда:
Сообщений: 65
Последнее хотел спросить каким типом должно быть поле в SQL если нужно чтобы числа 001,002,0005 и тд сохранялись именно в этом виде ?
3 окт 12, 11:47    [13260540]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по Пикеру с переменной  [new]
Добрый Э - Эх
Guest
Ser813
Последнее хотел спросить каким типом должно быть поле в SQL если нужно чтобы числа 001,002,0005 и тд сохранялись именно в этом виде ?
Varchar, к примеру.
3 окт 12, 11:53    [13260588]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по Пикеру с переменной  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
Ser813
Последнее хотел спросить каким типом должно быть поле в SQL если нужно чтобы числа 001,002,0005 и тд сохранялись именно в этом виде ?
Если значениями в столбце оперируют как числами, то и хранить их надо как числа. Если же нужно еще получать или хранить представления этих чисел, то использует view или вычисляемые столбцы.
3 окт 12, 12:15    [13260796]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по Пикеру с переменной  [new]
Ser813
Member

Откуда:
Сообщений: 65
invm, понял, спасибо
3 окт 12, 12:58    [13261168]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить