Страница 1 из 2

Странность в работе ТП под MSSQL

Добавлено: 06 июл 2007, 15:50
m0p3e
Может кто сталкивался...
Есть интерфейс выбора контрагентов. При инициализации в таблицу в памяти набираются контрагенты по некоторым параметрам. Далее пользователь выбирает из этого списка нужный.
В PSQL все работало замечательно, а вот под MSSQL наблюдается ряд странностей.
Таблица:

Код: Выделить всё

Тable struct MyKatorg
(
 nrec : comp
,name : string [ 80 ]
)
with index
(
 MyKatorg0 = nrec
,MyKatorg1 = name
);
В интерфейсе

Код: Выделить всё

Create View
as select *
from Katorg,MyKatorg
;

browse brw1;
Table MyKatorg;
Fields
 MyKatorg.name : Protect;
end;
Интересует быстрый поиск в браузе. При данном описании контрагенты ищутся нормально. Но, если меняем на

Код: Выделить всё

Create View
as select *
from Katorg,MyKatorg
where (( MyKatorg.nrec == Katorg.nrec ))
;
то многие контрагенты не находятся. Самое интересное, что чем больше таблиц мы сцепляем, тем хуже работает поиск.

Добавлено: 09 июл 2007, 12:59
san
Да не должно это зависеть от СУБД. ТП это отдельный проект, еще одна СУБД типа.

Добавлено: 09 июл 2007, 15:34
m0p3e
Сам в шоке, но один и тот же интерфейс работает по разному под PSQL и MSSQL. Самое хреновое в том, что обойти никак это не удается.

Добавлено: 09 июл 2007, 19:30
Ged
а если явно указать индекс

Код: Выделить всё

Create View 
as select * 
from Katorg,
     MyKatorg (MyKatorg1)
where (( MyKatorg.nrec == Katorg.nrec )) 
;

Добавлено: 09 июл 2007, 19:42
edward_K
попробуйте по приколу добавить фильтр
'dddd'== mykatorg.name(length=4)
и сравните результат в первасиве и mssql

Добавлено: 09 июл 2007, 23:56
m0p3e
Ged
Индекс указывал. Не помогает.

edward_K
Попробовать смогу только в четверг. Болезнь свалила...

Добавлено: 12 июл 2007, 15:29
m0p3e
edward_K
Результат одинаковый.
Если по части имени, то не фильтрует ни под PSQL ни под MSSQL.
По полному совпадению имени фильтрует в обоих.

san
Да не должно это зависеть от СУБД. ТП это отдельный проект, еще одна СУБД типа.
А где бы посмотреть реализацию этой отдельной СУБД? Атлантис в наличии есть.

Добавлено: 12 июл 2007, 16:56
edward_K
хм
а раньше сия конструкция в первасиве пахала.
хотя... Наверное это было на 7 первасиве еще. В MsSql она никогда не работала.
это я привел к вопросу о совместимости СУБД. А так вы ж в Москве , та часть от атлантиса, которой у вас нет, есть тока там. К атлантису тоже не все дают ведь? Потрясите свою ТП.

Добавлено: 12 июл 2007, 17:54
m0p3e
edward_K
У меня большой атлантис :)
Вот знать бы куда смотреть...

Добавлено: 12 июл 2007, 18:22
edward_K
в исходники base.dll наверное. либо все файлы на atl , либ на дрова к базе(ms70drv.dll например). Есть кстати dll c протоколированием обращений к базе. Если у вас атлантис имеется могете галку на них погонять. Вообще не раз сталкивался с неплатформонезависимостью галки. В таких случаях подкручивали именно дрова на доступ к базе.

Добавлено: 12 июл 2007, 18:45
m0p3e
Хм... ms70drv уже пересобирал. Отучал материться на разные версии odbc. Не в курсе, это теже исходники с ключем (протоколирование обращений) или другие?

Добавлено: 12 июл 2007, 19:00
edward_K
не в курсе
от ms70drv я исходников не видел.

Добавлено: 13 июл 2007, 13:06
san
mt_drv.dll

Добавлено: 13 июл 2007, 16:58
m0p3e
san
Да. Уже нашел. Но блин, на осознание уйдет уйма времени... :(

Добавлено: 16 июл 2007, 11:12
san
А как заполняется mykatorg?