Добавление записей в таблицу

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

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

Рассмотрим этот метод.

Добавим в нашу форму еще одну командную кнопку, при нажатии которой в таблицу будет добавляться запись. Установим свойство caption равным новая запись, а в обработку события click пропишем команду BROWSE.

Запустив форму и щелкнув на нашей новой кнопке, мы увидим результат работы команды BROWSE.

Так как мы используем команду BROWSE без ключевых слов, “в чистом виде” — открываются все поля таблицы. Это уже нехорошо, потому что пользователю совершенно незачем вводить значения в поля x1, x2, d и Result, т. к. эти поля являются вычисляемыми и значения в них заносятся программно. Пользователю даже знать о них не нужно!

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

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

Поэтому мы добавим в BROWSE список полей, к которым пользователь может быть “допущен”:

1
BROWSE FIELDS first_a :h= "Первая переменная a", second_b :h= "Вторая переменная b,third_c :h= "Третья переменная с"

После ключевого слова FIELDS (Поля) мы через запятую перечисляем те поля, которые будут отображаться при просмотре таблицы. Также мы используем ключ :н для создания заголовка поля (рис. 9.3). Дело в том, что при работе команды BROWSE заголовки полей совпадают с их именами, что не очень удобно для пользователя — это мы знаем, что такое second_b, а как об этом догадаться постороннему человеку?

Теперь пользователь может добавлять новые записи, используя комбинацию клавиш <Ctrl>+<Y>. Согласись, не очень-то удобно для каждой новой записи постоянно использовать комбинацию клавиш, особенно если приходится вводить много записей. Опять же необходимо предусмотреть про верку первого поля на ноль:

1
BROW FIELDS first_a :Ь="Первый компонент A", second_b :гл.="Второй компонент В", third_c :п="Третий компонент С" VALID first_a<>0

VALID — это и есть проверка. Режим просмотра не будет закрыт, пока пользователь не введет корректное значение для поля.

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

Альтернативой может стать замена BROWSE на команду APPEND. Посмотрим, что получится, если мы вставим данную команду в процедуру обработки события click для кнопки Новая запись:

1
Append Fields first_a, second_b, third_c

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

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

Заменим команду в событии click на следующее выражение:

1
2
APPEND BLANK
THISFORM.REFRESH ()

Команда REFRESH обновляет информацию в форме, заново ее “перерисовывая” с учетом новых данных.

Казалось бы — вот оно, идеальное решение! Однако и здесь есть свои “подводные камни”. Представь такую ситуацию: пользователь нажал кнопку Новая запись, а затем передумал вводить значения и закрыл форму. Но запись-то добавилась!

Хорошо, что современные винчестеры позволяют хранить огромное количество информации, а вот лет 15 назад руководитель проекта просто застрелил бы программиста, допустившего такое “использование” дискового простран- ства. Да дело, собственно, и не в этом. Как ты думаешь, пользователь будет нервничать, увидев пятьсот пустых строк? То-то и оно…

Выход из этой ситуации есть — можно использовать переменные памяти Для их создания применяется следующая команда:

1
SCATTER MEMVAR BLANK MEMO

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

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

Разместим в форме две командные кнопки: Сохранить и Отмена, введем следующие команды обработки события Click:

– для кнопки Сохранить:

1
2
3
4
5
6
SELECT mytab
APPEND BLANK
GATHER MEMVAR
WAIT WINDOW
"Запись добавлена"
THISFORM.RELEASE

– для кнопки Отмена введем одну команду:

1
THISFORM.RELEASE

Теперь откроем в Конструкторе отчетов форму Formi и для кнопки Новая запись определим новый код в событии click:

1
2
SCATTER MEMVAR BLANK
DO form c:\examples\addrec

Вся эта конструкция работает следующим образом.

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

2. Затем запускается форма ADDREC. Запуск происходит по команде:

1
DO FORM (<путь>) <имя формы>

3. Используя поля ввода формы ADDREC, присваиваем значения связанным с ними переменным.

4. При нажатии кнопки Сохранить происходят следующие процессы:

• т. к. в среде окружения данной формы таблицы не используются, необходимо указать нужную таблицу; это делается командой SELECT <имя_таблиць!>\
• выбрав таблицу, добавляем в нее пустую запись — APPEND BLANK;
• затем команда GATTER MEMVAR заполняет поля соответствующими значениями, после чего выдается сообщение командой WAIT WINDOW “Текст сообщения”;
• последняя команда (Thisfom.Release) закрывает форму. Замечание

Форма ADDREC выполняется внутри формы верхнего уровня FORMI (свойство, ShowWindow=l).

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

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

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

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

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

 
Rambler's Top100