Советы по Delphi. Версия 1.4.3 от 1.1.2001
Шрифт:
=== Callback.pas ===
PS:
Вообще, руки бы оторвал тем, кто писал справку по Дельфям: я неделю мучался с сабжем, пока случайно не набрёл на Callbacks.
Определение удаления записей в .DBF
Delphi 1
Взято из "Dtopics Database 1.10 from 3K computer Consultancy":
Dbase в BDE имеет большее количество ситуаций 'особого случая', чем таблицы SQL и Paradox, поскольку данный формат поддерживает выражения в индексах и прочие характеристики, например:
1. Создание и пересоздание индекса
– создание индекса (зависит от того, существует ли выражение или нет)
2. Связки Master/Detail в выражениях дочерних индексов
– вызов процедуры BDE DbiLinkDetailToExp вместо обычной DbiLinkDetail
3. Пакование таблиц
4. Задание видимости удаленных записей – вкл/выкл (например, dBase SET DELETED ON/OFF)
5. Задание частичного/полного соответствия символов – вкл/выкл (например, dBase SET EXACT ON/OFF)
<– Конец –>
Ну и теперь сами вопросы:
<– Начало –>
«Как мне увидеть записи dBASE, помеченные для удаления?»
В обработчике события AfterOpen вызовите приведенную ниже функцию. Включите DBITYPES, DBIERRS, DBIPROCS в список используемых модулей. Для вызова функции передайте ей в качестве аргумента имя TTable и TRUE/FALSE в зависимости от необходимости показа/скрытия удаленных записей. Пример:
«Могу
Создайте вычисляемое поле, затем в обработчике события таблицы OnCalcField замените его таким образом:
Рукописи не горят…
Определение номера записи в таблице dBASE
Таблицы dBASE применяют довольно статическую систему нумерации записей. Номер записи для данной записи (извините за тавтологию) отражает физическую позицию в табличном файле. Эти номера записей не изменяются вследствие фильтрации, упорядочивания данных или сортировки. К примеру, первая запись, хранящаяся в .DBF файле, будет иметь номер записи 1. Возможно, после некоторого упорядочивания индекса, запись будет последней из 100 записей. В этом случае запись должна оставаться с тем же номером, а не номером 100, отражающим новую позицию в сортированном наборе данных. Это противоречит таблицам Paradox, где соблюдается последовательная нумерация. Последовательная нумерация Paradox похожа на нумерацию записей dBASE, за исключением большей гибкости и отражению в номере записи ее текущей позиции в наборе данных. То есть, запись может не всегда иметь номер, установленный для нее фильтром набора данных, уменьшившим общее число записей, или при активном индексе, из-за чего может измениться отображаемый порядок записи.