Страница 1 из 1

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

Добавлено: 17 Апрель 2010, 21:49
beneton
Народ помогите!
в MySQL есть поле datetime, как мне сделать в броузе выборку из базы MySQL по дате времени?
там есть группа с датой и временем, к ней крепится string(8) ссылку сделал но почему то не работает!

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

Добавлено: 17 Апрель 2010, 21:54
WadimZapara
а слабо дать команду
Твой_File{PROP:SQL} = 'SELECT всё_что_нужно FROM откуда_нужно WHERE нужное_условие_для_нужного_поля'
а потом
LOOP
Next(Твой_File); If ErrorCode() Then Break.
! Твоя обработка
END

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

Добавлено: 17 Апрель 2010, 22:45
beneton
я бы с удовольствием, но мне надо чтобы данные показывались в броузе, сделать как написано выше не проблема
мне надо вывести данные в броуз по интервалу дат/времени
записей очень много(порядка 100.000-200.000 штук) по сути на основе этих данных надо построить график, но для начала хочу выкинуть данные в броуз, а потом буду делать вывод в график!

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

Добавлено: 18 Апрель 2010, 18:27
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_поля').
И выделяемый кларионом буфер файла при этом будет меньше, что опять же увеличивает эффективность.

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

Добавлено: 19 Апрель 2010, 18:52
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.

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

Добавлено: 19 Апрель 2010, 20:49
beneton
это все понятно, импортировать получилось, у меня даже этот стринг похож на стандартный, но вот отфильтровать не получается.
Мне надо сделать Range limit, а он не дает. при этом даже не выводит никаких ошибок, просто не находит записей удовлетворяющих условию!

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

Добавлено: 19 Апрель 2010, 21:42
Дед Пахом
посмотри, какой фильтр (WHERE) на самом деле передаётся на сторону sql-сервера, должно помочь понять, где собака накрылась.

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

Добавлено: 20 Апрель 2010, 14:47
Алексей- Софт-Центр
Или я чего-то недопонял, а почему не пользуем фильтр типа:
sql1='DATA=1234'
BRW1::View:Browse{prop:sqlfilter}=clip(left(sql1))
brw1.resetfrombuffer()

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

Добавлено: 21 Апрель 2010, 0:51
WadimZapara
А ещё: в DateTime (SQL) хранится и дата и время, поэтому если задавать фильтр на равенство какой-то дате, то вполне записи такие могут отсутствовать, если проверяемое поле таблицы заполняется, например, с помощью GetDate() :wink:

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

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