Тем кто пишет под ms SQL 2000 (7) заметку еще один баг перекочевал с 55 про который я писал. при наличии составного ключа с полем NULL, к примеру база:
Код: Выделить всё
rec fld1 fld2 ключ fld1 + fld2 (уникальный)
----------------
1 1 <NULL>
2 1 1
3 1 2
4 1 3
5 2 <NULL>
6 2 1
7 2 2
8 3 <NULL>
9 3 1
для get:
SetNull(tbl:record)
tbl:fld1 = 2
Get(tbl, tbl:FldKey) ! найдет правильную запись - 5
для set:
SetNull(tbl:record)
tbl:fld1 = 2
Set(tbl:FldKey, tbl:FldKey)
Next(tbl) ! встанет на запись запись - 6 ???? :-((
--
Всего наилучшего, porutchik mailto:porutchik@mail.primorye.ru
http://personal.primorye.ru/porutchik/
-------------------------------------------------------------------
Советские боевые слоны - самые боевые слоны в мире!
(Добавление)
включи драйверную трассировку и глянь какой SELECT при этом формируется
Andrew Myalin
andrew@arsis.ru
http://mavcla.arsis.ru (MAV Direct ODBC)
ICQ: 10659412
Yahoo group: clarion@yahoogroups.com
проблема именно в том что клара генерит неверный код select при set, а хуже всего то что на set очень много что построено в кларе и замена его будет проблематична. а отказ от <null> полей в скуле тянет за собой другие проблемы. sv не почесалось в 6 версии о чем и хотел напомнить. а трассу я уже присылал.
SETNULL(dbo.Lev3 2) Time Taken: 0.00 secs
SETkeykey(dbo.Lev3,Lev3Key[4] 2) Time Taken: 0.00 secs
...
Preparing Statement c02888 : SELECT IdLev3,IdLev1,IdLev2,NameL3 FROM dbo.Lev3 WHERE (IdLev1 >= ? AND (IdLev1 > ? OR (IdLev2 >= ? )))
ORDER BY IdLev1,IdLev2 Time Taken:0.00 secs
...
NEXT(dbo.Lev3 2) Time Taken: 0.00 secs
для get:
SETNULL(dbo.Lev3 2) Time Taken: 0.00 secs
...
Preparing Statement c02888 : SELECT IdLev3,IdLev1,IdLev2,NameL3 FROM dbo.Lev3 WHERE IdLev1 = ? AND IdLev2 IS NULL Time Taken:0.00
secs
...
GETfilekey(dbo.Lev3,Lev3Key[4] 2) Time Taken: 0.02 secs
--
Всего наилучшего, porutchik
Добрый день, porutchik.
Я тоже пишу на кларе под MSSQL 2000, но использую шаблоны и библиотеку Андрея Мялина MAVDirect, там такой проблемы не возникает.
--
С уважением,
Александр Юрьев mailto:sash@softmaster.ru
ICQ 59248879
Привет, всем.
У нас в конторе пишут на с55 (на с6 не переходим в ожидании патчей
для MS SQL2000 и просто файл-серверные.
Исторически сложилось, что используется несколько вариантов шаблонов
Legacy,Legacy+ШВС,Legacy+библиотека А.Мялина и ABC,ABC+библиотека А.Мялина.
Так к чему такое подробное вступление: пробовали...
В стандартных шаблонах доступ к sql-таблицам, мягко говоря, подтормаживает.
Для необходимого ручного доведения под требования задачки неудобен.
К указанному глюку стандартных sql-драйверов с NULL можно добавить, что есть проблемы с датами.
Сейчас новые задачки пишем при использовании последних двух вариантов комбинации шаблонов (имхо,особой разницы с точки зрения скорости визуального программирования нет, а при ручном legacy - не отвлекает) т.к. нет вышеуказанных багов, проблем со скоростью загрузки и наличие гибкости при настройке ручным кодированием - можно использовать одно и то же приложение для работы по сети и по dial up для удалённых филиалов...
С уважением, Толмачёв И.Л.
email: itolmachev@rosinter.ru <mailto:itolmachev@rosinter.ru>
Написал: ClaList(2)