Поиск по индексу. Проблема.
Модераторы: m0p3e, edward_K, Модераторы
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
Поиск по индексу. Проблема.
Суть такова
Есть временная таблица
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. Все равно не находит блин.
Уже голову сломал в чем косяк.
Поиск по части индекса ничего не даст - т.к. записи должны быть уникальными по совокупности всех полей.
Есть идеи ?
Есть временная таблица
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: Поиск по индексу. Проблема.
Индекс неправильно описан
ByUniq = FIO+SP+NP+dp (Unique)
Я так понимаю наверное нужен сегментный индекс для такого поиска SEG см. доку по SQL
ByUniq = FIO+SP+NP+dp (Unique)
Я так понимаю наверное нужен сегментный индекс для такого поиска SEG см. доку по SQL
-
- Местный житель
- Сообщения: 783
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва
- Контактная информация:
Re: Поиск по индексу. Проблема.
Странно, у меня как раз-таки работает. Версия Галактики - 5.84.
-
- Местный житель
- Сообщения: 474
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Сибирь-матушка
- Контактная информация:
Re: Поиск по индексу. Проблема.
Если индекс уникальный должен быть - то оно вот так выглядеть должно ...
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)
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)
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
Re: Поиск по индексу. Проблема.
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 байт...
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 байт...
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
Re: Поиск по индексу. Проблема.
В общем обнаружил "интересную" вещь.
Имею два компа - один на работе, один дома
И там и там стоит один и тот же атлантис, те же настройки первасива, та же галка, только на работе - в сети, дома - на локале...
На работе поиск не работает, дома - работает. Причем, если компилю дома и приношу ресурсник на работу - все работает, если то же самое компилю на работе - не работает ни на одном ни на другом компе...
Я весь такой потерянный... ??? ??? ??? :-[
Имею два компа - один на работе, один дома
И там и там стоит один и тот же атлантис, те же настройки первасива, та же галка, только на работе - в сети, дома - на локале...
На работе поиск не работает, дома - работает. Причем, если компилю дома и приношу ресурсник на работу - все работает, если то же самое компилю на работе - не работает ни на одном ни на другом компе...
Я весь такой потерянный... ??? ??? ??? :-[
Re: Поиск по индексу. Проблема.
можть exe-шники (и атлантиса и галактики - домашние и рабочие) сравнить?
можть там где-то собака порылась?
можть там где-то собака порылась?
Re: Поиск по индексу. Проблема.
Может не совпадают версии Pervasive локальная и сетевая?
Локально стоит наверное Pervasive 2000i SP3, а сетевой Pervasive 2000i SP4 + SP4TFT. Или поставить SP4 + SP4TFT...
Или пропатчить локальный pervasive.
Локально стоит наверное Pervasive 2000i SP3, а сетевой Pervasive 2000i SP4 + SP4TFT. Или поставить SP4 + SP4TFT...
Или пропатчить локальный pervasive.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Поиск по индексу. Проблема.
SP4 вообще то плохо с галой дружить - еще один глюк с формированием платежных ведомостей. Это решает заплатка на SP4, которая валяется где то на серваке галактики.
решит ли она эту проблему не знаю.
решит ли она эту проблему не знаю.