Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DateBase и тип Date 
:(
    Опции темы
German
  Дата 3.11.2002, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 25.3.2002

Репутация: нет
Всего: нет



В базе есть поле Date типа Date.
Как произвести отбор по этим датам допустим с 09.10.2002 по 09.11.2002

пример кода:
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
with Table1 do
begin
IndexFieldNames:= 'date';
setrangestart;
Table1date.AsDateTime:=11.11;
//FieldByName(date).AsDateTime;
SetRangeEnd;
Table1date.AsDateTime:=11.12;
ApplyRange;
end;

end;


результат параметры можно задовать вида хх.хх и даже при этом ни какого результата только куча ошибок!!!
PM MAIL   Вверх
Medved
Дата 4.11.2002, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



А не проще ли использовать простейший SQL запрос?
Если же надо TTable то отфильтруй значения через TTable.Filter (хотя фильтровку не рекомендую).

Или я чего-то непонимаю?


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Medved
Дата 4.11.2002, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Или используй метод SetRange (он объединяет в себе все три метода SetRangeStart, SetRangeEnd и ApplyRange)

Хотя я тебе не рекомендую  осуществлять фильтрация по индескным полям...


И еще одна заметка, фильтрация методами ApplyRange/SetRange должна производиться только по ключевым полям. Хотя у тебя это и предусмотрено, но возможно здесь у тебя какая-то загвозтка.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
German
Дата 7.11.2002, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 25.3.2002

Репутация: нет
Всего: нет



Цитата(Pegas @ 03.11.2002, 08:11)
А не проще ли использовать простейший SQL запрос?

Я скуел не знаю  :(  не подскажешь что за операторы надо использовать и если не сложно примерчик.
PM MAIL   Вверх
Vit
Дата 7.11.2002, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Код

Query1.sql.text:='Select * From TableName Where (Date>:D1) and (Date<:D2)';
Query1.params.parsSql(Query1.sql.text, true);
Query1.params.parambyname('d1').value:=Stringtodatetime('09.10.2002');
Query1.params.parambyname('d2').value:=Stringtodatetime('09.11.2002');
Query1.active:=true;

Далее работаешь с Query1 так как если бы это была таблица.
Код писал на вскидку так что могут быть мелкие опечатки




--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Vit
Дата 7.11.2002, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



В твоём коде ошибка здесь:

Table1date.AsDateTime:=11.11;

Компилятор интерпретирует 11.11 как "11 целых 11 сотых". Тип TDateTime - это тип real, где целая часть количество дней прошедших с 1 января 1899 года, а дробная часть - это время...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
German
Дата 12.11.2002, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 25.3.2002

Репутация: нет
Всего: нет



Сенькью веримач  :)
PM MAIL   Вверх
Cashey
Дата 14.11.2002, 03:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 2
Всего: 60



Вот простой SQL код:
SELECT Date
from TableName
where beetwen '01/01/2002' and '31/01/2002'
И ненадо мучится TQuery, запусти SQLBuilder




--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Vit
Дата 14.11.2002, 03:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Цитата(Cashey @ 13.11.2002, 10:31)
SELECT Date
from TableName
where beetwen '01/01/2002' and '31/01/2002'


В этом коде 2 ошибки, точнее неточности, которые могут стать потенциальными ошибками, именно по этому я и привёл код с параметрами. Итак:

1) Не все SQL сервера понимают строки как нечто в одинарных кавычках, некоторые требуют двойных кавычек, некоторые сервера могут быть настроены на одинарные ил двойные кавычки. Если дату передавать как параметер, то конечную кверю будет строить сам сервер, и он поставит те кавычки, которые нужны.

2) Где гарантия что формат даты одинаковый на компьютере с программой и компьютере с базой данных? У меня может стоять на клиенте русская винда с русскими настройками и '2/9/2002' будет интерпретироваться как "2 сентября", а на компьютере с базой данных стоит регионарный стандарт для Америки и эта же дата будет означать "9 февраля". (Про разделители полей даты я уже молчу). В этом случае так же параметры работают корректнее - серверу передаётся дата, а он делает кверю в соответствии со своими регионарными стандартами.




--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Medved
Дата 15.11.2002, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



В случае работы с Oracle ему без разницы... в нем, чтобы записать дату требуется следующее (по другому он не воспринимает):

Код

 dm.qOperation.Close;
 dm.qOperation.SQL.Clear;
 dm.qOperation.SQL.Add('INSERT INTO Shema.MyTable (ID_My, NameB, DateB)');
 dm.qOperation.SQL.Add('VALUES (Shema.SEC_ID_My.NEXTVAL,'+''''+e1.Text+''', TO_DATE('''+(Date+''', ''DD.MM.YYYY HH24:MI:SS''))');
 dm.qOperation.Execute;



--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Medved
Дата 15.11.2002, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



блин, ошибка.....


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Medved
Дата 15.11.2002, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



в предыдущем коде ошибка, вот правильный:

Код

VAR Date_my: String;
......
 Date_My := DateToStr(Date)+' '+TimeToStr(Time);

dm.qOperation.Close;
dm.qOperation.SQL.Clear;
dm.qOperation.SQL.Add('INSERT INTO Shema.MyTable (ID_My, NameB, DateB)');
dm.qOperation.SQL.Add('VALUES (Shema.SEC_ID_My.NEXTVAL,'+''''+e1.Text+''', TO_DATE('''+Date_my+''', ''DD.MM.YYYY HH24:MI:SS''))');
dm.qOperation.Execute;



--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Vit
Дата 15.11.2002, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Там клавиша Edit есть для таких случаев - отредактируй ответ, а потом остальные сотри, а то между 3мя ответами уже не теряется где-то правильный...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Medved
Дата 15.11.2002, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



уже выкрутился.....


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0567 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.