Страница 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, которая валяется где то на серваке галактики.
решит ли она эту проблему не знаю.