Поиск:

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


Бывалый
*


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

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



Доброго дня всем!
Подскажите как можно сделать запрос  из бд по дате, времени и IP адресу? 
Эти значения должны вводиться пользователем в MaskEdit-ы
PM MAIL ICQ   Вверх
pseud
Дата 9.12.2008, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Martisha, что за база, что в базе, какие мысли есть. 
хотя ответы на эти вопросы все равно не объяснят, что конкретно надо.


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


Бывалый
*


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

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



Цитата(pseud @  9.12.2008,  11:11 Найти цитируемый пост)
что за база

Oracle

Цитата(pseud @  9.12.2008,  11:11 Найти цитируемый пост)
хотя ответы на эти вопросы все равно не объяснят, что конкретно надо. 

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


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


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

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



Цитата(Martisha @  9.12.2008,  11:43 Найти цитируемый пост)
думаю еще сама поробую, потом код если что выложу для поправок

ок
Цитата(Martisha @  9.12.2008,  09:36 Найти цитируемый пост)
Эти значения должны вводиться пользователем в MaskEdit-ы

у меня аллергия на етот контрол.


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


Бывалый
*


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

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



Цитата(pseud @  9.12.2008,  12:39 Найти цитируемый пост)
 меня аллергия на етот контрол. 

есть еще варианты?
PM MAIL ICQ   Вверх
Akella
Дата 9.12.2008, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Martisha, ты когда создавала тему, читала, то что обведено красным?
user posted image

УЖЕ И ЖИРНЫМ ВАМ ВЫДЕЛЯЮТ - КАК ПАСТЕНКУ ГАРОХАМ  smile  smile  smile

Добавлено через 24 секунды
НУЖНО БУДЕТ СКОРО ТАКИМ ШРИФТОМ ПИСАТЬ

Добавлено через 4 минуты и 21 секунду
примерно так:
Код

TQuery.sql.text := 'select id, name from table1 where date1 = ' + DateToString(DateTimePicker1.Date) + ' time1 = ' + TimeToString(DateTimePicker2.Time) + ' ip = ' + QuotedStr(MaskEdit1.text)

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


Бывалый
*


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

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



Цитата(Akella @  9.12.2008,  12:58 Найти цитируемый пост)
НУЖНО БУДЕТ СКОРО ТАКИМ ШРИФТОМ ПИСАТЬ

да уж, проглядела как то

Добавлено через 41 секунду
ну, поэтому инаписала это:
Цитата(Martisha @  9.12.2008,  11:43 Найти цитируемый пост)
еще сама поробую, потом код если что выложу для поправок 


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


Творец
****


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

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



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


Бывалый
*


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

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



Цитата(Akella @  9.12.2008,  13:27 Найти цитируемый пост)
Давай, выкладывай, посмотрим.   

как только получится, сразу же   smile 
PM MAIL ICQ   Вверх
Martisha
Дата 10.12.2008, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



в общем, использую Oracle, Delphi7, подключаюсь к базе с помощью ODAC
в базе находится информация: статистика исходящего/входящего траффика интернета:
нужно для удобства просмотра этой статистики, чтобы пользователь мог ввести период получения этой статистики(она приходит раз в час), т.е. дату и время и при желании конкретный IP адрес..все отображается в dbGrid
вот собственно форма с выборкой:

user posted image

для ввода дат и времени думаю использовать MaskEdit, при нажатии 'просмотр статистики', появляется другая форма, на которой располагается dbGrid и должен отображаться результат



Это сообщение отредактировал(а) Martisha - 10.12.2008, 11:07
PM MAIL ICQ   Вверх
Martisha
Дата 10.12.2008, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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

procedure TForm1.Button1Click(Sender: TObject);
Var dv1,dv2:String;
begin
  dv1:=Form1.MaskEdit1.Text+Form1.MaskEdit3.Text;
  dv2:=Form1.MaskEdit2.Text+Form1.MaskEdit4.Text;
    Form1.OraQuery2.Close;
    Form1.OraQuery2.SQL.Clear;
    Form1.ORAQuery2.SQL.Add('SELECT *'+
                      'FROM traffic'+
                      'WHERE datetime<='+chr(39)+dv2+chr(39)+'AND datetime>='+chr(39)+dv1+chr(39));
    Form1.OraQuery2.Open;
Form2.Show();
end;

MaskEdit-ы складываю потому что в базе дата и время у меня в одном поле

Это сообщение отредактировал(а) Martisha - 10.12.2008, 13:27
PM MAIL ICQ   Вверх
Akella
Дата 10.12.2008, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(Martisha @  10.12.2008,  13:26 Найти цитируемый пост)
MaskEdit-ы складываю потому что в базе дата и время у меня в одном поле

кинь на форму DateTimePicker вместо MaskEdit`ов, я ж тебе не зря код написал с использованием DateTimePicker`ов

Добавлено через 54 секунды
Цитата(Martisha @  10.12.2008,  13:26 Найти цитируемый пост)
ошибка вылазит

щас мы откроем свои чакры, достанем бубны и отгадаем текст ошибки, ты не уходи, погоди немного, ок?

Добавлено через 2 минуты и 54 секунды
Цитата(Martisha @  10.12.2008,  13:26 Найти цитируемый пост)
'FROM traffic'+

где пробел перед from?

ты бы оттестировала запрос вначале НЕ в дельфи

Добавлено через 8 минут и 31 секунду
Цитата(Martisha @  10.12.2008,  13:26 Найти цитируемый пост)
WHERE datetime

где пробел перед where?
твой запрос выглядит так для сервера:
SELECT *FROM trafficWHERE datetime......

Добавлено через 9 минут и 58 секунд
Можешь так сделать, чтобы увидеть текст запроса:

после
Цитата(Martisha @  10.12.2008,  13:26 Найти цитируемый пост)
orm1.OraQuery2.SQL.Clear;
    Form1.ORAQuery2.SQL.Add('SELECT *'+
                      'FROM traffic'+
                      'WHERE datetime<='+chr(39)+dv2+chr(39)+'AND datetime>='+chr(39)+dv1+chr(39));


поставь вывод сообщения
Код

ShowMessage(Form1.ORAQuery2.SQL.TEXT);

и увидишь текст запроса
PM MAIL   Вверх
Martisha
Дата 10.12.2008, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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




ошибка такая:
'ORA-00933: SQL command not properly ended'

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


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

Код

Form1.ORAQuery2.SQL.Add('SELECT *'+''+
                      'FROM traffic'+''+
                      'WHERE datetime<='+chr(39)+dv2+chr(39)+'AND datetime>='+chr(39)+dv1+chr(39));



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

а где?


Цитата(Akella @  10.12.2008,  14:28 Найти цитируемый пост)
кинь на форму DateTimePicker вместо MaskEdit`ов, я ж тебе не зря код написал с использованием DateTimePicker`ов

сейчас попробую, вчера не получилось что то



Цитата(Akella @  10.12.2008,  14:28 Найти цитируемый пост)
ты не уходи, погоди немного, ок?

ок, до пяти я тут еще.. smile 
PM MAIL ICQ   Вверх
Данкинг
Дата 10.12.2008, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Цитата(Martisha @  10.12.2008,  14:47 Найти цитируемый пост)
а где?

В Pl/Sql, вероятно. smile

Добавлено через 1 минуту и 29 секунд
Цитата(Akella @  10.12.2008,  14:28 Найти цитируемый пост)
кинь на форму DateTimePicker вместо MaskEdit`ов, 

Вот это золотые слова, кстати: зачем здесь нужны MaskEdit'ы ?! smile 


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


Бывалый
*


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

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



Цитата(Данкинг @  10.12.2008,  15:19 Найти цитируемый пост)
зачем здесь нужны MaskEdit'ы ?!   

посоветовали  smile 
впрочем поменяла уже на DateTimePicker
Цитата(Данкинг @  10.12.2008,  15:19 Найти цитируемый пост)
В Pl/Sql, вероятно. 

я так и подумала  smile

Добавлено через 1 минуту и 24 секунды
только не совсем понимаю как это осуществить 
PM MAIL ICQ   Вверх
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   Вверх
pseud
Дата 17.12.2008, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Martisha @  17.12.2008,  13:46 Найти цитируемый пост)
в "t.date_"  t зачем? 

1. принято раздавать псевдонимы таблицам, особенно если их много и у них длинные имена, чтобы знать чье поле чье в селекте
2. как я понял ты работаешь с PL/SQL Developer. Так вот в нем очень удобно имея псевдоним написать t. и он выдаст выпадающий списко (как в дельфи короче). удобно.
3. в нашем случае читай внимательно
Код

SQL.Add('  traffic t');



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


Бывалый
*


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

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



Цитата(pseud @  17.12.2008,  14:49 Найти цитируемый пост)
1. принято раздавать псевдонимы таблицам, особенно если их много и у них длинные имена, чтобы знать чье поле чье в селекте

знаю, просто у меня будет только одна таблица, так что думаю это не обязательно?  smile 
но на будущее запомню)
PM MAIL ICQ   Вверх
Martisha
Дата 17.12.2008, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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


Эксперт
****


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

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



Цитата(Martisha @  17.12.2008,  17:17 Найти цитируемый пост)
только сортировки не происходит

тебе сортировка или фильтрация нужна всетаки?


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Martisha
Дата 17.12.2008, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Frees @  17.12.2008,  15:36 Найти цитируемый пост)
тебе сортировка или фильтрация нужна всетаки? 

ой..фильтрация конечно). я хотела сказать, что вообще ничего не происходит, просто отображаются все записи из таблицы, а мне нужны только из интервала введенных дат  smile 

в самом запросе, когда делаешь 
Код

ShowMessage(SQL.Text);
 
запрос он выглядит так:
Код

select  *
from  traffic 
where 
            date_ BETWEEN to_date('19.11.2008','DD.MM.YYYY')
     and to_date('19.11.2008','DD.MM.YYYY')

т.е. даты которые вводишь в запросе отображаются, только почему то в dbGrid все записи помещаются независимо от введенных дат

Добавлено через 7 минут и 47 секунд
т.е. фильтрации не проитсходит

Это сообщение отредактировал(а) Martisha - 17.12.2008, 16:00
PM MAIL ICQ   Вверх
pseud
Дата 17.12.2008, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Martisha @  17.12.2008,  15:53 Найти цитируемый пост)
т.е. даты которые вводишь в запросе отображаются, только почему то в dbGrid все записи помещаются независимо от введенных дат


выполни плиз тот же код прямо в PL\SQL Developer


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


Творец
****


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

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



Martisha, ответь, запрос работает НЕ в дельфи? В какой среде разработки ты работаешь с базой? В этой IDE запрос работает?

Может у тебя запрос с теми параметрами ни разу не должен ничего возвращать.
PM MAIL   Вверх
Martisha
Дата 18.12.2008, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(pseud @  17.12.2008,  16:40 Найти цитируемый пост)
выполни плиз тот же код прямо в PL\SQL Developer 

уже, запрос нормально проходит

Добавлено через 2 минуты и 48 секунд
Цитата(Akella @  17.12.2008,  19:33 Найти цитируемый пост)
Может у тебя запрос с теми параметрами ни разу не должен ничего возвращать. 

запрос вообще работает, в дельфи не работает
PM MAIL ICQ   Вверх
Martisha
Дата 19.12.2008, 11:34 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



все, разобралась, получилось!  smile 
Код

procedure TForm1.Button1Click(Sender: TObject);
var DataText1,DataText2,TimeText1,TimeText2:String;
begin
DataText1:=DateToStr(DateTimePicker1.DateTime);
DataText2:=DateToStr(DateTimePicker2.DateTime);
TimeText1:=TimeToStr(DateTimePicker3.DateTime);
TimeText2:=TimeToStr(DateTimePicker4.DateTime);
    Form2.ORAQuery1.Close;
    Form2.ORAQuery1.SQL.Clear;
    Form2.ORAQuery1.SQL.Add('SELECT * ' +
                            'FROM traffic ' +
                            'WHERE  date_  > = ' + chr(39) + DataText1 + chr(39) + ' ' +
                            'AND date_ < = ' + chr(39) + DataText2 + chr(39) + ' ' +
                            'AND time_ > = ' + chr(39) + TimeText1 + chr(39) + ' ' +
                            'AND time_ < = ' + chr(39) + TimeText2 + chr(39) + ' ');
    Form2.ORAQuery1.Open;
    ShowMessage(Form2.ORAQuery1.SQL.Text);
  Form2.Show;
end;

просто формат в string надо было перевести  smile 
PM MAIL ICQ   Вверх
Frees
Дата 19.12.2008, 11:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



можно еще немного покороче писать
'AND time_ < = ' + chr(39) + TimeText2 + chr(39) + ' ');

'AND time_ < = '#39 + TimeText2 + #39' ');


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Martisha
Дата 19.12.2008, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Frees @  19.12.2008,  11:40 Найти цитируемый пост)
можно еще немного покороче писать
'AND time_ < = ' + chr(39) + TimeText2 + chr(39) + ' ');

'AND time_ < = '#39 + TimeText2 + #39' '); 

 smile аха, пасиб)
PM MAIL ICQ   Вверх
pseud
Дата 19.12.2008, 15:15 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Frees @  19.12.2008,  11:40 Найти цитируемый пост)
можно еще немного покороче писать

а еще лучше так
Код

'AND time_ < = ' + QuotedStr(TimeText2)
 
и тебе не придется следить за символами #39 (одинарная_кавычка)


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Страницы: (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.0964 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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