Форум » [x]Harbour » [?] Создаю индекс по типу поля "=" » Ответить

[?] Создаю индекс по типу поля "="

Andrey: Создаю индекс по новому типу поля "=" - TimeStamp дата+время+миллисекунды DbSeek() почему то не хочет с ним работать ? Или нельзя напрямую работать с такими типами ? В базе сделал поле {"TS" ,"=", 8, 0 } Вот мой код: SELECT DBF2TEST INDEX ON "TS" TAG TS TO ( cFileIndex2 ) tStatTimeStamp := HB_DATETIME() .... SELECT DBF2TEST OrdSetFocus( "TS" ) ? tStatTimeStamp, RECNO(), DBF2TEST->TS, EOF() dbSeek(tStatTimeStamp, .T. ) // Set softseek on ? "dbSeek(, .T. )=", RECNO(), EOF(), FOUND() DO WHILE !EOF() IF DBF2TEST->TS >= tStatTimeStamp AADD( aRec, RECNO() ) ENDIF dbSkip(1) ENDDO Массив aRec не создаётся... Хотя вывожу в лог: StatTimeStamp := 2016-09-06 16:38:43.547 Первое поле в базе = 2016-09-06 16:38:58.824 Что не так делаю ? Harbour последний, из MiniGUI...

Ответов - 8

Andrey: Вот ещё сделал проверку. Проверяю индекс - 2 OrdName: TS OrdKey: "TS" - всё нормально ! tStatTimeStamp = 18:46:17.848, RECNO()=1, DBF2TEST->TS = 2016-09-06 18:46:29.244, EOF()=.F. делаем dbSeek(tStatTimeStamp, .T. ), результат: RECNO()=1001, EOF()=.T., FOUND()=.F.

Andrey: А как переменную HB_DATETIME() преобразовать в число ? Наверное dbSeek(tStatTimeStamp, .T. ) не поддерживает этот тип переменных, я тогда сделаю числовой индекс.

Петр: Andrey пишет: INDEX ON "TS" TAG TS TO ( cFileIndex2 ) INDEX ON TS TAG TS TO ( cFileIndex2 )


Andrey: Петр пишет: INDEX ON TS TAG TS TO ( cFileIndex2 ) Как обычно... на простом месте Спасибо !

Andrey: Выдаёт ошибку при сборке: Harbour 3.2.0dev (r1607181832) Copyright (c) 1999-2016, http://harbour-project.org/ Form_Dbf.prg(560) Warning W0001 Ambiguous reference 'XID' Form_Dbf.prg(561) Warning W0001 Ambiguous reference 'TS' No code generated. hbmk2[dbf_to_PostgreSQL]: Error: Running Harbour compiler (embedded). 1 Текст программы на этих строчках: INDEX ON XID TAG XID TO ( cFileIndex1 ) ADDITIVE INDEX ON TS TAG TS TO ( cFileIndex2 ) ADDITIVE Я собираю программу с ключом -prgflag=-w2 -es2 Можно конечно убрать этот ключ и так собрать, ну уж больно удобен этот ключ, ошибки сразу при сборке показывает по переменным. Какой под этот ключ сборки будет синтаксис INDEX ON .... ? Макроподстановку не предлагать. Вот так тоже не прокатывает: INDEX ON FIELD->XID TAG XID TO ( cFileIndex1 ) ADDITIVE INDEX ON FIELD->TS TAG TS TO ( cFileIndex2 ) ADDITIVE Индекс не создаётся ! МиниГуи вместо FIELD-> делает свою макроподстановку. На хХарборе у меня так везде работает.

Петр: Andrey пишет: INDEX ON FIELD->XID TAG XID TO ( cFileIndex1 ) ADDITIVE INDEX ON FIELD->TS TAG TS TO ( cFileIndex2 ) ADDITIVE Можно попробовать так INDEX ON _FIELD->XID TAG XID TO ( cFileIndex1 ) ADDITIVE INDEX ON _FIELD->TS TAG TS TO ( cFileIndex2 ) ADDITIVE Можно так #pragma ENABLEWARNINGS=Off INDEX ON XID TAG XID TO ( cFileIndex1 ) ADDITIVE INDEX ON TS TAG TS TO ( cFileIndex2 ) ADDITIVE #pragma ENABLEWARNINGS=On Можно так #pragma WARNINGLEVEL=1 INDEX ON XID TAG XID TO ( cFileIndex1 ) ADDITIVE INDEX ON TS TAG TS TO ( cFileIndex2 ) ADDITIVE #pragma WARNINGLEVEL=3 [pre2] This is the list of the supported commands and switches: * Command Switch ----------------------------------------------- * AUTOMEMVAR =<On/Off> -a<+/-> * DEBUGINFO =<On/Off> -b<+/-> * DYNAMICMEMVAR =<On/Off> -v<+/-> * ENABLEWARNINGS =<On/Off> -w<+/-> * ESCAPEDSTRINGS =<On/Off> * EXITSEVERITY =<nLevel> -es<nLevel> * LINENUMBER =<On/Off> -l<+/-> * NOSTARTPROC =<nLevel> -n<nLevel> (read-only) * PREPROCESSING =<On/Off> -p<+/-> * SHORTCUT =<On/Off> -z<+/-> * TEXTHIDDEN =<On/Off> * TRACE =<On/Off> -p+ * WARNINGLEVEL =<nLevel> -w<nLevel> [/pre2] P.S. Задавать подобный вопрос нужно было в отдельной теме

Dima: Петр пишет: P.S. Задавать подобный вопрос нужно было в отдельной теме двинул

Andrey: Петр пишет: Можно так Спасибо БОЛЬШОЕ !



полная версия страницы