Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запрос по дате, времени и IP 
V
    Опции темы
Martisha
Дата 10.12.2008, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



делаю так:
Код

    Form1.OraQuery2.Close;
    Form1.OraQuery2.SQL.Clear;
    Form1.OraQuery2.SQL.Text:='select * from traffic where datetime >= ' + DateToStr(DateTimePicker1.Date) + TimeToStr(DateTimePicker3.Time) + 'and datetime <= ' + DateToStr(DateTimePicker2.Date) + TimeToStr(DateTimePicker4.Time) {+ ' source = ' + QuotedStr(MaskEdit5.text)};
    Form1.OraQuery2.Open;

ошибка та же
PM MAIL ICQ   Вверх
Akella
Дата 10.12.2008, 17:05 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Цитата(Martisha @  10.12.2008,  14:47 Найти цитируемый пост)
Цитата(Akella @  10.12.2008,  14:28 Найти цитируемый пост)
ты бы оттестировала запрос вначале НЕ в дельфи
а где?

Найди здесь себе инструмент для программирования, IDE.

Добавлено через 3 минуты и 12 секунд
Цитата(Martisha @  10.12.2008,  15:48 Найти цитируемый пост)
 TimeToStr(DateTimePicker3.Time) + 'and datetime <= '

где пробелы  smile 

я же сказал поставить, чтобы увидеть свой запрос
Цитата(Akella @  10.12.2008,  14:28 Найти цитируемый пост)
ShowMessage(Form1.ORAQuery2.SQL.TEXT);

ты поставила?

Добавлено через 4 минуты и 36 секунд
Цитата(Martisha @  10.12.2008,  15:48 Найти цитируемый пост)
DateToStr(DateTimePicker2.Date) + TimeToStr(DateTimePicker4.Time)

тебе посоветовали DateTimePicker не для того, чтобы ты их суммировала, а для того, чтобы ты выбирала уже готовые данные с датой И временем

Добавлено через 8 минут и 11 секунд
оставь 2 DateTimePicker: один будет С, а другой ПО

Код
+ ' where date1 between ' + QuotedStr(DateTimePicker1.text) + ' and ' + QuotedStr(DateTimePicker2.text)

получим
+ ' where date1 between ''12/05/2008 12:05:59'' and 13/05/2008 12:05:59'

Добавлено через 9 минут и 11 секунд
не забывай о пробелах  smile 
PM MAIL   Вверх
Данкинг
Дата 10.12.2008, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(Martisha @  10.12.2008,  15:25 Найти цитируемый пост)
посоветовали  smile 

Пусть советчики и программу пишут тогда. smile 

Цитата(Martisha @  10.12.2008,  15:25 Найти цитируемый пост)
только не совсем понимаю как это осуществить  

В смысле? Открыть pl/sql, выбрать свою БД, а затем в окне sql-запросов вбить нужный тебе запрос!


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Martisha
Дата 11.12.2008, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Akella @  10.12.2008,  17:05 Найти цитируемый пост)
где пробелы   

я же сказал поставить, чтобы увидеть свой запрос

ужеуже...
Код

Form1.OraQuery2.SQL.Text:='select * from traffic where datetime >= ' + DateToStr(DateTimePicker1.Date) + TimeToStr(DateTimePicker3.Time) + 'and datetime <= ' + DateToStr(DateTimePicker2.Date) + TimeToStr(DateTimePicker4.Time) {+ ' source = ' + QuotedStr(MaskEdit5.text)};

еще вчера сделала, все равно та же ошибка

Цитата(Akella @  10.12.2008,  17:05 Найти цитируемый пост)
ты поставила?

эээ...теперь да

Цитата(Akella @  10.12.2008,  17:05 Найти цитируемый пост)
оставь 2 DateTimePicker: один будет С, а другой ПО

хорошо)

Цитата(Данкинг @  10.12.2008,  18:38 Найти цитируемый пост)
Пусть советчики и программу пишут тогда.  

 smile 

PM MAIL ICQ   Вверх
Martisha
Дата 11.12.2008, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Akella @  10.12.2008,  17:05 Найти цитируемый пост)
QuotedStr(DateTimePicker1.text)

это не правильно, в справке: function QuotedStr(const S: string): string;
но ведь DateTimePickers не может быть String!!!  smile 
PM MAIL ICQ   Вверх
Akella
Дата 11.12.2008, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



DateTimePickers нет, а DateTimePickers.TEXT может, и серверу дату, время или дату со временем в DSQL нужно передать, как текст, т.е. в кавычках, можно сделать запрос с параметрами

на примере такого
Код

+ ' where date1 between :datebefor and :dateafter'
Form1.ORAQuery2.parambyname('datebefor').value := DateTimePicker1.text;
Form1.ORAQuery2.parambyname('dateafter').value := DateTimePicker2.text;


желательно сделать индекс по полю, где храниться дата со временем

Это сообщение отредактировал(а) Akella - 11.12.2008, 15:38
PM MAIL   Вверх
Martisha
Дата 11.12.2008, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Akella, ох, завтра попробую  smile 
PM MAIL ICQ   Вверх
Martisha
Дата 17.12.2008, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



делаю так, но никакой выборки не происходит(
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
    Form1.OraQuery2.Close;
    Form1.OraQuery2.SQL.Clear;
    Form1.OraQuery2.SQL.Add('select * ');
    Form1.OraQuery2.SQL.Add('From traffic ');
    Form1.OraQuery2.SQL.Add('Where date_ between :d1 and :d2');
    Form1.OraQuery2.ParamByName('d1').Value:=DateTimePicker1.DateTime;
    Form1.OraQuery2.ParamByName('d2').Value:=DateTimePicker2.DateTime;
    ShowMessage(Form1.ORAQuery2.SQL.TEXT);
    Form1.OraQuery2.Open;
Form2.Show();
end;

PM MAIL ICQ   Вверх
pseud
Дата 17.12.2008, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

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



а так:
Код

    OraQuery2.ParamByName('d1').AsDateTime:=DateTimePicker1.DateTime;
    OraQuery2.ParamByName('d2').AsDateTime:=DateTimePicker2.DateTime;

РЕКОМЕНДАЦИЯ: Никогда в классе формы не обращайся к автогенерируемой дельфей глобальной переменной этого класса (здесь Form1). Можно, например, к Self.

ЧИТАТЬ: Рыцарская Квинтана (тестирование по Delphi) с очень детальным пояснением ответов на вопросы по окончании тестирования.


Это сообщение отредактировал(а) pseud - 17.12.2008, 11:50


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Martisha
Дата 17.12.2008, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(pseud @  17.12.2008,  11:49 Найти цитируемый пост)
а так:

так тоже пробовала, результат такой же..
PM MAIL ICQ   Вверх
Данкинг
Дата 17.12.2008, 12:40 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(Martisha @  17.12.2008,  11:33 Найти цитируемый пост)
Form1.OraQuery2.SQL.Add('select * ');
    Form1.OraQuery2.SQL.Add('From traffic ');
    Form1.OraQuery2.SQL.Add('Where date_ between smile1 and smile2');

 smile А почему всё это в одну строчку нельзя написать?
По теме: а в самой СУБД работает всё же или нет?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Martisha
Дата 17.12.2008, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Данкинг @  17.12.2008,  12:40 Найти цитируемый пост)
А почему всё это в одну строчку нельзя написать?

я и в одну писала и так пишу теперь,  в принципе без разницы ведь это!

Цитата(Данкинг @  17.12.2008,  12:40 Найти цитируемый пост)
а в самой СУБД работает всё же или нет? 

с конкретными датами работает, а вот с параметром я не поняла как работать
PM MAIL ICQ   Вверх
pseud
Дата 17.12.2008, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

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



Цитата(Данкинг @  17.12.2008,  12:40 Найти цитируемый пост)
А почему всё это в одну строчку нельзя написать?


а потому что принято селекты писать в несколько строк
Код

select
  *
from 
  table1
where
  id = 1

это ведь лишь частный случай.

Добавлено через 11 минут и 30 секунд
начнем с малого - с даты. используй этот код:
Код

procedure TForm1.Button1Click(Sender: TObject);
  function AsOracleDate(ADate: TDate): string;
  var
    s: string;
  begin
    s := QuotedStr(FormatDateTime('dd.mm.yyyy', ADate));
    Result := Format('TO_DATE(%s,''DD.MM.YYYY'')', [s]);
  end;
begin
  with OraQuery2 do
  begin
    Active := True;
    SQL.Clear;
    SQL.Add('SELECT');
    SQL.Add('  *');
    SQL.Add('FROM');
    SQL.Add('  traffic t');
    SQL.Add('WHERE');
    SQL.Add('  t.date_ BETWEEN ' + AsOracleDate(DateTimePicker1.DateTime));
    SQL.Add('              AND ' + AsOracleDate(DateTimePicker2.DateTime));
    ShowMessage(SQL.Text);
    Active := False;
  end;

  Form2.Show;
end;



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Martisha
Дата 17.12.2008, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(pseud @  17.12.2008,  12:55 Найти цитируемый пост)
а потому что принято селекты писать в несколько строк

помоему не обязательно, просто так удобней
PM MAIL ICQ   Вверх
Martisha
Дата 17.12.2008, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



в "t.date_"  t зачем? 


Это сообщение отредактировал(а) Martisha - 17.12.2008, 13:48
PM MAIL ICQ   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


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

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

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


 




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


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

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