Перемещение по записям таблицы Visual FoxPro

Для перехода от записи к записи в Visual FoxPro используется несколько команд, некоторые из которых мы рассмотрим.

– Команда SKIP N применяется для перехода на следующую запись, где n — необязательный параметр, указывающий, на какое число записей переместить указатель. По умолчанию это число равно 1 и для перехода на следующую запись достаточно просто задать команду SKIP.
– Команда SKIP -1 аналогична SKIP, только перемещение происходит “в другую сторону” — на предыдущую запись.
– Команда GO BOTTOM устанавливает указатель на самую последнюю запись в таблице, а похожая на нее GO TOP — на самую первую.
– Команда GO ИЛИ GOTO осуществляет переход на запись с указанным номером. Например, GOTO 23 установит указатель на двадцать третью запись таблицы.

Используя эти команды, можно организовать переход по записям таблицы в нашем приложении, добавив соответствующие элементы управления и запрограммировав их действия.

Удаление записей

Довольно часто возникает ситуация, когда пользователю необходимо удалить из таблицы какие-нибудь записи. Это можно делать как программно так и в интерактивном режиме, используя уже знакомую команду BROWSE.

Откроем нашу таблицу для просмотра. Крайний левый столбец называется Delete Mark (Маркер удаления). При щелчке мышью в этом столбце он закрашивается, что говорит о том, что данная запись помечена для удаления. Таким образом, пометив необходимые записи, пользователь может удалить их, используя команду Remove Deleted Records (Удалить помеченные записи) из пункта Table (Таблица) системного меню Visual FoxPro.

Но необходимо отметить, что удалить запись возможно только в том случае, когда таблица открыта с исключительным доступом. Как получить этот самый доступ, описано далее, а сейчас поговорим вот о чем: пользователь, просматривая таблицу, может совершенно случайно поставить отметку для удаления на “нужных” записях. Я уже говорил, что не рекомендуется широко использовать режим просмотра BROWSE В приложениях (по крайней мере, без использования дополнительных параметров), но если уж это необходимо, тогда для предотвращения случайных удалений нужно использовать команду BROWSE с опцией NODELETE, которая запрещает ставить метки на записях.

Установить или снять метку также можно, используя клавиатуру — комбинация клавиш +.

Для удаления записей без использования режима просмотра таблиц (BROWSE), так сказать программно, используются следующие команды:
DELETE — ставит на записи отметку для удаления. По умолчанию метка ставится на текущую запись, но в этой команде также можно задать условия, используя ключевые слова FOR/WHILE. Команда DELETE ALL помечает все записи;
PACK — непосредственное удаление записей, отмеченных командой DELETE. Эту же команду можно использовать для уменьшения размера файла, содержащего поля типа Memo, PACK MEMO удалит только неиспользованное пространство в полях Memo, и при этом даже маркированные записи не будут “затронуты”;
RECALL — снимает метки с записей.

Но опять же удаление возможно только в таблице, открытой с исключительным доступом. Как это сделать?

USE — одна из “главных” команд Visual FoxPro. Именно эта команда открывает таблицу и все связанные с ней индексные файлы, если, конечно, последние определены. Данная команда используется с огромным количеством дополнительных параметров, а в самом простом случае имеет такой вид:

USE (<путь>) <имя_таблицы>
Почему мы ее не использовали? Да потому, что наша таблица открывается автоматически при запуске формы. А вот если мы добавим в метод inijl формы Formi строку

1
USE C:\Examples\Mytab EXLUSIVE

то наша таблица будет открываться с этим самым исключительным доступом, что сделает возможным удаление записей.

Использование команды USE без параметров и имен приведет к тому, что будет закрыта таблица в текущей рабочей области.

Определим следующие действия при событии click для объекта command6, входящего в состав набора кнопок commandGroupi (кнопка Удалить):

1
2
3
DELETE
PACK
THISFORM.REFRESH()

Вот и все — легко и просто.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100