Форум » Clipper » Странные ошибки ! » Ответить

Странные ошибки !

Виталий: Не стого ни с сего возникают непредсказуемые ошибки при компиляции кода . Траблы заключаются в том что компилятор выкидывает на совершенно нормальных строках ошибки вроде неправильного синтаксиса и т д . Странно - но куски кода уже не менялись там несколько лет . Собственно что-то в модуле правлю - но не там где ошибка .... Выгружаю из памяти NG.EXE - и всё становится нормально . Код ЕХЕшника уже под 1 мег . Блинкер 7 CLIPPER 5.3 .... Что скажут ГУРУ ? Следующая ошибка - уже видно где-то я недосмотрел или не дочитал : Есть индекс CDX и вот иногда (пока не выяснил) выскакивает что-то вроде - "повреждены данные" .... это когда пытаюсь изненить какое-то поле - например логическое значение ...

Ответов - 51, стр: 1 2 3 All

Виталий: Тоесть нет смысла держать в индексе !DELETED() !

Виталий: Вот сегодня попробовал построить индексы без !DELETED() .... результат тот-же ! ошибка не ушла

SergeJa: Виталий пишет: Тоесть нет смысла держать в индексе !DELETED() ! Упс. Я - о другом. Более простой пример. PROC main FIELD qq SET DELETED ON dbCreate( "test1", {{'qq','C',1,0}}) USE test1 // добавляю две записи APPEND BLANK REPLACE qq WITH '1' APPEND BLANK REPLACE qq WITH '1' INDEX ON qq TO test2 UNIQUE GO TOP // тут видна одна запись. первая ? 'Цикл до удаления записи #1' WHILE .NOT. EOF() ? 'Запись',RECNO(),'из',LASTREC() SKIP ENDDO ? 'Удаление записи #1' GO TOP DELETE // запись #1 удалена GO TOP // а тут EOF. несмотря на наличие неудаленной записи #2 ее нет в индексе ? 'Цикл после удаления записи #1.' WHILE .NOT. EOF() ? 'Запись',RECNO(),'из',LASTREC() SKIP ENDDO ? 'Неудалённая запись #2 не видна, не так ли?' return // теперь рассмотрим твой индекс, например "все даты продаж (для быстрого меню ДАТЫ)" INDEX ON DATEP TAG DATEPU TO ("LANJROPT") FOR !DELETED() UNIQUE допустим, сегодня стряслись две продажи (#1 и #2). сообразно, в файле две записи с одинаковым значением в DATEP. В индекс с тегом "DATEPU" попадает продажа #1 (в моём примере это 'Цикл до удаления записи #1'). После ее удаления (уверен, что такое бывает в жизни) продажа #2 будет не видна ('Цикл после удаления записи #1.') и в "быстром меню ДАТЫ" будет чепуха. ошибка не ушла говорят, помогает: http://www.bubny.ru/


Виталий: Ха ! Дело в том что я чаще всего делаю так - значения УДАЛЯЕМЫХ полей обнуляю - тоесть коды товаров или клиентов =0 а даты REPLACE DATEP WITH CTOD("00/00/00") "это чтоб индексы правились . Ну и конечно DELETE . вот и все хитрости !

saulius: Это правильно, но програмка с ошибкой 8006 и базой было бы чудесно!

Виталий: в смысле - скинуть для теста ???

Виталий: Так тема ушла в никуда . Жаль .

suv2: Виталий пишет: Так тема ушла в никуда . Жаль . чем тебя не удовлетворили ответы?

Виталий: Так и не ушла проблема с ошибкой . Не понял в чем ошибка Неуже-ли из-за того что : при изменении значения записи - если именно эта запись была в другом ключе как UNIQUE - её уже не находит ? Тогда зачем везде описывается что "при изменении значения - обновляются значения индексов " Что теперь перекраивать без индексов UNIQUE ?????

suv2: тебе ответили - не используй стандартный DBFCDX - ОН ГЛЮЧНЫЙ

suv2: 2) ФАК - индексы UNIQUE должны строится для РАЗОВЫХ запросов. Сделал, чет-то там посчитал и выкинул. Эти индексы НЕЛЬЗЯ использовать, если база изменяется.

SergeJa: а зачем UNIQUE? собрать список уникальных ключей - просто LOCAL aKey := {}, cKey dbGoTop() DO While !EOF() cKey := sx_KeyData() // или &(IndexKey()) AADD( aKey, cKey ) ADDASCII(@cKey,1) DBSEEK(cKey,.T.) EndDO

Виталий: У меня CLIPPER 5.3 : SX_KEYDATA() Это SIX ?

Dima: Виталий пишет: SX_KEYDATA() Это SIX ? ДА

Виталий: И что мне с SIXом в 5.3 делать ?

Dima: Виталий пишет: И что мне с SIXом в 5.3 делать ? Ни чего. Есть аналогичный продукт , называется COMIX , он дружит с Clipper 5.3

Виталий: Так у меня от COMIX драйвер и есть ! _DBFCDX . !!!

SergeJa: Виталий пишет: И что мне с SIXом в 5.3 делать ? дык я специально написал: // или &(IndexKey())

alexmar: Эта связка без глюков? У себя обнаружил ошибку в Clipper 5.2e при штатном RDD DBFCDX неправильно строились индексы по ключу, задаваемому, как вычисляемое выражение числового типа. И выдавало в неготорых ситуациях внутреннюю ошибку: 1210 Data and Index files out of sync рассогласования базы и индекса С SIX 3 эти ошибки исчезли. Но может есть какие-то другие траблы?

suv2: alexmar пишет: 1210 Data and Index files out of sync рассогласования базы и индекса С SIX 3 эти ошибки исчезли. Но может есть какие-то другие траблы? мне жаль тебя огорчать, но в сиксе траблов до хрена и больше честно говоря, ни хрена он не работает



полная версия страницы