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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2012, 09:32   #1
ins813
Форумчанин
 
Регистрация: 18.05.2012
Сообщений: 111
По умолчанию Сортировка по Пикеру с переменной

Здравствуйте, Почему не правильно сортирует по дате, если выставить Два дататаймпикера допустим с 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 =: predpr';
  ADOQuery1.Parameters.ParamByName('predpr').Value:=pred;
  Dt1 := Trunc(DateTimePicker1.Date);
  ADOQuery1.Parameters.ParamByName('StartDate').Value := Dt1;
  Dt2 := Trunc(DateTimePicker2.Date);
  ADOQuery1.Parameters.ParamByName('FinishDate').Value := Dt2;
  ADOQuery1.Active:=true;



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось ins813; 03.10.2012 в 09:47.
ins813 вне форума Ответить с цитированием
Старый 03.10.2012, 09:40   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Dt1 и Dt2 какого типа? И Trunc зачем - DateTimePicker.Date содержит дату без времени
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.10.2012, 09:45   #3
ins813
Форумчанин
 
Регистрация: 18.05.2012
Сообщений: 111
По умолчанию

var
Dt1, Dt2 : TDateTime;

Trunc- убрать ?
ins813 вне форума Ответить с цитированием
Старый 03.10.2012, 09:52   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Попробуйте так
Код:
  ADOQuery1.Parameters.ParamByName('StartDate').Value := DateTimePicker1.Date;
  ADOQuery1.Parameters.ParamByName('FinishDate').Value :=DateTimePicker2.Date;
Если в date и время есть, то ваше 30,05,2012 не попадет в выборку, Between не прокатит, нужно date>=01.05.2012 and date<31.05.2012
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.10.2012, 09:58   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

код очень похож на мой (мне кажется, что я такой писал в примере на форуме)

Цитата:
Dt1 и Dt2 какого типа?
впрочем, Аватар прав насчёт типа переменных Dt1 и Dt2
должны быть типа TDateTime

Цитата:
Trunc зачем - DateTimePicker.Date содержит дату без времени
А вот это не так!
попробуйте. киньте на форму DateTimePicker и поместите код:
Код:
  Caption := DateTimeToStr( DateTimePicker1.Date );

ins813, формально у вас всё нормлаьно. и, если с типами Dt1 и Dt2 всё нормально (они типа TDateTime), тогда проверьте структуру БД - смотрите тип поля date. чудес не бывает, либо с полем date что-то не так, либо данные там не те, что Вы ожидаете, либо ещё что-то..
p.s. в вашей СУБД - date не ключевое слово?

добавлено
Цитата:
1,05,2012 по 30,05,2012
а почему, собственно, запятые? Это что за формат представления даты?!

Последний раз редактировалось Serge_Bliznykov; 03.10.2012 в 10:02.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.10.2012, 09:59   #6
ins813
Форумчанин
 
Регистрация: 18.05.2012
Сообщений: 111
По умолчанию

Не работате ( А как узнать или отключить время в Пикере ?

Serge_Bliznykov, Что то запутался если не сложно объясните:
1. Кидаем заново Пикеры ?
2. Caption прописывать в пикер ?
3. А мой старый код оставть полностью ?
в моей БД вроде все нормально,единственное может в столбце Date указана тип Varchar, если это влияет?




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

Прошу учесть на будущее...

Модератор.

Последний раз редактировалось Serge_Bliznykov; 03.10.2012 в 10:30.
ins813 вне форума Ответить с цитированием
Старый 03.10.2012, 10:27   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Serge_Bliznykov, Что то запутался если не сложно объясните:
1. Кидаем заново Пикеры ?
2. Caption прописывать в пикер ?
Забудьте, это было не Вам, а Аватар'у!


Цитата:
в столбце Date указана тип Varchar, если это влияет?
ДА!!! ЭТО И ЕСТЬ ПРИЧИНА!!


СУБД у Вас какая?
Конвертируйте поле Date в дату, а потому уже используйте вышеприведённый код.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.10.2012, 10:31   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
А вот это не так!
попробуйте. киньте на форму DateTimePicker и поместите код:
И правда, help-у доверился где написано
Цитата:
TDate represents a special type of TDateTime value that has no decimal part. A TDate value represents the number of days that have elapsed since 12/30/1899.
Брешут.
У ТС вся проблема в varchar для date.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.10.2012, 10:58   #9
ins813
Форумчанин
 
Регистрация: 18.05.2012
Сообщений: 111
По умолчанию

СУБД - MS SQL 2008.
А C
Код:
aption := DateTimeToStr( DateTimePicker1.Date ); вставлять в FORM.Create ?
ins813 вне форума Ответить с цитированием
Старый 03.10.2012, 11:17   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
А C
Код:
Caption := DateTimeToStr( DateTimePicker1.Date ); вставлять в FORM.Create ?
Забудьте об этом. Совсем!! это к вашей проблеме никакого отношения не имеет!


Цитата:
СУБД - MS SQL 2008.
это уже интереснее. в поле Date у вас именно такие значения, как вы привели в примере?
Цитата:
1,05,2012
30,05,2012
Именно так? Буквально?
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для public переменной класса присвоить адрес ячеек из внешней переменной _KUL Qt и кроссплатформенное программирование С/С++ 2 28.05.2012 12:04
Быстрая сортировка(сортировка Хоара). Сортировка фрагмента массива [C++] druger Помощь студентам 0 20.04.2012 15:49
Найти значение переменной y в зависимости от значения переменной х Rishi Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 11.05.2011 20:25
Имя переменной как переменная. Как получить доступ к такой переменной? Denni Microsoft Office Access 8 02.04.2009 10:06
Работа с файлами (создание, удаление, открытие, связываение с переменной, очищение памяти переменной) Arkuz Общие вопросы Delphi 12 25.09.2007 20:47