On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
постоянный участник


Пост N: 134
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 15.03.09 19:43. Заголовок: INDEX с условиями


В Clipper 5.01 +Six для фильтрации баз по достаточно сложным условиям я использую временныи индексы, т.е пользователь выбрал условия и индекс создается. Примерно так:
В уже открытую базу с индексами .CDX добавляю индексы .IDX
INDEX ON UPPER(Fam+IM+Ot+dTOS(kLIENT->bIRTH_DATE) ) TO ("FAM_F") for (Empty(Alltrim(Klient->Cnils)) .and. (left(Klient->soCial,1) $ "12" ) )
или
INDEX ON UPPER(fAM+Klient->IM+Klient->Ot+Dtos(Klient->Birth_date)) TO ("FAM_F")
или
INDEX ON UPPER(fAM) TO ("FAM_F") FOR For_Talon(ms,k) // условия формируются в отдельной функции

Если основной индекс .CDX , то временные создаю .idx.
В Clipper все нормально, в xHarbour - не получается. Тип индекса определяется при открытии базы.
Может кто подскажет, как решить проблему.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 3 [только новые]


постоянный участник




Пост N: 813
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.03.09 14:09. Заголовок: Vlad04 пишет: Если ..


Vlad04 пишет:

 цитата:
Если основной индекс .CDX , то временные создаю .idx.



А зачем создавать .IDX ? Создавай обычный временный .CDX
И переключайся на него....
Я так делаю всегда !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 135
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 16.03.09 18:03. Заголовок: Я с .CDX пробова..


Я с .CDX пробовал. Странно все это как-то .При одинаковом коде в Clipper все прокатывает, в
xHarbour вообще выдает ошибку.
Вот по этому условию создается индекс по данным в связанной базе.
INDEX ON UPPER(fAM) TO ("FAM_F") FOR For_Talon(ms,k)

For_Talon просматривает связанную базу и выдает .T. или .F..
Андрей, пожалуйста, пример по круче скинь на мыло orsv04@mail.ru

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 814
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.03.09 23:31. Заголовок: Я делаю примерно так..


Я делаю примерно так:

USE BASE
ORDLISTADD( "MyMainIndex.cdx" )
nKolRecords := OrdKeyCount()
cIndexTo := "UPPER(FIO)+......"
cFilterTo := "условие фильтрации.... .AND. DELETED()=.F."
nSetOrder := <кол-во открытых индексов по этой базе>

INDEX ON &cIndexTo TAG "ONE" TO ("C:\Temp\MyFileIndex.cdx") ;
EVAL SAY_PROC( aBeg, ORDKEYNO() , nKolRecords) ;
EVERY nKolRecords / 10 FOR &cFilterTo ADDITIVE
ORDSETFOCUS( "ONE" )
DBSETORDER(nSetOrder)

.........

/***********************************************************
* SAY_PROC() --> БЕГУНОК
* Параметры : у,х-координаты вывода,
* тек.запись, общее кол-во записей
* Возвращает: всегда .T.
*/
FUNCTION SAY_PROC( aBeg, nRecno, nKolRecords )

MES_BARW( aBeg, nRecno, nKolRecords )

RETURN .T.



Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 32
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет