Страница 1 из 1
Поиск по индексу. Проблема.
Добавлено: 07 июн 2004, 16:54
Maverick
Суть такова
Есть временная таблица
Table Struct tmpVigXM
(
FIO : String [100],
SP : string [10],
NP : string [10],
dP : date,
cRec : comp
)
With Index
(
ByUniq = FIO+SP+NP+dp (Unique),
ByRec = cRec
);
Не проходит индексный поиск по условию индекса:
GetFirst tmpVigXM Where (( ff == FIO And s==SP And n==NP And dt==DP)) не возвращает tsOk, хотя при этом запись соответствующая ff, s, n, dt есть в этой таблице.
Пробовал описывать это условие в CreateView, в Where, а в обработчике после определения переменных делал If GetFirst tmpVigXM. И опять не возвращает tsOk. Все равно не находит блин.
Уже голову сломал в чем косяк.
Поиск по части индекса ничего не даст - т.к. записи должны быть уникальными по совокупности всех полей.
Есть идеи ?
Re: Поиск по индексу. Проблема.
Добавлено: 07 июн 2004, 17:06
Spvl
Индекс неправильно описан
ByUniq = FIO+SP+NP+dp (Unique)
Я так понимаю наверное нужен сегментный индекс для такого поиска SEG см. доку по SQL
Re: Поиск по индексу. Проблема.
Добавлено: 07 июн 2004, 18:25
Deinis
Странно, у меня как раз-таки работает. Версия Галактики - 5.84.
Re: Поиск по индексу. Проблема.
Добавлено: 08 июн 2004, 08:03
Goblin
Если индекс уникальный должен быть - то оно вот так выглядеть должно ...
ByUniq = FIO(Unique)+SP(Unique)+NP(Unique)+dp(Unique)
И попробуй после сцепки перед =tsOk указать напрямую индекс по которому должен делаться GetFirst :
If(GetFirst tmpVigXM Where (( ff == FIO And s==SP And n==NP And dt==DP)) ordered by index ByUniq =tsOk)
Re: Поиск по индексу. Проблема.
Добавлено: 08 июн 2004, 08:09
Maverick
2 Spvl
2 Туманов О.В.
1. Индекс как раз описан правильно
2. Уникальными должны быть не сегменты индекса а индекс полностью, т.к. табла может содержать записи типа
Иванов 23 1 22/12/2000
Иванов 23 1 22/12/2001
но не может содержать 2 одинаковые записи типа
Иванов 23 1 22/12/2000
Иванов 23 1 22/12/2000
Проблему частично решил, уменьшив длину полей, соответственно, уменьшилась длина индекса в байтах, хотя я точно знаю что длина индекса может быть до 255 байт...
Re: Поиск по индексу. Проблема.
Добавлено: 08 июн 2004, 13:17
Maverick
В общем обнаружил "интересную" вещь.
Имею два компа - один на работе, один дома
И там и там стоит один и тот же атлантис, те же настройки первасива, та же галка, только на работе - в сети, дома - на локале...
На работе поиск не работает, дома - работает. Причем, если компилю дома и приношу ресурсник на работу - все работает, если то же самое компилю на работе - не работает ни на одном ни на другом компе...
Я весь такой потерянный... ??? ??? ??? :-[
Re: Поиск по индексу. Проблема.
Добавлено: 08 июн 2004, 20:11
sth
можть exe-шники (и атлантиса и галактики - домашние и рабочие) сравнить?
можть там где-то собака порылась?
Re: Поиск по индексу. Проблема.
Добавлено: 09 июн 2004, 09:07
Maxim
Может не совпадают версии Pervasive локальная и сетевая?
Локально стоит наверное Pervasive 2000i SP3, а сетевой Pervasive 2000i SP4 + SP4TFT. Или поставить SP4 + SP4TFT...
Или пропатчить локальный pervasive.
Re: Поиск по индексу. Проблема.
Добавлено: 09 июн 2004, 11:58
edward_K
SP4 вообще то плохо с галой дружить - еще один глюк с формированием платежных ведомостей. Это решает заплатка на SP4, которая валяется где то на серваке галактики.
решит ли она эту проблему не знаю.