Страница 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()  

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