Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

ГЛАВА 7
| << | < | > | >>

ГЛАВА 7
MODIFY (ИЗМЕНИТЬ)


Услуга Главного меню Modify (изменить) используется для изменения содержимого или структуры таблицы. После того, как вы выберете Modify из Главного меню, на экране появится подменю (меню Modify):


*Sort Edit Coedit DataEntry ModifyEntry Restucture Sort records in a table.
(Сортировать записи в таблице.)

Меню Modify содержит услуги:

  • Sort (сортировка): изменить расположение записей в таблице.
  • Edit (редактирование): вставить, изменить или удалить записи в таблице или многотабличной форме.
  • Coedit (совместное редактирование): позволяет двум и более пользователям одновременно редактировать таблицу или многотабличную форму.
  • DataEntry (ввод данных): добавить группу новых записей в одну таблицу или многотабличную форму.
  • MultiEntry (мультиввод): добавить группу новых записей в две или более таблиц.
  • Restructure (изменение структуры): переименовать, удалить, изменить или добавить поля в таблицу.

Выберите нужную услугу. Paradox попросит указать имя таблицы, с которой вы будете работать. Например:


Table:
Enter name of table, or press {Enter} to see a list of tables. (Введите имя таблицы или нажмите {Enter}, чтобы получить список таблиц.)

Введите имя таблицы и нажмите {Enter} или выберите его из меню (по правилам, описанным в разделе "Меню и приглашения системы Paradox" в главе 2 данного руководства).

SORT (СОРТИРОВКА)


Paradox позволяет вам задать правило, согласно которому он будет сортировать записи в таблице. Всего возможны четыре порядка сортировки. Порядок сортировки, наиболее подходящий для той группы стран, которая была указана при установке системы, устанавливается автоматически.

Изменение порядка сортировки


Если это необходимо, то порядок сортировки может быть изменен. Смысл изменения порядка сортировки и процедура изменения описаны в главе 14.

Таблицы с ключевыми полями


Таблицы с ключевыми полями описаны в главе 6. Если в таблице нет ключевых полей, ее записи хранятся и выдаются в порядке, в котором они были введены. Если вы измените порядок расположения записей с помощью сортировки или добавления новых записей, Paradox сохранит новый порядок расположения записей.

Записи в таблице с ключевым полем автоматически сортируются в возрастающем порядке по значениям ключевого поля (полей). Если в таблице определено больше одного ключевого поля, записи сортируются сначала по первому ключевому полю, а совпадающие - по оставшимся ключевым полям.

Сортировка таблицы


Вы можете использовать услугу Modify/Sort, чтобы изменить расположение записей в любой таблице. Если в таблице нет ключевых полей, можно выбрать, производить ли сортировку в существующей таблице или разместить отсортированные записи в новой таблице (оставив в первоначальной таблице существующий порядок записей).

Если таблица содержит ключевое поле, вы должны отсортировать ее в новую таблицу; в противном случае порядок записей, установленный ключевыми полями, может быть нарушен. Новая таблица (в которой будут размещены отсортированные записи с ключевыми полями) не будет содержать ключевых полей.

Что случится после того, как вы выбрали услугу Modify/Entry и ввели имя таблицы, зависит от типа выбранной таблицы. Если это таблица без ключевых полей, Paradox спросит, где будут расположены отсортированные записи: в той же таблице или в новой:


*Same New
Place results of the sort in the same table. (Поместить результаты сортировки в ту же таблицу.)

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


Table:
Enter name for new sorted table.
(Введите имя для новой отсортированной таблицы.)

Форма для задания сортировки


После этого на экране появится форма для задания сортировки таблицы. Форма, которая содержит список полей таблицы, позволяет выбрать нужный порядок сортировки записей. После заполнения формы, нажмите {F2} (выполнить).

                          Порядок полей
                          -------------

Записи в таблице могут быть отсортированы в соответствии с их значениями в одном или более полей. Чтобы сортировать записи по одному полю, наберите 1 вслед за именем поля в форме сортировки. Чтобы производить сортировку по дополнительным полям, наберите 2, 3 и т.д. вслед за этими полями (в соответствующем порядке).

Рассматривайте эти дополнительные поля сортировки как "си- то". Если две записи имеют одно и то же значение в первичном поле сортировки, они будут расположены в соответствии со значениями второго поля сортировки. Если две записи имеют одинаковые значения в этих двух полях, они будут сортированы по третьему полю и т.д.

Если вы оставите форму сортировки незаполненной, таблица будет отсортирована слева направо в возрастающем порядке.

          Возрастающий или убывающий порядок сортировки
          ---------------------------------------------

Вы можете выбрать возрастающий или убывающий порядок сортировки. Paradox обычно сортирует записи в возрастающем порядке. Это означает, что:

  • числовые (N, $, S) поля упорядовачиваются от меньших к большим значениям;
  • алфавитно-цифровые (А) поля упорядочиваются по алфавиту в соответствии с текущим набором порядка сортировки;
  • поля дат (D) упорядочиваются от более ранних к более поздним датам.

Чтобы сортировать записи в убывающем порядке (обратном, чем в описаны выше), наберите D сразу после номера поля сортировки в форме сортировки.

Меню Sort


При заполнении формы сортировки, вы всегда можете войти в меню сортировки. Для этого нужно нажать клавишу {F10} (меню). Меню сортировки содержит три услуги:

  • Help (помощь): получить помощь о сортировке таблицы.
  • DO-IT! (выполнить): сообщить системе, что вы заполнили форму, чтобы она начала процесс сортировки.
  • Cancel (прервать): прервать процесс определения сортировки и вернуться в главное рабочее поле.

Сортировка в сети


Когда вы выбираете услугу Modify/Sort при работе в сети, Paradox автоматически накладывает блокировку от записи на таблицу. Это означает, что другие пользователи не смогут изменить ее содержимое или структуру. Если кто-либо в сети уже начал операцию, которая требует наложения на таблицу полной блокировки или предохраняющей блокировки от записи, вы не сможете начать сортировку, пока этот пользователь не закончит.

Если вы сортируете одну таблицу в другую, Paradox автоматически накладывает полную блокировку на целевую таблицу на все время выполнения операции сортировки.

EDIT (РЕДАКТИРОВАНИЕ)


Таблицы на экране защищены от случайных изменений. Чтобы изменить информацию в таблице, вы должны использовать один из двух специальных режимов: редактирование (Edit) или совместное редактирование (Coedit). Основная разница между этими режимами заключается в том, что при редактировании вы единственный имеете доступ к изменяемой таблице, а при совместном редактировании одну таблицу одновременно могут редактировать несколько человек. Режим Coedit описан позже в этой главе.

Для того, чтобы войти в режим редактирования, нужно выбрать услугу Modify/Edit или нажать клавишу {F9} (редактирование), когда таблица (таблицы), которую вы хотите редактировать, находится в рабочем поле.

В режиме редактирования все образы в рабочем поле (за исключением форм запроса) доступны для редактирования. Если вы вызвали несколько образов одной таблицы, повторные образы удаляются из рабочего поля во избежание появления несовместимых версий одной и той же таблицы.

Процесс редактирования проходит так же, как и в случае, когда вы редактируете таблицу или форму. (Особые замечания по редактированию многотабличных форм изложены ниже в разделе "Редактиро- вание записей в многотабличных формах".) После того, как вы закончили редактирование, нажмите {F2} или выберите услугу DO-IT! (выполнить) из меню Edit, чтобы сохранить изменения. Чтобы отменить изменения, нужно выбрать услугу Undo (отменить) или Cancel (прервать).

Перемещение курсора


В режиме редактирования для перемещения курсора в рабочем поле вы можете использовать клавиши {F3} (образ вверх), {F4} (об- раз вниз), а также цифровые клавиши. (Более подробно об этом см. раздел "Клавиатура" в главе 2.) Кроме того, вы можете нажимать клавиши:

  • любого символа, который будет добавлен в конце текущей строки;
  • {Backspace}, чтобы уничтожить символ слева от курсора;
  • {Ctrl}{Backspace}, чтобы стереть текущее поле;
  • {Del}, чтобы стереть текущую запись;
  • {Ins}, чтобы вставить пустую запись перед текущей;
  • {Cтрелка вниз} (из последней строки таблицы), чтобы добавить пустую новую запись в конец таблицы.

Изменение значений поля


Если нужно изменить значение в поле, переместите курсор на это поле и нажмите {Ctrl}{Backspace}. Старое значение поля исчезнет. Наберите новое значение.

Если вы хотите изменить значение поля только частично, переместите курсор на это поле. Курсор будет установлен в правой части поля. Используйте клавишу {Backspace}, чтобы стереть старое значение с конца поля, один знак за одно нажатие клавиши. После того, как неправильная часть старого значения стерта, наберите новую часть значения.

                       Редактирование поля
                       -------------------

Если вам удобнее редактировать поле не с конца, а с середины, нажмите клавиши {Alt}{F5} (просмотр поля) или {Ctrl}{F} (то же) для редактирования поля. Курсор превратится в маленький квадратик, обозначая, что вы находитесь в режиме редактирования поля. Клавиши, используемые в режиме редактирования поля, отличаются от клавиш, используемых в обычном режиме редактирования, и показаны в главе 2 в таблице 2-1.

После завершения редактирования поля нажмите {Enter}, чтобы подтвердить изменения. При редактировании поля вы не можете перемещать курсор к другим полям, пока не закончите сначала просмотр поля.

Редактирование значений, которые не умещаются в поле


Иногда значение не умещается в место, отведенное его полю на экране. При некоторых обстоятельствах такие значения будут выданы как звездочки (***). В других случаях вы можете увидеть начало значения, причем остаток значения за границей поля будет скрыт. В режиме редактирования (Edit), когда вы перемещаете курсор в поле, часть которого скрыта, курсор будет установлен на начало значения (а не на конец), и в поле после значения появится звездочка (*). В таких случаях используйте клавишу {Alt}{F5} (просмотр поля) для редактирования скрытых значений.

Вставление записей


Чтобы вставить новую пустую запись, нажмите {Ins}. Над текущей записью появится новая запись. Если курсор находится в первой записи таблицы, новая запись станет первой записью таблицы.

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

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


Чтобы удалить запись, поставьте на нее курсор и нажмите {Del}. Запись будет целиком удалена. Чтобы восстановить ее до выхода из режима редактирования, нажмите клавиши {Ctrl}{U} или воспользуйтесь услугой Undo (отменить) из меню Edit.

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

Отмена изменений


Чтобы отказаться от изменений при редактировании или вводе данных, выберите услугу Undo (отменить) из меню Edit или нажмите клавишу {Ctrl}{U}. Когда вы находитесь в режиме редактирования или ввода данных, Paradox хранит протоколы всех изменений. Каждый раз, когда вы выбираете услугу Undo или нажимаете клавишу {Ctrl}{U}, вы отменяете последний протокол, при повторной отмене отменяется предпоследний протокол и т.д.

Начало протокола определяется моментом, когда вы перемещаете курсор к конкретной записи или нажатием клавиши {Ins} (вставить) создаете новую запись. Протокол заканчивается, когда вы выходите из записи или удаляете ее. Таким образом, одна запись в течение одного сеанса редактирования может быть включена в несколько протоколов. Отметим также, что при использовании многотабличных форм в один протокол могут быть включены несколько записей.

Меню EDIT


В режиме редактирования вы всегда можете войти в меню редактирования нажатием клавиши {F10}. Меню Edit (редактирования) содержит следующие услуги:

  • Image (образ): реорганизовать информацию на экране.
  • Undo (отменить): отменить изменения в текущем образе, сделанные после начала редактирования (один протокол за раз).
  • ValCheck (проверка правильности): установить требования к значениям в поле, сверять значения в поле со значениями в поле другой таблицы и заполнять поле значениями из других таблиц (см. раздел "Проверки правильности" в конце главы для получения более подробной информации).
  • Help (помощь): получить пояснительную информацию о редактировании таблицы.
  • DO-IT! (выполнить): завершить редактирование, подтвердить изменения и возвратиться в главное рабочее поле.
  • Cancel (прервать): закончить редактирование, отменить изменения во всех образах в рабочем поле, вернуться в главное рабочее поле.
                          Image (Образ)
                          -------------

Услуга Image (образ) в меню Edit совпадает с услугой Image в Главном меню. Она позволяет вам во время редактирования:

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

Более подробная информация содержится в главе 8 данного руководства.

                ValCheck (проверка правильности)
                --------------------------------

Услуга Valcheck позволяет вам установить, очистить или сохранить требования и значения по умолчанию для вводимых в поле данных. Она позволяет также сверять значения в поле со значениями в поле другой таблицы и заполнять поле значениями из других таблиц.

Для получения более подробной информации о ValCheck смотрите раздел "Проверки правильности" в конце этой главы.

Поддержка редактирования


Paradox помогает вводить и редактировать числа и даты, проверяя и сравнивая вводимое вами значение. С помощью клавиши {Про- бел} можно вводить часть или целое значение этих типов значений. Кроме того, редактирование поля любого типа облегчается благодаря использованию специальных клавишных команд.

                         Числовые  поля
                         --------------

При вводе или редактировании числовых значений (типа N или $) можно использовать несколько соглашений:

  • Десятичная точка. Чтобы ввести десятичную точку (запятую в международном формате), кроме ее набора вы можете также нажать {Пробел}.
  • Отрицательные значения. Указать отрицательное значение можно, поставив перед ним знак "минус" или заключив его в круглые скобки. Если поле уже содержит левую скобку, нажмите {Пробел}{Пробел}, чтобы ввести десятичную точку и правую скобку.
  • Разделители целых частей чисел. В зависимости от установленного числового формата (см. раздел "Международные черты системы Paradox" в главе 2) вы можете использовать точки или запятые для разделения групп из трех целых чисел. В этом случае до того, как вы выйдете из редактирования поля, Paradox проверит, правильно ли они проставлены. Например, можно ввести значение 1,234,567, но не 1,234,56.
  • Мелкие деньги. Если вы не вводите дробную часть (центы или т.п.) при вводе значений типа $ (деньги), Paradox автоматически добавит 00.

Заметим, что способ, которым вводится значение, не влияет на то, как оно будет выдано на экран. Например, значения типа $ обычно выдаются вместе с запятыми и в скобках, значения типа N без них. Если при наборе значения типа $ разделители не вводятся, Paradox проставит их при выходе из поля. Если вы заключите в круглые скобки отрицательные значения типа N, Paradox изменит их на знак минус (-). Изменить способ выдачи значения на экран можно с помощью услуги Use/Format.

                         Поля типа дата
                         --------------

При вводе и редактировании значений типа дата (D) вы можете использовать несколько соглашений:

  • Форматы. Вводить даты можно в форматах: MM/DD/YY, DD-Mon-YY или DD.MM.YY. То есть можно набрать дату 6 февраля 1988 года как 2/6/1988, 6-Feb-1988 или 6.02.88.
  • Правильные даты. Paradox не разрешит вводить даты, которых нет в календаре, например, 31 апреля 1988 г. Paradox знает о високосных годах и високосных столетиях.
  • Текущий год. Если вы опускаете год при вводе даты, Paradox вставит значение текущего года.
  • Компоненты текущей даты. Месяц, день и год даты называются ее компонентами. Нажмите {Пробел}, чтобы заполнить оставшиеся компоненты даты текущими значениями (вместе со знаками "/", "-" или ".").

Например, вы можете нажать {Пробел} трижды, чтобы ввести текущую дату (месяц, день, год) или нажать {Пробел}, чтобы ввести значение текущего месяца и знак "/", набрать день, нажать {Пробел} снова, чтобы ввести следующий знак "/", и снова нажать {Пробел}, чтобы заполнить значение текущего года. Paradox полагает, что значение дат будут вводиться в формате поля, выдаваемого на экран, однако вы можете перейти к другому формату, набрав один из символов "-", "/" или "." в нужном месте. Предположим, например, что значения выдаются в форме MM/DD/YY. Если вы набрали день и знак "-", Paradox поймет, что используется формат DD-Mon-YY. Нажмите {Пробел}. Paradox заполнит значение текущего месяца (в форме Mon) и поставит знак "-".

  • Название месяца. Первая буква названия месяца автоматически выдается как заглавная буква. Чтобы ввести другие буквы, нажмите {Пробел}. Если несколько месяцев начинаются с одной буквы, будет введен более ранний месяц.

Представьте, что вы набрали j; Paradox выдаст букву как заглавную - J. Нажав {Пробел}, вы введете [a] (подразумевается январь (Jan)). Предположим, вы нажали {Backspace}, стерли [a] и набрали [u]. Нажав снова {Пробел}, вы введете [n] (по- лучится Jun (июнь)). Далее вы могли бы нажать {Backspace} и набрать [l] (Jul - июнь).

Как и в случае с числами, способ, которым вы вводите дату, не влияет на ее отображение на экране. Предположим, что значения в поле выдаются в форме MM/DD/YY. Если вы вводите дату в форме DD-Mon-YY, Paradox приведет ее к виду MM/DD/YY, когда вы выйдете из поля. Чтобы изменить формат выдачи дат на экран, воспользуйтесь услугой Image/Format.

                            Все поля
                            --------

Несколько специальных клавиш системы Paradox помогут вам редактировать значения в полях любых типов.

  • {Ctrl}{D} (повторить). Нажатие этой клавиши во время заполнения поля приведет к копированию значения из этого же поля предыдущей записи. Это особенно удобно, когда у вас имеется много повторяющихся значений в столбце.
  • {Ctrl}{Z} (найти). Нажатие этой клавиши позволяет быстро найти в таблице значение, которое вы хотите редактировать. Для нахождения значения поместите курсор в соответствующее поле и нажмите {Ctrl}{Z}. После этого система запросит у вас искомое значение. Введите его и нажмите {Enter}. Курсор переместится к первому вхождению заданного значения в таблице.

Для организации поиска вы можете воспользоваться универсальными символами системы Paradox, чтобы задать маску поиска. Например, если вы хотите найти покупателей, чьи имена начинаются на "M" и заканчиваются на "s", вы можете ввести M..s. Для нахождения последующих вхождений заданного значения нажимайте

  • {Alt}{Z} (найти следующее).

Для получения более подробной информации о командах {Ctrl}{Z} и {Alt}{Z} обратитесь к обсуждению услуги Image/Zoom/ Value в главе 8.

  • Маски формата. Если вы воспользовались услугой ValCheck/Picture, чтобы установить маску формата для поля, Paradox будет автоматически вводить все указанные константы. Например, если вы применили маску ###-#### для телефонного номера, знак "-" будет заполняться автоматически после набора вами третьей цифры. Чтобы стереть его, нажмите клавишу {Backspace}.

Редактирование записей в многотабличных формах


Как показано в главе 3, вы можете разрабатывать и просматривать данные в формах, которые показывают более одной таблицы. Многотабличная форма всегда основывается на так называемой главной таблице - той, для которой форма была разработана. Формы для других таблиц встраиваются в главную форму. Главная и встроенные формы могут быть связаны (логически) или несвязаны. Для получения полной информации о разработке многотабличных форм обратитесь к главе 2 книги "Представление данных".

Клавиши и процедуры, используемые для редактирования таблиц, одинаковы для режима просмотра таблицы, однотабличной и многотабличной форм. Многотабличная форма выбирается для редактирования обычным способом - использованием Modify/Edit или View и {F9} (редактирование) для отображения главной таблицы в режиме редактирования, а затем использованием услуги Image/Pickform.

Главная и встроенные формы являются отдельными формами на экране. Вы можете использовать клавиши {F3} (образ вверх) и {F4} (образ вниз) для перемещения с одного образа на другой. Поэтому для отдельного образа можно изменять значения, вставлять и удалять записи, а также отменять сделанные изменения, как описано выше в этом разделе.

Существует только два исключения.

  • Одна или несколько таблиц в форме могут иметь режим "только отображаемая" (DisplayOnly). В этом случае эти таблицы можно только просматривать и нельзя редактировать. Для получения более подробной информации о таких формах смотрите главу 2 книги "Представление данных".
  • После того, как вы начали редактировать, вы не можете входить и выходить из многотабличной формы, пока не закончите сеанс редактирования.

Если таблицы в форме связаны, изменения в записях одной таблицы могут влиять на записи в других таблицах. По этой причине Paradox накладывает некоторые ограничения на редактирование записей в связанной многотабличной форме. Эти правила предохраняют логическую связь между главной и встроенными дополняющими таблицами.

Два правила применимы только к многотабличным формам, связанным на основе принципа "один-к-одному" и "один-ко-многим". Это случаи, когда главная запись (например, заказчик) "владеет" одной или более дополняющими записями (например, заказами).

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

Третье правило применимо ко всем связанным многотабличным формам.

  • Если вы начали редактирование в режиме просмотра таблицы или в однотабличной форме, вы не можете переключиться на многотабличную форму, не завершив сначала сеанс редактирования. Вы не можете редактировать связанные таблицы одновременно (во время одного сеанса редактирования) в многотабличной форме и в режиме просмотра таблицы или в однотабличной форме.

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

                   Уничтожение главных записей
                   ---------------------------

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

Например, мало смысла имеет список заказов несуществующего заказчика. По этой причине Paradox не может позволить вам уничтожить главную запись о заказчике, чьи заказы остаются в дополняющей форме. Если вы хотите уничтожить главную запись вместе со связанными дополняющими записями во время текущего сеанса редактирования, вы должны сначала удалить все связанные дополняющие записи.

По этой же причине Paradox не может позволить вам добавить дополняющие записи, связанные с главной записью, у которой пустое значение ключа связи. Вы должны сначала явно задать значение ключа связи главной записи, а затем уже дополнять ее связанными записями.

Изменение соответствующих значений в связанных таблицах


| Если вы изменяете значение ключа связи в главной таблице, | Paradox автоматически изменяет соответствующие дополняющие | значения.
Это правило также применяется к таблицам, связанным по принципу "один-к-одному" и "один-ко-многим".

Например, если вы изменяете номер заказчика, то его заказы, расположенные согласно его номера, не должны, естественно, затеряться. Поэтому, когда вы изменяете значение номера заказчика в таблице customer (заказчик), Paradox автоматически изменяет соответствующие значения во всех связанных с данным заказчиком записях таблицы bookord (заказы на книги) на новые. Это предохраняет логическую связь между записями в таблицах customer и bookord.

Вследствие имеющегося способа связи таблиц в форме вы не можете видеть соответствующие поля дополняющей части формы. Однако вы увидите измененные значения, когда перейдете к просмотру таблицы.

          Переключение "в" и "из" многотабличной формы
          --------------------------------------------

| Во время текущего сеанса редактирования связанных посредст | вом многотабличной формы таблиц вы можете редактировать их | только через многотабличную форму. Если вы нажмете {F7} (переключатель форм), чтобы перейти к просмотру, вы увидите главную таблицу в режиме просмотра таблицы даже если курсор находился перед этим на дополняющей таблице. Однако вы не сможете редактировать ни одну из таблиц. Индикатор состояния укажет вам, что таблицы "связно блокированы" (link locked).

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

По этим же причинам, если вы хотите начать ввод данных в режиме просмотра таблицы или в однотабличной форме, вы не сможете переключиться на многотабличную форму без окончания сначала сеанса ввода данных. Вы не можете вводить записи в связанные таблицы в многотабличной форме и при просмотре таблицы (или в однотабличной форме) во время одного и того же сеанса ввода данных.

Правила редактирования, которые Paradox применяет к связанным таблицам, действуют только при использовании вами многотабличной формы. Связанность не переносится на новый сеанс, в котором используется режим просмотра таблицы или однотабличная форма.

Это означает, что в новом сеансе работы с одной таблицей вы можете делать те изменения, которые Paradox не разрешает в многотабличной форме, например, уничтожение главной записи, от которой зависят дополняющие записи. Поскольку Paradox не может в таких случаях гарантировать целостность взаимосвязи, вы можете предпочесть не редактировать связанные таблицы по-отдельности.

Отмена изменений в многотабличной форме


Когда вы редактируете таблицы посредством многотабличной формы, вы можете отменить любое сделанное во время текущего сеанса изменение путем нажатия клавиши {Ctrl}{U} или выбора услуги Undo (отменить) из меню Edit. Paradox предохраняет целостность взаимосвязи в том случае, когда вы отменяете изменения, внесенные в связанные таблицы. Таким образом, если вы изменили значение ключа связи в главной таблице, то когда вы отменяете эти изменения, все соответствующие изменениям значения ключа связи в соответствующих дополняющих таблицах будут также отменены.

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

Редактирование в сети


Когда вы выбираете услугу Modify/Edit, работая в сети, Para- dox автоматически накладывает полную блокировку на таблицу. Это означает, что остальные пользователи сети не смогут использовать эту таблицу ни в каких целях, пока вы не закончите сеанс редактирования. Поскольку режим редактирования (Edit) требует такого исключительного доступа к таблицам, а вы работаете с таблицами, которые могут понадобиться другим пользователям, обычно предпочтительнее бывает использовать режим совместного редактирования (оп- ция Modify/Coedit), который позволяет нескольким пользователям одновременно вносить изменения в таблицу.

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

В то же время могут существовать ограничения ваших возможностей по редактированию таблиц, которые были созданы другими пользователями. Уровень доступа, установленный владельцем таблицы, может ограничивать ваши возможности по ее модификации. Существует два типа ограничений, накладываемых на редактируемые таблицы: табличные права (права на доступ к таблице) и полевые права (права на доступ к конкретному полю). В соответствии с табличными правами существуют следующие виды ограничений, накладываемые на редактирование:

  • ReadOnly (только читать): вы можете просматривать таблицу, но не можете ее изменять.
  • Update (изменять): вы можете изменять значения только в неключевых полях существующих записей.
  • Entry (ввод): вы можете вводить новые записи и изменять ключевые поля с помощью DataEntry и Tools/More/Add, но не можете удалять записи.
  • InsDel (вставка/удаление): вы можете изменять и уничтожать существующие записи и вставлять новые записи.
  • All (все): вы имеете полный доступ к таблице.

Кроме того, владелец таблицы может накладывать ограничения на доступ к отдельным полям таблицы. Уровни полевого доступа следующие:

  • None (ничего): вы не можете ни просматривать, ни изменять значения в таблице.
  • ReadOnly (только читать): вы можете просматривать значения в поле, но не можете их изменять.
  • All (все): вы можете просматривать и изменять значения в поле.

Paradox выдаст вам сообщение, если вы попытаетесь начать операцию редактирования, которая вам недоступна. Смотрите раздел об услуге Tools/More/Protect в главе 10 для получения более подробной информации.

Отметим, что когда вы работаете с многотабличными формами, вы должны иметь достаточные права для работы с каждой таблицей, которую вы собираетесь изменять. Поскольку изменение ключа записи в главной таблице автоматически изменяет соответствующие ключи записи в дополняющих таблицах, вы должны иметь по крайней мере права на ввод (Entry) информации во все таблицы, входящие в форму, если собираетесь изменять в форме любые ключевые поля.

COEDIT (СОВМЕСТНОЕ РЕДАКТИРОВАНИЕ)


Услуга Modify/Edit подходит, когда вы одни работаете с таблицей. Однако когда вы работаете в режиме редактирования, Paradox автоматически накладывает полную блокировку на редактируемые вами таблицы, предотвращая их использование другими пользователями. По этой причине когда двое или больше пользователей хотят одновременно вносить изменения в таблицу, обычный режим редактирования не подходит.

Для этих целей специально предназначена услуга Modify/ Coedit. Paradox накладывает предохраняющую полную блокировку, которая обеспечивает максимальный уровень совместного использования, на совместно редактируемые таблицы. Кроме того, Paradox блокирует каждую модифицируемую запись. Это позволяет многим пользователям одновременно работать с таблицей, и единственным ограничением является то, что два пользователя не могут одновременно редактировать одну и ту же запись.

Для того, чтобы войти в режим совместного редактирования, выберете услугу Modify/Coedit из Главного меню или нажмите клавишу {Alt}{F9} (совместное редактирование), когда одна или более таблиц, которые вы хотите редактировать, находятся в рабочем поле.

Работа в режиме совместного редактирования


Как и в обычном режиме редактирования, все образы в рабочем поле доступны для совместного редактирования. Вы можете совместно редактировать как в режиме просмотра таблице, так и в режиме просмотра формы.

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

Процессы перемещения по рабочему полю, изменения значений поля, использование просмотра поля для редактирования, вставки и удаления записей в режиме Coedit точно такие же, как и при обычном редактировании. Кроме того, поддержка и специальные клавиши, используемые в режиме Edit (например, {Ctrl}{Z}), действуют также и в режиме Coedit. (См. раздел "Edit (редактирование)" выше.) Чтобы завершить режим совместного редактирования, нажмите клавишу {F2} или выберите услугу DO-IT! (выполнить) из меню Coedit.

Хотя режимы Edit и Coedit во многом похожи, между ними существует несколько важных различий. Они обобщены ниже в таблице 7-1. Отметим, что некоторые специальные черты режима Coedit (нап- ример, высокоуровневая поддержка обработки конфликтов ключей) делают его более предпочтительным даже для однопользовательских приложений.

Таблица 7-1. Разница между режимами Edit и Coedit.


Операция Edit Coedit
Блокирование     Нет                  Модифицируемые записи автозаписей                               матически блокируются

Блокирование На таблицу накла- На таблицу накладывается

таблиц           дывается полная      предохраняющая полная блоблокировка; к        кировка, предохраняющая
                 таблице имеет дос-   блокировка от записи
                 туп только тот,      накладывается в любом слукто редактирует      чае (блокирована запись
                                      (record) или нет)

Запись           Изменения посыла-    Изменения посылаются после
изменений        ются на диск по      редактирования каждой заокончании сеанса     писи
                 редактирования

Отмена           Все изменения,       Можно отменить только самое
                 сделанные во время   последнее изменение
                 сеанса редактирования, можно отменить

Конфликты Если ключ новой за- При конфликте ключей вы мо

ключей           писи конфликтует с   жете выбрать, заменять стаключем существующей, рые значения неключевых понеключевые поля но-  лей новыми или нет
                 вой записи автоматически замещают те
                 же поля старой

Производи- Обычно не так быст- Обычно быстрее чем редактительность ро как совместное рование

редактирование

Модификация Разрешается с не- Разрешается с некоторыми записей в которыми ограни- ограничениями, если все

связанной        чениями              пользователи используют одмноготабличной                        ну многотабличную форму

форме


Блокирование записей


В отличие от других режимов, которые блокируют только таблицы, в режиме Coedit Paradox блокирует также отдельные записи. Paradox автоматически блокирует запись как только вы начали модифицировать ее. Если вы просто просматриваете таблицу, не внося никаких изменений в данные, никакие записи не блокируются.

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

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

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

                       Освобождение записи
                       -------------------

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

Блокированные записи освобождаются любым из следующих двух действий:

  • Нажатием клавиши {F2} (выполнить) или выбором услуги DO-IT! из меню Coedit для окончания сеанса совместного редактирования, или
  • перемещением курсора к другой записи той же таблицы. Вы можете сделать это:
    • нажатием клавиш {Стрелка вверх} и {Стрелка вниз};
    • нажатием клавиш {<--} или {Shift}{Tab}, если курсор находится в самом левом поле таблицы;
    • нажатием клавиш {-->}, {Tab} или {Enter}, если курсор находится в самом правом поле таблицы.

Отметим, что когда запись блокирована, перемещение к другому образу в рабочем поле (посредством {F3} (образ вверх) или {F4} (образ вниз)) не освобождает запись. Она остается текущей записью в таблице, в которой вы находились. Таким образом, хотя вы можете блокировать одну запись в образе за раз, вы можете иметь несколько заблокированных записей в разных образах одновременно.

Если вы заблокировали записи в одной или более таблицах, нажатие клавиши {F2} (выполнить) или выбор услуги DO-IT! из меню направит все изменения в таблицу, освободит все записи, а затем завершит ваш сеанс совместного редактирования.

Смотрите раздел "Совместное редактирование с использованием многотабличных форм" позднее в этой главе для ознакомления со специальными соглашениями, которые вы должны знать при использовании многотабличных форм в сеансе совместного редактирования.

  • Явное блокирование и освобождение записей.

Кроме автоматического блокирования записей системой Paradox, вы можете явно блокировать запись нажатием клавиши {Alt}{L} (пе- реключатель блокировки). Явное блокирование записи полезно, если вы хотите предотвратить изменение записи другим пользователем до того, как вы сами начнете изменять ее.

Нажатие {Alt}{L} в момент, когда запись блокирована, освободит ее и запишет все сделанные вами изменения. Вы можете использовать {Alt}{L} для освобождения записи, когда они автоматически заблокирована системой или явно вами.

  • Блокирование нескольких записей в одной таблице.

Вы можете заблокировать две или более записей в одной таблице одновременно размещением нескольких образов этой таблицы в рабочем поле перед началом совместного редактирование. (Отметим, что это не действует, если используемая таблица находится не в разделяемом каталоге.)

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

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

Ввод новых записей


Как и при обычном редактировании, в режиме Coedit вы можете вводить новые данные в таблицу нажатием клавиши {Ins}, которая вставляет новый бланк записи. При этом на второй строке экрана появляется сообщение состояния "Entering new record - not yet posted to table" (Ввод новой строки, не еще записанной в таблицу).

Это сообщение показывает, что вставленная вами запись существует только в образе таблицы. Она недоступна другим пользователям, пока не записана в саму таблицу (это произойдет, когда вы переместите курсор на другую запись или закончите сеанс совместного редактирования). Поэтому новые записи, которые вы вводите, не блокируются.

Обновление экрана


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

  • Нажатие клавиши {Alt}{R} (обновление) немедленно обновит образ на экране. Вы увидите все изменения, сделанные другими пользователями в отображаемых на экране частях таблиц.
  • Автоматическое обновление системой Paradox всех образов, отображаемых на экране. При каждом автоматическом обновлении в образы вносятся все изменения, сделанные другими пользователями со времени последнего обновления.

Услуга AutoRefresh (автоматическое обновление) из меню Coedit позволяет вам задать интервал автоматического обновления вашего экрана. По умолчанию интервал автообновления - 3 секунды, вы можете установить его равным любому значению от 1 секунды до 1 часа. Вы можете также отменить автообновление, стерев значение интервала.

  • Если вы начинаете изменять или явно блокировать устаревшую запись, Paradox обновит экран автоматически. Простой просмотр таблицы или перемещение курсора к измененной записи не обновит экран. Однако как только вы начинаете изменять устаревшую запись или нажимаете {Alt}{L} (переключение блокировки), пытаясь заблокировать ее, Paradox обновит образ. Это предохраняет вас от работы с неправильными и неактуальными данными.

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

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

                        Отмена изменений
                        ----------------

Как показано ранее в этой главе, когда вы выбираете услугу Modify/Edit для внесения изменений в таблицу, Paradox поддерживает протокол всех сделанных вами изменений в текущем сеансе редактирования. Даже хотя изменения постоянно посылаются на диск, протокол изменений позволяет вам отменить все или часть сделенных вами изменений в любой момент, пока вы не завершили текущий сеанс.

В режиме Coedit вы отменяете изменения точно так же, как и в режиме Edit - выбором услуги Undo из меню Coedit или нажатием клавиши {Ctrl}{U}. Однако вследствие сложности отмены изменений при редактировании таблицы одновременно несколькими людьми, вы можете отменить только последнее сделанное вами изменение.

Существует несколько случаев, при которых вы не можете отменить даже последнее изменение. Например, предположим, что вы в режиме Coedit внесли изменение в запись таблицы orders. Затем, сразу после того, как ваше изменение было записано в таблицу, другой пользователь, редактирующий таблицу orders вместе с вами, уничтожает ту же запись. Если вы после этого попытаетесь отменить ваше изменение, то у вас ничего не получится, потому что запись уже просто не существует. (Конечно, если вы сами удалили эту запись, вы можете ее восстановить, но только если вы после этого не изменяли другую запись.)

Совместное редактирование таблиц с ключевыми полями


При совместном редактировании таблиц с ключевыми полями существует две ситуации, которые необходимо знать:

  • занесение новых записей в удаленные части таблицы;
  • обработка конфликтов ключей.
                Занесение новых записей в таблицу
                ---------------------------------

Когда вы заканчиваете ввод или внесение изменений в запись в режиме Coedit или когда вы нажимаете {Alt}{L} (переключатель блокировки) для явного освобождения записи, эта запись немедленно заносится в таблицу. Поскольку таблицы с ключевыми полями всегда отсортированы по значению их ключевых полей, занесение новой записи требует ее размещения в таблице согласно ее ключа.

Если вы вводите запись со значением ключа, относящимся к другой части таблицы, то при внесении этой записи в таблицу покажется, что она "вылетит" со своей предыдущей позиции. В зависимости от изменения ее местоположения она может исчезнуть с экрана совсем. Сообщение на экране скажет вам, под каким номером эта запись занесена в таблицу. Курсор при этом, однако, никуда не переместится и останется на той же строке текущего образа.

                   Обработка конфликтов ключей
                   ---------------------------

Когда вы редактируете таблицы с ключевыми полями в режиме Coedit, Paradox обеспечивает специальную поддержку для обработки конфликтов ключей. Если вы вводите новую запись, ключ которой дублирует уже существующий, или изменяете значение ключа существующей таблицы так, что он становится равен другому ключу, то когда вы попытаетесь занести запись в таблицу, сообщение на экране проинформирует вас о конфликте ключей. Paradox не позволит вам продолжать до тех пор, пока конфликт не будет устранен.

Вы имеете четыре выхода из такой ситуации:

  • Если введенное значение ключа неправильно, то вернитесь назад и измените его на правильное значение, а потом занесите запись.
  • Если вся введенная или измененная запись неправильна, нажмите клавишу {Ctrl}{U} (отменить) или выберите услугу Undo из меню, чтобы отменить ваши изменения. Если вы ввели новую запись, она исчезнет, если изменили существующую, она восстановится. В любом случае конфликт ключей будет разрешен.
  • Если введенные вами значения правильны, и вы хотите использовать их вместо прежних, нажмите {Alt}{L} (переключение блокировки). Paradox заменит значения в неключевых полях прежней записи на значения из новой записи, имеющей тот же ключ.

Если вы изменили ключевые поля существующей записи так, что они стали совпадать с ключом другой записи, первоначальный ключ первой записи будет потерян, если вы нажмете клавишу {Alt}{L}. Вы можете использовать клавишу {Ctrl}{U} (отме- нить), чтобы убрать изменения.

  • Если вы не уверены, какое из значений является правильным, нажмите клавиши {Alt}{K} (конфликт ключей) для просмотра значений в записях, имеющих конфликтующие ключи. Клавиша {Alt}{K} является переключателем, который попеременно показывет старые и новые неключевые значения в двух записях. Это особенно удобно, когда записи с конфликтующими ключами находятся в удаленных друг от друга частях таблицы.

Если вы определили, какая из двух записей правильна, нажмите {Alt}{L} (переключение блокировки) для замены существующей записи новыми значениями или {Ctrl}{U} (отменить) для отмены изменений и оставления прежних значений.

Меню Coedit


Когда вы выполняете совместное редактирование, то можете в любое время нажать клавишу {F10} (меню) и вы увидите меню Coedit. Оно содержит четыре пункта (услуги):

  • Image (образ): изменить порядок расположения информации на экране.
  • Undo (отменить): отменить самое последнее изменение, сделанное в образе.
  • AutoRefresh (автообновление): установить частоту обновления экрана.
  • Help (помощь): получить справочную информацию о режиме совместного редактирования.
  • DO-IT! (выполнить): окончить сеанс совместного редактирования, освобождить любые записи, которые вы заблокировали, записать сделанные вами изменения в этих записях и возвратиться в главное рабочее поле.
                          Image (образ)
                          -------------

Услуга Image меню Coedit - то же самое, что и услуга Image Главного меню. Во время совместного редактирования она вам позволяет:

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

Вы можете также использовать {Ctrl}{Z} (найти) и {Alt}{Z} (найти следующее) как сокращенные команды услуги Image/Zoom/Value для быстрого нахождения конкретной записи в таблице, которую вы редактируете в режиме Coedit. Для получения более подробной информации смотрите главу 8 данного руководства.

                         Undo (отменить)
                         ---------------

Услуга Undo позволяет вам отменить последнее сделанное вами в текущем образе изменение. Во время сеанса совместного редактирования вы можете отменить только самое последнее изменение в образе, сделанное вами. Для получения более подробных сведений смотрите раздел "Отмена изменений" ранее в этой главе.

Поскольку Paradox не сохраняет протокол изменений, сделанных во время сеанса совместного редактирования, вы не можете отменить все изменения (вернуться к начальному состоянию перед началом редактирования). Поэтому в меню Coedit нет услуги Cancel (прер- вать).

             AutoRefresh (автоматическое обновление)
             ---------------------------------------

Услуга AutoRefresh позволяет вам задать, как часто Paradox будет обновлять отображающийся на экране образ. Эта услуга дублирует услугу Tools/Net/AutoRefresh Главного меню.

Вы можете установить период обновления равным любому значению от 1 секунды до 1 часа (3600 секунд). По умолчанию используется интервал 3 секунды. По истечении каждого периода Paradox проверяет, были ли изменены записи в образе на вашем экране другими пользователями. Если были, то Paradox автоматически обновляет просматриваемый вами образ. При этом вы увидите сообщение об обновлении ("Refreshing...") в нижней части экрана.

Когда вы выбираете услугу AutoRefresh из меню Coedit, Paradox выдает текущую установку периода обновления экрана:


Interval: 3
Enter new autorefresh interval or leave blank to disable. (Введите новый интервал автообновления или оставьте бланк пустым, чтобы отменить автообновление.)

Чтобы изменить ее, воспользуйтесь клавишей {Backspace} для удаления прежнего значения и введите новое. Значение периода обновления задается в секундах (от 1 до 3600).

                      Проверки правильности
                      ---------------------

В меню Coedit нет услуги ValCheck (проверка правильности). Поэтому вы не можете определить новые проверки или убрать существующие во время совместного редактирования; будут использоваться установленные ранее.

Если же вы хотите определить или изменить проверки правильности, то вы можете сделать это во время сеанса обычного редактирования или ввода данных.

Ограничения доступа к таблицам


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

           Совместное редактирование с использованием
           многотабличных форм

Как и в режиме Edit (редактирование), вы можете использовать многотабличные формы для редактирования записей более чем одной таблицы в одно и то же время. При совместном редактировании связанных таблиц накладываются те же ограничения, обеспечивающие внутреннюю согласованность ваших данных, что и при обычном редактировании:

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

Отметим, что это правило в чем-то менее ограничивающее, чем в режиме Edit. После записи в таблицу одной или более записей в режиме Coedit вы можете переключиться на многотабличную форму и продолжить совместное редактирование, но не можете вернуться снова назад.

Для получения полной информации об этих правилах и о связанных многотабличных формах смотрите раздел "Редактирование записей в многотабличных формах" ранее в этой главе.

Кроме этих правил, в режиме Coedit соблюдается также дополнительное правило:

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

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

Когда вы совместно редактируете посредством многотабличной формы, перемещение курсора из текущего образа вынуждает Paradox записывать все сделанные вами изменения. Предположим, например, что вы редактируете таблицу customer (заказчик) посредством многотабличной формы и только что изменили номер телефона заказчика теля. Перемещение курсора к связанной дополняющей таблице orders (заказы) вызовет запись изменений, внесенных в customer. Если вы изменили значение ключевого поля в главной записи, при перемещении курсора к дополняющим образам изменение будет записано и запись будет размещена в таблице в соответствии с новым значением ключа. Однако эта главная запись останется текущей и будет оставаться заблокированной, позволяя продолжить работу с дополняющими записями для этой главной записи.

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

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

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

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

DATAENTRY (ВВОД ДАННЫХ)


Хотя вы можете использовать опции Modify/Edit или Modify/ Coedit, чтобы добавить новые записи в таблицу, при добавлении более, чем нескольких записей, предпочтительнее использовать опцию Modify/DataEntry. При работе с этой услугой существующие в таблице записи не выдаются на экран, поэтому их нельзя случайно удалить или изменить.

После того, как вы выбрали услугу DataEntry и ввели имя таблицы, на экране появится пустая таблица с именем entry (ввод). Она будет иметь ту же структуру, что и ваша выбранная таблица.

Можно сразу же начать вводить записи, перемещать курсор или редактировать таблицу entry, как любую другую таблицу системы Paradox. (Клавиши и соглашения описаны в разделе "Клавиатура" в главе 2 данного руководства и разделе "Edit (редактирование)" этой главы). Вы можете также нажать клавишу {F7} (переключение формы) и вводить новые записи в стандартную форму или создать собственную форму для ввода данных. Все соглашения останутся прежними.

Когда вы закончите ввод данных, нажмите {F2} (выполнить). Paradox перенесет записи из таблицы entry в таблицу, которую вы указали. Записи будут добавлены в конец таблицы, если она не содержит ключевых полей. Если таблица содержит ключевое поле (по- ля), записи будут отсортированы в ней согласно значения ключа.

Если какая-нибудь из новых записей имеет значение ключевого поля, которое совпадает со значением ключевого поля существующей записи (то есть нарушается требование уникальности ключа), эта запись будет помещена во временную таблицу системы Paradox с именем keyviol. Чтобы избежать конфликтов ключей, можно отредактировать эти записи, а затем с помощью услуги Tools/Menu/Add добавить их в исходную таблицу. Помните, что таблица keyviol будет перезаписана при следующем нарушении уникальности ключа и уничтожена при выходе из системы Paradox.

При добавлении записей в таблицы системы Paradox, ввод не будет завершен, пока вы не нажмете {F2} (выполнить) или не выберете услугу DO-IT! из меню. При вводе данных вы можете случайно увидеть, как зажглась лампочка дисковода: система Paradox сама сохраняет информацию на диск. Это минимизирует вероятность потери информации.

Между двумя сохранениями информации на диск новые записи хранятся в памяти компьютера, где они зависят от бросков напряжения и других ошибок. Если вы хотите уменьшить вероятность потери данных, нажимайте периодически {F2} (выполнить), чтобы сохранить новые записи на диск.

Меню DataEntry


При вводе записей вы можете всегда войти в меню DataEntry, если нажмете клавишу {F10} (меню). Меню содержит следующие услуги:

  • Image (образ): изменить расположение информации на экране.
  • Undo (отменить): отменить последнее изменение, сделанное в таблице entry.
  • ValCheck (проверка правильности): установить требования к значениям в поле, а также сверять значения в поле со значениями в поле и заполнять поле значениями из другой таблицы.
  • KeepEntry (сохранить ввод): прервать ввод данных, сохранить записи в таблице entry и вернуться в главное рабочее поле.
  • Help (помощь): получить дополнительную информацию о вводе данных.
  • DO-IT! (выполнить): завершить ввод данных, добавить записи в таблицу и вернуться в главное рабочее поле.
    • Cancel (прервать): закончить ввод данных, удалить новые записи и вернуться в главное рабочее поле.
                          Image (образ)
                          -------------

Услуга Image в меню DataEntry аналогична услуге Image в Главном меню. Она позволяет вам при добавлении вводе новых записей:

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

Для получения более подробной информации смотрите главу 8 данного руководства.

                ValCheck (проверка правильности)
                --------------------------------

Услуга ValCheck в меню DataEntry аналогична услуге ValCheck из меню Edit. Она позволяет вам установить или очистить требования и значения по умолчанию для вводимых в поле значений. Более подробно эта услуга описана в разделе "Edit (редактирование)" выше в этой главе.

                   KeepEntry (сохранить ввод)
                   --------------------------

Услуга KeepEntry позволяет вам сохранить таблицу entry без вставления ее данных в указанную вами в качестве целевой таблицу. KeepEntry особенно полезна, когда вы не можете завершить операцию ввода данных в сети вследствие того, что целевая таблица заблокирована другим пользователем. (См. раздел "Ввод данных в сети" ниже в этом разделе для получения более подробной информации.)

Если это случается, то при нажатии клавиши {F2} (выполнить) или выборе услуги DO-IT! из меню вы получите сообщение о том, что таблица заблокирована. В этом случае вы имеете три возможности:

  • Выберите KeepEntry, чтобы сохранить таблицу entry. Затем вы должны использовать услугу Tools/Rename для переименования entry во избежание ее уничтожения или изменения содержимого. Позже вы можете использовать услугу Tools/More/Add Главного меню для вставления записей из переименованной таблицы entry в целевую таблицу.
  • Выберите Cancel (прервать) из меню DataEntry для прерывания сеанса ввода данных.
  • Подождите немного, чтобы дать возможность пользователю, заблокировавшему таблицу, возможность закончить работу с этой таблицей. Затем попробуйте завершить ввод ваших данных нажатием клавиши {F2} (выполнить) или выбором услуги DO-IT! из меню.

Ввод данных с использованием многотабличных форм


Как показано в разделе "Edit (редактирование)" ранее в этой главе, вы можете разрабатывать и редактировать данные в формах, которые показывают одновременно более одной таблицы. Многотабличная форма всегда основывается на главной таблице - таблицы, для которой эта форма разработана. Формы для других таблиц встроены в главную форму. Главная и встроенные формы могут быть логически связаны или несвязаны. Смотрите главу 2 книги "Представление данных" для получения полной информации о разработке многотабличных форм.

Вы можете вводить новые записи в таблицы многотабличной формы точно так же, как вы можете использовать формы для ввода записей в отдельные таблицы. Для этого выберите услугу Modify/Data- Entry и укажите имя таблицы. Когда появится таблица entry, выберите услугу Image/PickForm из меню DataEntry и выберите многотабличную форму.

Вы можете использовать клавиши F3 (образ вверх) и F4 (образ вниз) для перемещения с одного образа формы на другой. Находясь в одном из образов, вы можете перемещаться по нему, вводить и изменять значения полей, вставлять и уничтожать записи, а также отменять сделанные изменения как описано в начале раздела, посвященного редактированию.

Однако если таблицы в форме связаны, существуют некоторые ограничения на ввод и изменение записей. Правила, по существу, те же, что и при вводе в многотабличную форму, поэтому смотрите раздел "Редактирование записей в многотабличных формах" ранее в этой главе. Отличия рассмотрены в пунктах ниже.

  • Вы не можете уничтожать главную запись, пока существуют зависимые от нее дополняющие записи.
  • Ввод или изменение значений в главном поле вносят соответствующие изменения в значения всех связанных дополняющих записей. Вы не можете вводить дополняющие записи в многотабличную форму, пока соответствующий ключ в главной записи пуст.
  • Начав ввод данных, вы не можете выходить или входить в многотабличную форму, не закончив сначала сеанс ввода данных.

Уничтожение главных записей во время ввода данных


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

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

                 Ввод значений в связанные поля
                 ------------------------------

| Если вы вводите значение в связанный ключ главной записи, | Paradox введет соответствующее значение связанного допол | няющего ключа автоматически.
Если вы позднее измените значение главного ключа, Paradox изменит значения соотвествующих дополняющих ключей. Это правило применимо к таблицам, связанным на основе "один-к-одному" или "один-ко-многим".

           Переключение "в" и "из" многотабличных форм
           -------------------------------------------

После того, как вы начали вводить записи в связанные таблицы с использованием многотабличных форм, таблицы становятся связанно блокированными. Это означает, что

| во время текущего сеанса ввода данных вы можете вводить | данные только в многотабличной форме. Если вы нажмете клавишу {F7} (переключатель форм), чтобы переключиться на режим просмотра таблиц, то вы увидите на экране в этом режиме главную таблицу, даже если курсор находился перед этим на дополняющей таблице. Однако вы не сможете вводить даные ни в какую таблицу. Индикатор состояния покажет вам, что таблицы связанно блокированы (link locked).

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

Конфликты ключей при использовании многотабличных форм


Если любые из новых записей имеют значения ключей, дублирующие ключи существующих записей, Paradox разместит новые записи в ряде временных таблиц с именами keyviol, keyviol1, keyviol2 и т.д. Вы увидите таблицу list, которая соотносит каждую таблицу keyviol с основной таблицей, для которой предназначается запись.

Вы можете редактировать таблицы keyviol по-отдельности, чтобы устранить конфликты ключей, а затем использовать услугу Tools/ More/FormAdd, чтобы вставить записи в соответствующую целевую таблицу. FormAdd, как описано в главе 10, поддерживает взаимную целостность связанных таблиц в форме.

Помните, что таблицы keyviol будут переписаны при обнаружении нового конфликта ключей в многотабличной форме и уничтожены при выходе из системы. Если вы не можете разрешить конфликт ключей немедленно, можете переименовать таблицы keyviol, чтобы сохранить их.

KeepEntry при использовании многотабличных форм


Если вы не можете завершить операцию ввода данных из-за того, что одна или более таблиц формы заблокированы другими, выберите услугу KeepEntry (сохранить ввод) из меню DataEntry. При использовании KeepEntry с многотабличными формами Paradox сохраняет новые записи для каждой таблицы в ряд таблиц с именами entry, entry1, entry2 и т.д. Вы увидите таблицу list, которая соотносит каждую таблицу entry с основной таблицей, для которой предназначается запись.

Сначала используйте Tools/Rename для того, чтобы переименовать эти таблицы entry с тем, чтобы они не были переписаны или уничтожены. Затем, когда таблицы будут доступны, используйте Tools/More/FormAdd, чтобы вставить записи из переименованных таблиц entry в требуемые целевые таблицы. Как показано в главе 10, FormAdd поддерживает целостность взаимосвязи связанных таблиц формы.

Ввод данных в сети


Когда вы выбираете услугу Modify/DataEntry в сети, Paradox автоматически накладывает предохраняющую полную блокировку на таблицу или таблицы, к которым будут добавлены записи. Это означает, что все остальные пользователи будут иметь доступ к этим таблицам для выполнения любых операций, кроме тех, которые требуют их исключительного использования (например, изменение структуры). Если кто-то до вас нас начал операцию, наложившую полную блокировку, то вам придется подождать, пока этот пользователь закончит, прежде чем вы сможете выполнять операцию ввода данных.

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

Когда вы нажмете клавишу {F2} или выберете услугу DO-IT! (выполнить) из меню для того, чтобы вставить записи из таблиц entry в целевую таблицу, Paradox автоматически наложит предохраняющую блокировку от записи на все целевые таблицы. Если кто-то до вас нас начал операцию, наложившую полную блокировку блокировку от записи на таблицу, то вам придется подождать, пока этот пользователь закончит, прежде чем вы сможете завершить операцию ввода данных. В таких случаях вы можете использовать услугу KeepEntry из меню DataEntry для сохранения таблиц entry без вставки их в целевые таблицы. Как бало объяснено, если вы используете для ввода данных многотабличную форму, вам будет необходимо использовать услугу Tools/More/FormAdd для вставления данных из отдельных таблиц entry в соответствующие целевые таблицы, чтобы поддержать целостность взаимосвязи связанных таблиц.

На вашу способность вводить данные в таблицы, созданные другими пользователями, могут быть наложены ограничения. Уровень доступа, назначенный вам владельцем таблицы, определяет ваши полномочия по ее изменению. Существует два типа ограничений, которые накладываются на ввод данных: табличные права и полевые права. Ограничения на ввод данных, согласно различным типам табличных прав, могут быть следующие:

  • ReadOnly (только читать): вы не можете вводить данные в таблицу.
  • Update (заменять): вы можете вводить новые записи только в неключевые поля существующих записей.
  • Entry (ввод), InsDel (вставка/удаление), All (все): вы можете вводить новые записи в таблицу.

Владелец таблицы может также ограничить доступ к конкретным полям таблицы. Существуют следующие уровни полевых прав:

  • None (нет), ReadOnly (только читать): вы не можете вводить значения в поле.
  • All (все): вы можете вводить значения в поле.

MULTIENTRY (МУЛЬТИВВОД)


Услуга Modify/MultiEntry позволяет использовать одну таблицу, как форму для ввода данных, из которой записи добавляются сразу в две или более таблиц. Это средство предоставляет вам возможность использовать всего одну таблицу или форму при добавлении новых записей. Услуга Tools/More/MultiAdd обеспечивает аналогичные возможности, когда вы хотите использовать одну таблицу для того, чтобы обновлять записи сразу в нескольких таблицах.

Если таблицы соответствуют требуемой структуре, другим способом добавления записей к двум или более таблицам одновременно является использование ввода данных (DataEntry) с использованием многотабличных форм. (Для полученя более подробной информации смотрите разделы "Ввод данных с использованием многотабличных форм" выше в данной главе и "Разработка многотабличных форм" в главе 2 книги "Представление данных системы Paradox".)

Для работы с услугой Modify/MultiEntry, у вас должны быть в наличии три компонента:

  • одна исходная таблица, из которой будет вводиться информация;
  • две или более целевые (результирующие) таблицы, в которые будут перенесены данные, введенные в исходную таблицу;
  • таблица соответствия, которая указывает, какие поля целевых таблиц соответствуют полям исходной таблицы.

Для того, чтобы использовать опции Modify/MultiEntry и Tools/More/MultiAdd, вы должны сначала создать таблицу соответствия, которая указывает системе Paradox, как перенести данные из одной исходной таблицы в две или более целевые. Чтобы создать в рабочем поле такую таблицу с помощью запроса, нужно воспользоваться услугой Modify/MultiEntry/SetUp. Таблицу соответствия можно также описать самому, создав новую таблицу определенной структуры и заполнив ее информацией о соответствии полей. Таблицы соответствия более детально описаны в разделе, посвященном услуге MultiEntry/SetUp.

Меню MultiEntry


После того, как вы выберете услугу Modify/MultiEntry, на экране появится подменю с двумя услугами:

  • Entry (ввод): ввести данные в одну исходную таблицу и перенести их в две или более целевые таблицы.
  • SetUp (установка): создать исходную таблицу и таблицу соответствия с помощью запроса из предопределенных целевых таблиц.
                          Entry (ввод)
                          ------------

После того, как вы выбрали услугу Entry из меню Modify/ MultiEntry, нужно указать имя исходной таблицы, куда будут вводиться данные:


Source table:
Enter name of source table, or press {Enter} for a list of tables (Введите имя исходной таблицы или нажмите {Enter}, чтобы получить список таблиц.)

Наберите имя исходной таблицы или нажмите {Enter}, чтобы выбрать исходную таблицу из меню (как описано в разделе "Меню и приглашения системы Paradox" в главе 2 данного руководства). Отметим, что для выбранной таблицы, чтобы она могла являться исходной при мультивводе, должна быть определена таблица соответствия, которая будет использоваться для установления соответствия между исходной и целевыми таблицами.

Поэтому затем Paradox попросит вас указать имя таблицы соответствия:


Map table:
Enter name of map table, or press {Enter} for a list of tables. (Введите имя таблицы соответствия или нажмите {Enter}, чтобы получить список таблиц.)

Наберите имя нужной вам таблицы соответствия или нажмите {Enter}, чтобы выбрать таблицу соответствия из меню таблиц. Выбранная таблица соответствия должна соответствовать ранее выбранной исходной таблице. Если таблица, которую иы выбрали, будет иметь неправильную структуру, или если она не будет подходить для данных исходной и целевых таблиц, вы получите сообщение об ошибке.

После того, как вы определили исходную таблицу и таблицу соответствия, вы увидите на экране пустую таблицу с именем entry, структура которой будет совпадать со структурой исходной таблицы. Можно начать вводить записи в таблицу entry, как в любую другую таблицу системы Paradox. Можно также нажать клавишу {F7} (перек- лючатель форм), чтобы вводить новые записи в стандартной форме или создать собственную форму для ввода данных. (Отметим, что нельзя использовать MultiEntry с многотабличными формами.)

После того, как ввод данных закончен, нажмите клавишу {F2} (выполнить). Paradox возьмет записи из таблицы entry и, используя таблицу соответствия, перенесет их в целевые таблицы, указанные в таблице соответствия. Заметим, что в отличие от обычного ввода данных для одной таблицы, записи в исходную таблицу не добавляются.

Чтобы использовать услугу MultiEntry/Entry правильно, важно понять правила, которым следует Paradox при добавлении записей из исходной таблицы в целевые. Они отличаются от правил добавления данных в одну таблицу.

Во-первых, Paradox использует таблицу соответствия для разделения записей из таблицы entry на множества записей для каждой из целевых таблиц. Если какая-либо целевая таблица содержит ключевое поле, Paradox производит проверку на уникальность ключа. Если конфликта ключей не обнаружено, соответствующая порция записей исходной таблицы будет перенесена в целевую, где они будут размещены в соответствии со значениям ключевых полей. Если целевая таблица не имеет ключевого поля, новые записи будут добавлены в конец таблицы.

  • Конфликты ключей при мультивводе

При выполнении операции MultiEntry/Entry конфликт ключей имеет место в том случае, если хотя бы одна из новых записей имеет значение ключевого поля, совпадающее со значением ключевого поля в существующей записи, а значения неключевых полей при этом не совпадают. Таким образом, нарушение уникальности ключа (конф- ликт ключей) происходит, если совпадают значения по ключевому полю, а остальные значения полей записей отличаются.

В случае нарушения уникальности ключа в любой из целевых таблиц, исходная запись целиком помещается во временную таблицу с именем keyviol. Никакая часть этой записи не будет добавлена ни в одну из целевых таблиц. Вы можете редактировать записи в keyviol для устранения конфликтов ключей, а затем использовать услугу Tools/More/MultiAdd для добавления записей в целевые таблицы. Помните, что таблица keyviol будет перезаписана при следующем конфликте ключей и удалена при выходе из системы Paradox.

  • Совпадающие записи

Если значения в записи, извлеченной из таблицы entry, в точности совпадают с записью в целевой таблице, имеющей ключевое поле, то есть записи - а не только ключи - являются совпадающими, новая запись из исходной таблицы будет "поглощена" существующей целевой записью - то есть она не будет ни помещена в целевую таблицу, ни добавлена в таблицу keyviol. Это правило позволяет вам использовать услугу MultiEntry/Entry в случае, когда записи в целевых таблицах имеют отношения "один-ко-многим", без нарушения уникальности ключа. Замечание: почти всегда предпочтительнее использовать многотабличные формы, когда данные, которые вы вводите в две или более таблиц, имеют отношение "один-ко-многим".

  • Защита паролем

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

  • Меню Entry (ввод)

После того, как вы выберете услугу MultiEntry/Entry, вы перейдете в режим DataEntry (ввод данных). Если вы нажмете клавишу {F10} (меню), то попадете в меню DataEntry. Более подробно смотрите раздел "DataEntry (ввод данных)" выше в этой главе.

                        SetUp (установка)
                        -----------------

Если вы уже создали набор взаимосвязанных целевых таблиц, над которыми вы хотите выполнять многотабличные операции, вы можете использовать услугу MultiEntry/SetUp, которая упрощяет определение исходной таблицы и таблицы соответствия для опций Modify/ MultiEntry/Entry и Tools/More/MultiAdd.

Чтобы использовать услугу SetUp, нужно поместить в рабочее поле форму запроса для каждой из целевых таблиц, которые вы хотите использовать в конкретной многотабличной операции. Для преобразования формы запроса в исходную таблицу и таблицу соответствия используются два вида информации:

  • каждое помеченное галочкой поле в целевой таблице становится полем в новой исходной таблице;
  • поля в формах запросов, которые связаны элементами примера, получают информацию из одного поля в исходной таблице.

Подробнее о формах запроса системы Paradox смотрите главу 4 данного руководства.

  • Исходные таблицы и таблицы соответствия

Исходная таблица, которую вы получите, имеет такую же структуру и отношения к целевым таблицам, как таблица answer, которая была бы создана, если бы вы выполнили запрос, находящийся в рабочем поле, использованный с MultiEntry/SetUp. Вы можете проверить это, просто нажав {F2} и выполнив запрос.

Таблица соответствия является обычной таблицей системы Paradox с конкретной структурой: три алфавитно-цифровых поля. Первое поле содержит имя исходной таблицы, которая содержит исходную информацию. Вторая и третья колонки соответственно содержат имена целевого поля и таблицы, в которые будут помещены данные из указанной исходной таблицы. Хотя намного легче создать таблицу соответствия, используя MultiEntry/SetUp, вы могли бы разработать одну сами, создав таблицу с требуемой структурой и заполнив ее именами исходных полей, целевых полей и целевых таблиц.

  • Использование услуги MultiEntry/SetUp

Когда вы выбираете услугу MulriEntry/SetUp из меню, убедитесь, что соответствующее предложение запроса в рабочем поле сформулировано правильно. Paradox запросит у вас имя, которое вы хотите присвоить новой исходной таблице:


Source table:
Enter new name for source table.
(Введите новое имя для исходной таблицы.)

Наберите имя новой исходной таблицы и нажмите {Enter}. Затем Paradox попросит указать имя для новой таблицы соответствия:


Map table:
Enter new name for map table.
(Введите новое имя для таблицы соответствия.)

Наберите новое имя таблицы соответствия и нажмите {Enter}. В соответствии с предложением запроса в рабочем поле Paradox создаст новую исходную таблицу и таблицу соответствия, а затем вернет управление в главное рабочее поле. После этого можно приступать к выполнению многотабличных операций с помощью услуг Modify/MultiEntry/Entry или Tools/More/MultiAdd.

При подготовке формы запроса для использования MultiEntry/ SetUp вы должны придерживаться нескольких правил.

  • Формы запроса, используемые для создания исходной таблицы и таблицы соответствия для мультиввода, могут содержать только галочки и элементы примера, то есть они не могут включать условия (критерии) выбора, арифметические операторы или операторы calc.
  • Каждая группа из двух или более полей в разных формах запроса, связанная с помощью элементов примера, должна проверяться только один раз.
  • Каждый элемент примера может быть использован в форме запроса только один раз, то есть они могут быть использованы исключительно для связывания соответствующих полей в различных формах запроса.
  • Формы запроса не могут содержать специальные операторы set, insert, delete, changeto или find.
  • Форма запроса не может содержать операторов включения (!).

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

  • Более подробно о таблицах соответствия

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

Поскольку таблица соответствия является обычной таблицей системы Paradox, вы можете определить произвольное число таких таблиц. Однако следует отметить, что таблицы соответствия не являются частью семейства какой-либо другой таблицы или таблиц. Следовательно, при изменении структуры таблицы, которая была указана в таблице соответствия, таблица соответствия не будет обновляться автоматически. Тем не менее, таблицу соответствия можно отредактировать, чтобы учесть изменения, или переопределить с помощью услуги MultiEntry/SetUp.

Мультиввод в сети


Когда вы выбираете Modify/MultiEntry в сети, Paradox автоматически накладывает блокировку от записи на указанные вами исходную таблицу и таблицу соответствия. Это означает, что все остальные пользователи будут иметь доступ к этим таблицам для выполнения любых операций, кроме тех, которые требуют изменения их содержания и структуры. Если кто-то до вас нас начал операцию, наложившую полную блокировку или предупреждающую блокировку от записи, то вам придется подождать, пока этот пользователь закончит, прежде чем вы сможете выполнять операцию мультиввода.

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

Когда вы нажмете клавишу {F2} или выберете услугу DO-IT! (выполнить) из меню для того, чтобы вставить записи из entry в целевые таблицы, указанные в таблице соответствия, Paradox автоматически наложит предохраняющую блокировку от записи на все целевые таблицы. Если кто-то до вас нас начал операцию, наложившую полную блокировку или блокировку от записи на таблицу, то вам придется подождать, пока этот пользователь закончит, прежде чем вы сможете завершить операцию мультиввода. В таких случаях вы можете использовать услугу KeepEntry из меню DataEntry для сохранения таблицы entry без вставки ее в целевые таблицы.

На вашу способность вводить данные в таблицы, созданные другими пользователями, могут быть наложены ограничения. Уровень доступа, назначенный вам владельцем таблицы, определяет ваши полномочия по ее изменению. Существует два типа ограничений, которые накладываются на ввод данных: табличные права и полевые права. Ограничения на ввод данных, согласно различным типам табличных прав, могут быть следующие:

  • ReadOnly (только читать): вы не можете вводить данные в таблицу.
  • Update (заменять): вы можете вводить новые записи только в неключевые поля существующих записей.
  • Entry (ввод), InsDel (вставка/удаление), All (все): вы можете вводить новые записи в таблицу.

Владелец таблицы может также ограничить доступ к конкретным полям таблицы. Существуют следующие уровни полевых прав:

  • None (нет), ReadOnly (только читать): вы не можете вводить значения в поле.
  • All (все): вы можете вводить значения в поле.

RESTRUCTURE (ИЗМЕНЕНИЕ СТРУКТУРЫ)


По мере изучения системы Paradox ваши способы обработки информации могут также изменяться. Например, вам может понадобиться увеличить ширину поля Position (позиция) в таблице employee (слу- жащий) с 15 до 20 символов или, если вы открыли новые отделения, добавить в таблицу новое поле Location (размещение).

Для того, чтобы изменить структуру таблицы, всегда можно воспользоваться услугой Modify/Restructure. Как объяснялось в главе 2, эта услуга применяется также, чтобы восстановить свободное пространство на диске после удаления записей. После того, как вы выберете эту услугу и введете имя таблицы, на экране появится временная таблица с именем struct, содержащая определения полей.

Изменение структуры таблицы производится путем редактирования информации в таблице struct. Таблица struct редактируется как обычная таблица. Вы можете:

  • добавлять новые поля;
  • удалять существующие поля;
  • переименовывать поля;
  • изменять порядок расположения полей;
  • изменять типы полей и длину;
  • изменять назначения ключевых полей.

В отличие от некоторых других систем управления базами данных, в системе Paradox нет сложностей для изменения структуры таблиц. Процесс так же прост, как редактирование таблицы. При изменении структуры Paradox защищает информацию от потерь. Если существует вероятность потери информации, система сообщит, что может быть потеряно, и даст возможность отказаться от данного изменения структуры таблицы. Кроме того, если существуют временные таблицы с именами problems или keyviol, Paradox попросит подтвердить, что все нормально, прежде чем начать изменение структуры таблицы. Если вы хотите сохранить информацию хотя бы в одной из этих таблиц, вы должны переименовать их до того, как продолжить.

После того, как внесены все изменения в структуру таблицы, нажмите {F2} (выполнить). Если изменения могут привести к потере информации, Paradox попросит подтвердить эти изменения до того, как он начнет изменять таблицу.

Добавление полей


Чтобы вставить новое поле в таблицу, установите курсор на одно поле ниже предполагаемого места вставки нового поля. Нажмите {Ins}, и над курсором появится пустая строка. Определите имя и тип нового поля.

Чтобы добавить новое поле в конец таблицы, установите курсор на последнее поле структуры и нажмите клавишу {Стрелка вниз}. В таблице появится пустая строка.

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

Вы можете перенести часть или всю структуру другой таблицы в создаваемую, нажав {F10} (меню) и выбрав услугу Borrow (перенес- ти). Для получения более подробной информации смотрите главу 6.

Удаление полей


Чтобы удалить поле из таблицы, установите курсор в поле и нажмите клавишу {Del}. Запись в поле исчезнет.

Поскольку информация в удаленном поле будет потеряна, Paradox попросит вас подтвердить удаление поля до того, как информация действительно будет удалена. Для получения более подробной информации смотрите раздел "Подтверждение изменений" в этой главе.

Переименование полей


Чтобы переименовать поле в таблице, отредактируйте его прямо в таблице. До тех пор пока вы не удалите поле явным образом с помощью клавиши {Del}, Paradox считает, что вы просто изменяете имя поля, сохраняя информацию, которую оно содержит.

Изменение взаимного расположения полей


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

При наборе имени поля убедитесь, что имя в новой позиции в точности совпадает со старым. В противном случае Paradox будет считать, что вы хотите удалить старое поле и создать новое (Paradox попросит подтвердить удаление). Убедитесь также, что все ключевые поля располагаются в начале таблицы.

Изменение типа поля


Вы можете изменить тип поля, просто редактируя описание типа поля. Если некоторые изменения могут вызвать потерю информации, Paradox попросит подтвердить тип изменения до начала выполнения операции.

            Уменьшение длины алфавитно-цифрового поля
            -----------------------------------------

Вы можете свободно изменять длину алфавитно-цифрового поля. Однако при уменьшении его длины может произойти потеря данных.

Следовательно, если вы уменьшаете длину поля типа А, Paradox спросит, что делать со значениями, которые не уместятся в новое поле. Вы можете обрезать эти значения или поместить их во временную таблицу problems. Для получения более подробной информации смотрите раздел "Подтверждение изменений" в этой главе.

            Преобразование в алфавитно-цифровое поле
            ----------------------------------------

Поскольку алфавитно-цифровое поле (поле типа A) может содержать буквы, цифры и специальные символы, поле любого типа можно свободно преобразовать в алфавитно-цифровое. Однако при этом некоторые данные могут быть потеряны, если они не умещаются в размеры поля.

Поэтому при преобразовании поля любого типа в поле типа А Paradox спросит, что делать со значениями, которые не умещаются в новое поле. Вы можете обрезать эти значения или поместить их во временную таблицу problems. Для получения более подробной информации смотрите раздел "Подтверждение изменений" в этой главе.

                 Преобразование в числовое поле
                 ------------------------------

Вы можете легко преобразовывать один из типов числовых полей (N, $ или S) в другой. Однако при преобразовании в тип S может произойти потеря данных, если число не умещается в формат нового поля. Поэтому, если вы преобразуете числовые данные в данные типа S, Paradox спросит, что делать со значениями, которые не умещаются в поле типа S. Вы можете или обрезать эти значения, или поместить во временную таблицу problems. Для получения более подробной информации смотрите раздел "Подтверждение изменений" в этой главе.

Добавим, что алфавитно-цифровое поле также можно преобразовать в числовое. Любая запись, которая содержит не числовое значение, будет автоматически помещена во временную таблицу problems. Записи в таблице problems можно отредактировать и поместить в требуемую таблицу или сохранить их, переименовав таблицу problems.

Преобразования поля типа дата в числовое поле приведет к тому, что все записи будут помещены в таблицу problems.

                 Преобразование в поле типа дата
                 -------------------------------

Алфавитно-цифровое поле можно преобразовать в поле типа дата. Любая запись, которая содержит значение, не являющееся датой, будет помещена во временную таблицу problems. Записи в этой таблице можно отредактировать или переименовать ее.

Преобразование числового поля в поле типа дата приведет к тому, что все записи будут помещены в таблицу problems.

Ключевые поля


Вы можете сделать из ключевых полей неключевые и наоборот. Единственное ограничение состоит в том, что все ключевые поля должны располагаться в начале таблицы друг за другом (см. раздел "Ключевые поля" в главе 6).

Поэтому, чтобы сделать из неключевого поля ключевое, переставьте его в начало таблицы и добавьте звездочку (*) после типа поля.

И наоборот, чтобы сделать из ключевого поля неключевое, передвиньте его из области ключевых полей в область неключевых полей и удалите звездочку.

Если в каких-либо записях совпадают значения новых ключевых полей, они будут помещены во временную таблицу keyviol.

Подтверждение изменений в случаях возможной потери информации


В случае, если изменения в структуре таблицы могут привести к потере информации, Paradox попросит подтвердить эти изменения. Существуют два вида изменений, которые могут привести к потере информации:

  • удаление поля;
  • преобразование поля к более короткому:
    • при уменьшении длины алфавитно цифрового (A) поля,
    • преобразование поля к типу А или S (короткое целое), когда некоторые значения не вмещаются в новый формат поля.

Когда вы нажмете {F2} или выберете услугу DO-IT! (выполнить) из меню Restructure, Paradox попросит подтвердить любые изменения такого типа.

                          Удаление поля
                          -------------

Если вы удаляете поле из таблицы, в нижней части экрана появится мигающее сообщение: Please confirm deletion of field (Пожа- луйста, подтвердите удаление поля). Меню подтверждения содержит две услуги:

  • Delete (удалить): удалить поле, включая все данные в нем.
  • Oops! (отказаться): отказаться от удаления поля и вернуться в таблицу struct.

ЗАМЕЧАНИЕ: Вы не получите предупреждения об удалении поля, если вы просто изменили его местоположение в структуре таблицы.

           Преобразование поля к более короткому типу
           ------------------------------------------

Если вы укорачиваете поле типа А (алфавитно-цифровое) или преобразуете поле другого типа в поле типа А или S, результирующее поле может оказаться слишком коротким, чтобы содержать все данные. В этом случае в нижней части экрана появится мигающее сообщение: Possible data loss for field (Возможная потеря информации в поле). На экране появится меню, которое содержит три услуги:

  • Trimming (обрезать): разрешить уменьшение длины поля и обрезать существующие данные так, чтобы они умещались в новом поле. Те части значений, которые не умещаются в поле новой длины, будут потеряны.
  • No-Trimming (не обрезать): разрешить уменьшение длины поля. Те записи, значения которых не умещаются в поле новой длины, будут перенесены в таблицу problems.
  • Oops! (отказаться): отказаться от изменения типа поля и вернуться в таблицу struct.

Если вы выбрали услугу No-Trimming (не обрезать) и хотите сохранить записи, которые не умещаются в поле новой длины, необходимо:

  • отредактировать записи в таблице problems, а затем с помощью услуги Tools/More/Add добавить к таблице, структуру которой вы изменили, или
  • переименовать таблицу problems, превратив ее тем самым из временной в постоянную.

Если вы выбрали услугу Oops! (отказаться), можно вернуться назад и увеличить длину поля в таблице struct.

Влияние изменения структуры таблицы на другие объекты


Изменение структуры таблицы может привести к изменениям объектов в ее семействе. Paradox автоматически изменяет формы, отчеты, индексы, установки параметров и файлы проверки правильности.

  • При удалении поля или изменении типа поля любым способом, это поле будет удалено из всех форм, отчетов, индексов, установок и файлов проверки правильности. Вычисляемые и суммарные поля, в которых участвует удаляемое поле, также будут удалены.
  • При удалении всех полей на странице формы, эта страница будет удалена из формы. При удалении всех полей в форме, сама форма будет удалена.
  • Если вы установили дополнительные пароли для таблицы, те права на доступ к таблице, которые вы изменили, будут потеряны.
  • Если вы изменяете ключевую таблицу на неключевую, любые установленные вами вторичные индексы не будут больше поддерживаться (см. главу 12 о поддержке вторичных индексов).

При изменении структуры объектов семейства таблицы, на экран будут выданы соответствующие сообщения.

Меню Restructure


Чтобы войти в меню Restructure в процессе изменения структуры таблицы, нажмите клавишу {F10} (меню). Меню Restructure содержит следующие услуги:

  • Borrow (перенести): перенести структуру из другой таблицы (подробнее см. в главе 6).
  • Help (помощь): получить дополнительную информацию об изменении структуры таблицы.
  • DO-IT! (выполнить): завершить изменения структуры и вернуться в главное рабочее поле (при возможной потере информации Paradox попросит вас подтвердить изменения структуры).
  • Cancel (прервать): прервать процесс изменения структуры и вернуться в главное рабочее поле.

Изменение структуры в сети


При выборе услуги Modify/Restructure в сети, Paradox автоматически накладывает полную блокировку на таблицу и ее семейство. Это означает, что все остальные пользователи не будут иметь доступ к этой таблице и ее семейству для выполнения любых операций на все время изменения структуры. Если кто-то до вас нас начал операцию, использующую таблицу или любой член ее семейства, вам придется подождать, пока этот пользователь закончит.

ПРОВЕРКИ ПРАВИЛЬНОСТИ


Когда вы вводите, редактируете или совместно редактируете значения в таблицах, Paradox автоматически проверяет, чтобы значения соответствовали выбранному типу поля. Например, нельзя вводить буквы в числовые поля или даты, которые не существуют.

Услуга ValCheck (проверка правильности) в меню Edit и Data- Entry позволяет вам устанавливать, очищать и сохранять требования и значения, используемые по умолчанию, для данных, вводимых в поле. Она также позволяет сверять значения со значениями в другой таблице и заполнять поле значениями из поля другой таблицы.

Например, используя проверку на правильность, вы можете указать, чтобы значения в определенном поле заполнили стандартный формат. Если вы уже описали ваши требования, система Paradox применит их к вводимым или измененным значениям в поле. Она поможет даже помочь вам автоматическим заполнением полей значениями. Проверки правильности для таблицы автоматически сохраняются. Вы можете изменить их или уничтожить в любое время, когда пожелаете. Проверки правильности, когда вы заканчиваете сеанс редактирования, сохраняются в файле с расширением .VAL, входящим в семейство таблицы.

Перед выбором услуги ValCheck убедитесь, что курсор находится в том образе, для которого вы хотите установить требования. При выборе ValCheck вы увидите меню из двух пунктов:

  • Define (определить): установить для поля требования или значения, используемые по умолчанию.
  • Clear (очистить): удалить требования или значения, используемые по умолчанию, для одного или всех полей.

Define (определить)


Услуга Define позволяет вам установить требования и значения, используемые по умолчанию, для полей в текущем образе. Текущие требования при нажатии {F2} (выполнить) для окончания сеанса редактирования будут автоматически сохранены.

При выборе Define Paradox попросит вас указать с помощью клавиш {<--} и {-->} на поле, для которого вы хотите установить требования.

Переместитесь с помощью указанных клавиш на требуемое поле и нажмите {Enter}. Вы увидите меню видов проверок правильности, которые вы можете установить. Оно содержит шесть пунктов:

  • LowValue (нижнее значение): установить минимальное значение для выбранного поля.
  • HighValue (верхнее значение): установить максимальное значение для выбранного поля.
  • Default (по умолчанию): установить стандарные значения, которые Paradox будет вставлять, если вы оставите поле пустым.
  • TableLookup (сверочная таблица): затребовать в поле значения, которые уже существуют в другой таблице и автоматически заполнить значениями из полей одной таблицы поля другой.
  • Picture (шаблон): затребовать, чтобы значения в поле имели определенный формат шаблона.
  • Required (требуется): затребовать значения в поле для каждой новой записи в таблице.

Вы можете комбинировать любые из этих опций для одной таблицы или поля.

                   LowValue (нижнее значение)
                   --------------------------

LowValue устанавливает минимально возможное значение для таблицы. Например, вы можете затребовать, чтобы число каких-либо заказанных предметов в таблице orders (заказы) было не меньше 10.

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

Хотя LowValue наиболее часто используется для числовых полей и полей даты, вы можете также использовать эту услугу для установления нижнего значения в алфавитно-цифровых полях. В этом случае Paradox использует текущую установку порядка сортировки для определения диапазона допустимых значений, которые вы можете ввести в поле.

Когда вы выберете LowValue, Paradox выдаст приглашение ввести минимальное значение:


Value:
Enter the lowest acceptible value for this field. (Введите минимально допустимое значение для данного поля.)

Введите значение и нажмите {Enter}. Paradox будет сверять значения с указанным вами минимумом.

                  HighValue (верхнее значение)
                  ----------------------------

HighValue устанавливает максимально допустимое значение для поля. Например, вы можете затребовать, чтобы предел кредита был $10,000.

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

Хотя LowValue наиболее часто используется для числовых полей и полей даты, вы можете также использовать эту услугу для установки верхнего значения в алфавитно-цифровых полях. В этом случае Paradox использует текущую установку порядка сортировки для определения диапазона допустимых значений, которые вы можете ввести в поле.

Когда вы выберете HighValue, Paradox выдаст приглашение ввести максимальное значение:


Value:
Enter the highest acceptible value for this field. (Введите максимально допустимое значение для данного поля.)

Введите значение и нажмите {Enter}. Paradox будет сверять значения с указанным вами максимумом.

                     Default (по умолчанию)
                     ----------------------

Default устанавливает стандартное значение для поля. Если вы поместите курсор в поле, но ничего не введете, Paradox введет значение, установленное по умолчанию, когда курсор покинет поле.

Для поля даты вы можете установить по умолчанию значение today. Paradox введет сегодняшнюю дату, если вы не укажете никакого значения. Конечно, часы на вашем компьютере должны быть правильно установлены, чтобы это правило работало.

Когда вы выберете Default, Paradox выдаст приглашение ввести значение:


Value:
Enter the value to insert if the field is left blank. (Введите значение, которое будет вставляться, если поле останется незаполненным.)

Введите значение и нажмите {Enter}. Paradox будет вставлять указанное значение каждый раз, когда вы будете оставлять поле незаполненным.

                 TableLookup (сверочная таблица)
                 -------------------------------

TableLookup является мощным средством, которое вам позволяет:

  • потребовать, чтобы значения, которые вы вводите в поле, существовали в первом поле другой таблицы;
  • обратиться к другой таблице, чтобы найти допустимые значения для поля;
  • автоматически копировать значения из просматриваемой таблицы в таблицу, которую вы редактируете (автоматическое заполнение).

Эти возможности доступны вам во время сеансов редактирования, совместного редактирования и ввода данных.

Когда вы выбираете TableLookup, вводимые вами в текущее поле редактируемой таблицы данные должны существовать в первом поле сверочной таблицы. Например, при вводе заказов вы можете захотеть убедиться, что вы имеете информацию в файле о всех заказчиках, которым принадлежат эти заказы. Для этого можно использовать TableLookup, чтобы задать условие, что любой идентификационный номер заказчика (Cust ID), вводимый в таблицу orders (ордера), должен присутствовать в поле Cust ID таблицы customer (заказчик).

Если вы не уверены в каком-то отдельном номере заказчика, в TableLookup существуют опции, позволяющие обратиться к сверочной таблице. Когда вы используете автоматическое заполнение, при нахождении искомого номера заказчика Paradox автоматически копирует значение из сверочной таблицы.

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

Помните три вещи, когда назначаете сверочную таблицу:

  • Поле, в котором находятся сверочные значения, должно быть первым полем сверочной таблицы.
  • Сверочное поля в сверочной таблице должно иметь тот же тип, что и текущее поле в редактируемой таблице (имена полей могут быть разными).
  • Для лучшей производительности, если сверочная таблица является очень большой, ее первое поле должно быть упорядочено по ключу. Для получения более подробной информации о ключевых полях смотрите раздел "Ключевые поля" в главе 6.

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

При выборе услуги TableLookup Paradox попросит вас ввести имя таблицы, используемой в качестве сверочной:


Table:
Enter name of table to check values against, or press {Enter} for a list of tables.
(Введите имя сверочной таблицы или нажмите {Enter}, чтобы получить список таблиц.)

После указания имени таблицы вы увидите подменю, содержащее два пункта:

  • JustCurrentField (только текущее поле). Сверять вводимые в текущее поле данные со сверочной таблицей или копировать значение из первого поля сверочной таблицы в текущее.
  • AllCorrespondingFields (все соответствующие поля). Сверять вводимые в текущее поле данные со сверочной таблицей и копировать значения из сверочной таблицы во все поля с такими же именами редактируемой таблицы.

Обе услуги позволяют предотвратить прямой доступ к сверочным таблицам во время сеансов редактирования и ввода данных. Однако вы можете указать, что вы хотите иметь возможность при нажатии клавиши {F1} (помощь) перемещаться по сверочной таблице и выбирать из записей поля, которые будут автоматически копироваться в редактируемую вами таблицу.

  • JustCurrentField (только текущее поле)

Услуга JustCurrentField сообщает системе Paradox, что вы хотите сверять вводимые вами в текущее поле значения со значениями в первом поле сверочной таблицы и, необязательно, копировать значения из сверочной таблицы в текущее поле. При выборе JustCur- rentField вы увидите еще одно подменю из двух пунктов:

  • PrivateLookup (невидимая сверка): для предотвращения доступа к сверочной таблице во время редактирования и ввода данных.
  • HelpAndFill (помощь и заполнение): для получения возможности перемещаться по сверочной таблице и автоматического копирования значений.

# PrivateLookup (невидимая сверка).

Когда вы выбираете эту услугу, Paradox будет сверять каждое вводимое вами значение со значением первого поля сверочной таблицы. Если введенное значение не совпадает ни с одним из сверочных значений, то когда вы попытаетесь переместить курсор из текущего поля, увидите сообщение "Not one of the possible values for this field" (Значение не является одним из допустимых для данного поля). В этом случае вы имеете два способа решения:

  • исправить значение поля на допустимое или
  • оставить поле пустым (если только вы не установили для данного поля вид проверки правильности Required (требуется)).

Услуга JustCurrentField/PrivateLookup наиболее полезна для приложений, в которых вы хотите защитить информацию в сверочной таблице, потому что она обеспечивает сверку на правильность вводимых данных, но не позволяет пользователю просматривать в сеансах редактирования, совместного редактирования и ввода данных.

Для полной защиты содержимого сверочной таблицы ее можно защитить паролем при помощи услуги Tools/More/Protect/Passward (бо- лее подробно см. главу 10).

# HelpAndFill (помощь и заполнение).

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

Каждый раз, когда вы помещаете курсор в поле, для которого вы задали проверку HelpAndFill, Paradox сообщит вам, что вам разрешена помощь, путем отображения приглашения на второй строке экрана.

Вы можете либо ввести значение в текущее поле, либо, если вы не знаете или не помните допустимые для данного поля значения, нажать {F1} (помощь). Paradox поместит сверочную таблицу в рабочее поле. В этом случае вы можете:

  • Использовать клавиши управления курсором для перемещения по сверочной таблице с целью нахождения записи с искомым значением. Помните при этом, что сверочные значения расположены в первом поле.
  • Использовать {Ctrl}{Z} (найти) и {Alt}{Z} (найти следующее) для нахождения требуемого значения. (Указанные команды рассматриваются в разделе, посвященном Image/Zoom/ Value, в главе 8.)
  • Нажать клавишу {Esc} для возврата в редактируемую таблицу без копирования значения из сверочной таблицы.
  • Нажать клавишу {F2} (выполнить), когда вы нашли запись с требуемым значением. Значение первого поля сверочной таблицы скопируется в текущее поле редактируемой таблицы.
    • AllCorrespondingFields (все соответствующие поля)

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

При выборе услуги AllCorrespondingFields вы увидите подменю, содержащее два пункта:

  • FillNoHelp (копировать, но не помогать). Предотвратить просмотр сверочной таблицы.
  • HelpAndFill (помогать и копировать). Позволить просматривать сверочную таблицу для нахождения записи с целбю ее копирования.

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

# FillNoHelp (копировать, но не помогать).

Как и другие опции услуги TableLookup, AllCorresponding- Fields/FillNoHelp обеспечивает, чтобы вводимые вами в редактируемую таблицу значения совпадали со значениями в первом поле сверочной таблицы.

Если редактируемая и сверочная таблицы имеют соответствующие поля (поля с одинаковыми именами), Paradox в этом случае идет дальше. Когда вы вводите правильное значение в текущее поле, он автоматически копирует значения из сверочной таблицы в соответствующие поля редактируемой. Копирование происходит, когда вы перемещаете курсор из текущего поля.

Вы можете использовать услугу FillNoHelp для автоматической замены одного значения на другое. Для этого имя текущего поля в редактируемой таблице должно совпадать с именем поля в сверочной таблице, содержащей требуемое значение.

Поскольку услуга FillNoHelp предотвращает прямой доступ к самой сверочной таблице, она бывает полезна в приложениях, для которых вы не хотите, чтобы другие имели доступ к хранимой информации. Когда вы применяете эту опцию, Paradox использует сверочную таблицу для проверки значений, вводимых в текущее поле редактируемой таблицы, и для копирования значений из соответствующих полей, но не позволяет пользователю просматривать сверочную таблицу во время сеансов редактирования, совместного редактирования и ввода данных.

Для полной защиты содержимого сверочной таблицы ее можно защитить паролем при помощи услуги Tools/More/Protect/Passward (бо- лее подробно см. главу 10).

# HelpAndFill (помогать и копировать).

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

Вы можете либо ввести значение в текущее поле, либо, если вы не знаете или не помните допустимые для данного поля значения, нажать {F1} (помощь). Paradox поместит сверочную таблицу в рабочее поле. В этом случае вы можете:

  • Использовать клавиши управления курсором для перемещения по сверочной таблице с целью нахождения записи с искомым значением. Помните при этом, что сверочные значения расположены в первом поле.
  • Использовать {Ctrl}{Z} (найти) и {Alt}{Z} (найти следующее) для нахождения требуемого значения. (Указанные команды рассматриваются в разделе, посвященном Image/Zoom/ Value, в главе 8.)
  • Нажать клавишу {Esc} для возврата в редактируемую таблицу без копирования значения из сверочной таблицы.
  • Нажать клавишу {F2} (выполнить), когда вы нашли запись с требуемыми значениями. Paradox скопирует значения из полей в текущей записи сверочной таблицы в соответствующие поля (по- ля с теми же именами) редактируемой таблицы.
    • Дополнительные соглашения о сверке таблиц (TableLookup)

Когда вы устанавливаете сверку таблиц, то должны всегда помнить следующее:

  • Вы должны иметь достаточные права доступа к сверочной и редактируемой таблицам, чтобы использовать сверку таблиц. Владелец таблиц может ограничить ваши права по их просмотру и изменению, и тогда вы не сможете использовать сверку таблиц. В этом случае вы увидите на экране соответствующее сообщение.
  • Если вы определили вид проверки правильности для редактируемой таблицы иной, чем сверочная таблица, то проверка будет работать только для поля, для которого фактически определена сверка (даже если используется автоматическое заполнение для замены значений в сверяемом поле). Любые проверки правильности, определенные для других соответствующих полей редактируемой таблицы, не будут применяться при копировании значений из сверочной таблицы.
  • Одна сверка или заполнение не могут автоматически запускать другую. Предположим, вы определили в качестве сверочной для таблицы orders (заказы) таблицу customer (заказчик), чтобы проверять правильность поля номера покупателя. Кроме того, согласно установке, customer автоматически заполняет соответствующее поле для имени города (City). Вы не можете использовать значение, которое Paradox помещает в поле City, для запуска последующей проверки правильности данных в поле City или значений, копируемых в другие соответствующие поля orders. Отметим, однако, что в случае использования связанных многотабличных форм автоматическое заполнение, применяемое к ключу связи главной таблицы, повлечет автоматическое заполнение соответствующих ключевых полей дополняющих таблиц.
                        Picture (шаблон)
                        ----------------

Услуга Picture устанавливает требования, согласно которым значения в поле должны подходить под формат шаблона. Например, вы вы можете потребовать, чтобы все значения в поле телефонных номеров имели стандартный для США вид телефонного номера: ###-####. Ниже приведены некоторые другие виды форматов.

Формат Требуемое значение


[(###)]###-#### Телефонный номер с необязательным кодом
                       области
&*?                    Буквенная строка любой длины с первой заглавной буквой
#####[-####]           Пяти- или девятизначный код
Yes, No                Значение может быть либо "да"(yes), либо
                       "нет" (no)

В таблице 7-2 приведены допустимые элементы шаблона. Кроме них в шаблон можно вставлять константы (типа дефиса в примерах выше). Если вы при вводе данных дойдете до константы, то Paradox вставит ее автоматически. Эти же элементы шаблонов используются в языке PAL. Для получения более подробной информации о том, как использовать элементы шаблонов, обратитесь к главе 5 "Руководства пользователя по языку PAL."

Таблица 7-2. Элементы шаблона.


   #          Цифра
   ?          Буква (A-Z или a-z)
   &          Буква (преобразуется к заглавной)
   @          Любой символ
   !          Любой символ (преобразуется к верхнему регистру)
   ;
   *          Число повторов

[] Необязательные элементы
{} Оператор группировки
, Альтернативные значения


При выборе услуги Picture Paradox просит ввести шаблон:


Picture:
Enter a PAL picture format (e.g. #####-####). (Введите формат шаблона языка PAL (например, #####-####).)

Введите формат шаблона и нажмите {Enter}. Paradox до конца сеанса редактирования будет сверять вводимые значения с форматом шаблона.

                      Required (требуется)
                      --------------------

Услуга Required (требуется) указывает, должно ли поле обязательно иметь значение или нет (то есть может быть пустым). Например, вы можете указать, что к таблице customer (заказчик) нельзя добавлять записи без номера заказчика.

При выборе услуги Required вы увидите меню, спрашивающее вас, требуется ли значение в поле или нет.

Выберите Yes (да), если значение требуется, и No (нет), если оно не обязательно. Если вы выберете первое, то Paradox не позволит вам покинуть поле, пока вы не введете значение.

Clear (очистить)


Услуга Clear (очистить) меню ValCheck позволяет вам отменить установленные ранее проверки правильности. При выборе Clear вы увидите меню, запрашивающее, хотите ли вы отменить проверки, относящиеся к одному полю или всей таблице:

  • Field (поле): отменить проверки одного поля текущей таблицы.
  • All (все): отменить проверки правильности, установленные для всех полей таблицы.
                          Field (поле)
                          ------------

Услуга Field позволяет вам отменить все проверки правильности, установленные для одного поля текущей таблицы. Когда вы выберете Field, Paradox попросит вас с помощью стрелок управления курсором указать то поле, проверки которого вы хотите отменить.

Переместите курсор к требуемому полю и нажмите {Enter}. Pa- radox удалит все проверки правильности, установленные для этого поля. (Если вы их сохранили, то они будут восстановлены в следующий раз при редактировании таблицы.)

                            All (все)
                            ---------

При выборе All из меню ValCheck/Clear система Paradox удалит все проверки правильности всех полей текущей таблицы.

Редактирование с использованием проверок правильности


Если вы вводите значение, которое не удовлетворяет требованиям проверки правильности, вы увидите сообщение, указывающее на возникшую ситуацию. Напрмер, если вы введете количество заказов, равное нулю, при LowValue (нижнем значении) 1, Paradox выдаст сообщение: "Value no less then 1 is expected" (Требуется значение, не меньшее 1).

Поскольку Paradox не позволит вам покинуть поле, оставив неправильное значение, у вас есть четыре выхода:

  • изменить значение на правильное;
  • используя клавиши {Backspace} или {Ctrl}{Backspace}, очистить поле;
  • нажать клавиши {Ctrl}{U} (отменить) для уничтожения неправильного значения и выхода из поля;
  • если была установлена опция TableLookup/HelpAndFill, нажать клавишу {F1} (помощь) для получения помощи в определении правильного значения для данного поля.

Проверки правильности в сети


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




  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте