sql datetime непонятки!

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
beneton
Новичок
Сообщения: 16
Зарегистрирован: 14 Апрель 2010, 15:23

sql datetime непонятки!

Сообщение beneton »

Народ помогите!
в MySQL есть поле datetime, как мне сделать в броузе выборку из базы MySQL по дате времени?
там есть группа с датой и временем, к ней крепится string(8) ссылку сделал но почему то не работает!
Аватара пользователя
WadimZapara
Активист
Сообщения: 181
Зарегистрирован: 11 Июнь 2008, 12:11
Откуда: Тамбов

Re: sql datetime непонятки!

Сообщение WadimZapara »

а слабо дать команду
Твой_File{PROP:SQL} = 'SELECT всё_что_нужно FROM откуда_нужно WHERE нужное_условие_для_нужного_поля'
а потом
LOOP
Next(Твой_File); If ErrorCode() Then Break.
! Твоя обработка
END
Компьютер имеет то преимущество перед мозгом, что им пользуются...
beneton
Новичок
Сообщения: 16
Зарегистрирован: 14 Апрель 2010, 15:23

Re: sql datetime непонятки!

Сообщение beneton »

я бы с удовольствием, но мне надо чтобы данные показывались в броузе, сделать как написано выше не проблема
мне надо вывести данные в броуз по интервалу дат/времени
записей очень много(порядка 100.000-200.000 штук) по сути на основе этих данных надо построить график, но для начала хочу выкинуть данные в броуз, а потом буду делать вывод в график!
Аватара пользователя
WadimZapara
Активист
Сообщения: 181
Зарегистрирован: 11 Июнь 2008, 12:11
Откуда: Тамбов

Re: sql datetime непонятки!

Сообщение WadimZapara »

beneton писал(а):я бы с удовольствием, но мне надо чтобы данные показывались в броузе, сделать как написано выше не проблема
мне надо вывести данные в броуз по интервалу дат/времени
записей очень много(порядка 100.000-200.000 штук) по сути на основе этих данных надо построить график, но для начала хочу выкинуть данные в броуз, а потом буду делать вывод в график!
Так опять же проблемы не вижу.
Можно команду на выборку дать до ACCEPT'а, и в цикле считать не все записи NEXT'ом, а не более некоторого количества (или до ErrorCode().
А считывая помещать в нужную тебе очередь для бровза.
Потом, уже в ACCEPT'е по таймеру дососать в очередь остаток скажем по сотенке за итерацию, когда последовательность закончится - выключить таймер.
Эффект - окно с верхушкой списка открывается влёт, а дочитывание идёт уже, можно сказать, в фоне.

Кстати, заметно быстрее всё работает не через обычное CLARION-овское обращение, а через механизм

Код: Выделить всё

  File{PROP:SQL} = команда
  N_pa3 = 100;  EndSequence = FALSE;
  LOOP N_pa3
    NEXT(File);  If ErrorCode() Then EndSequence = TRUE; Break.
!   Поместить в очередь
  END !LOOP
  OPEN(Win)
  ACCEPT
     CASE EVENT()
     OF EVENT:OpenWindow
       If ~EndSequence Then win{PROP:Timer} = 1.
     OF EVENT:Timer
       LOOP N_pa3
          NEXT(File);  If ErrorCode() Then EndSequence = TRUE; Break.
!         Поместить в очередь
       END !LOOP
       If EndSequence Then win{PROP:Timer} = 0.
     END !CASE EVENT()
  END !ACCEPT
При этом, замечу, описание файла клариона не обязательно должно соответствовать полному описанию SQL-таблицы, не нужные поля, индексы можно не включать в кларионовское описание файла.
Главное, чтобы описанные кларионовские поля примерно соответствовали типу полей SQL-таблицы и имели атрибут NAME('имя_SQL_поля').
И выделяемый кларионом буфер файла при этом будет меньше, что опять же увеличивает эффективность.
Компьютер имеет то преимущество перед мозгом, что им пользуются...
kreator
✯ Ветеран ✯
Сообщения: 4984
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 20 раз

Re: sql datetime непонятки!

Сообщение kreator »

А попробуй импортировать эту таблицу в кларионовский словарь. Кларион должен сам распознать это поле. В принципе хелп говорит так:

ODBC TIMESTAMP fields can be manipulated using a STRING(8) followed by a GROUP over it which contains only a DATE field and a TIME field.
Example:

TimeStampField STRING(8),NAME('TimeStampField')
TimeStampGroup GROUP,OVER(TimeStampField)
TimeStampDate DATE
TimeStampTime TIME
END

CREATE creates a TIMESTAMP field if you use a similar structure.
We are hard at work… for you. :)
beneton
Новичок
Сообщения: 16
Зарегистрирован: 14 Апрель 2010, 15:23

Re: sql datetime непонятки!

Сообщение beneton »

это все понятно, импортировать получилось, у меня даже этот стринг похож на стандартный, но вот отфильтровать не получается.
Мне надо сделать Range limit, а он не дает. при этом даже не выводит никаких ошибок, просто не находит записей удовлетворяющих условию!
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3134
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Re: sql datetime непонятки!

Сообщение Дед Пахом »

посмотри, какой фильтр (WHERE) на самом деле передаётся на сторону sql-сервера, должно помочь понять, где собака накрылась.
С уважением, ДП
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Re: sql datetime непонятки!

Сообщение Алексей- Софт-Центр »

Или я чего-то недопонял, а почему не пользуем фильтр типа:
sql1='DATA=1234'
BRW1::View:Browse{prop:sqlfilter}=clip(left(sql1))
brw1.resetfrombuffer()
Аватара пользователя
WadimZapara
Активист
Сообщения: 181
Зарегистрирован: 11 Июнь 2008, 12:11
Откуда: Тамбов

Re: sql datetime непонятки!

Сообщение WadimZapara »

А ещё: в DateTime (SQL) хранится и дата и время, поэтому если задавать фильтр на равенство какой-то дате, то вполне записи такие могут отсутствовать, если проверяемое поле таблицы заполняется, например, с помощью GetDate() :wink:
Компьютер имеет то преимущество перед мозгом, что им пользуются...
beneton
Новичок
Сообщения: 16
Зарегистрирован: 14 Апрель 2010, 15:23

Re: sql datetime непонятки!

Сообщение beneton »

Спасибо всем! я сделал проще: выкинул все данные по нужному фильтру в очередь, а потом из очереди сделал вывод в график!
Народ помогите еще: почему то в репорте отображается только один график! второй ни в какую не хочет!
То есть одни нормально работает, а второй почему то не хочет отображаться!
Ответить