Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв БД 2013-03-15.doc
Скачиваний:
0
Добавлен:
10.01.2020
Размер:
12.65 Mб
Скачать

2.4.18. Обмен данными между массивами и таблицами

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

Scatter [Fields <поля>] [Memo] То <массив> / [Memvar]

Если массив ранее не был описан или его длина недостаточна, то он будет создан командой. Если переменные ранее не существовали, то они будут созданы с теми же именами, что и соответствующие поля. Для того чтобы СУБД могла отличить одинаковые имена полей и переменных, к последним нужно обращаться с префиксом “М“ (М.Х).

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

Действие команды Gather обратно действию команды Scatter:

Gather From <массив> /Меmvar [Fields <список полей>] [Memo]

Команда переписывает в <поля> текущей записи активного файла таблицы элементы <массива> или одноименные переменные (опция Memvar), созданные ранее командой Scatter, включая и мемо-поля (если указана опция Memo). Если отсутствует слово Fields, то элементы переносятся в последовательные поля, начиная с первого. Если число элементов массива и полей не совпадает, то лишние игнорируются. Рассмотренная пара команд очень удобна, если предстоит сложная обработка полей записи таблицы. В этом случае лучше перенести их в переменные или в массив, а затем, после обработки, вернуть в таблицу.

2.4.19. Ввод‑вывод данных сообщений

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

2.4.19.1. Вывод данных на экран (?, ??, ???)

Команды ? | ?? | ??? [<Выр>] выводят значение <Выр>.

? - вывод результата выражения с новой строки.

?? - выводит результат в текущей строке на текущей позиции.

??? <ВырC> - направляет содержание <вырC> непосредственно на принтер. Эта команда позволяет использовать управляющие коды принтера для его управления. Последовательность кодов (n) задается строкой <вырС> обычно в виде сцепленных функций Chr(n).

2.4.19.2. Вывод сообщения (Wait)

Wait [<ВырC>] [To <переменная>]

[Window] [Nowait] [Clear] [Timeout <ВырN>]

<ВырC> - сообщение, выводимое на экране.

<переменная> - имя переменной, куда помещается ответ с клавиатуры.

Window - вывод сообщения в системное окно выдачи сообщений.

Nowait - продолжение работы программы без приостановки программы.

Clear- удаление системного окна или удаление с экрана сообщения, выданного командой Wait Nowait.

<ВырN> - указывает, какое количество секунд будет выполняться команда Wait. Опция Timeout должна быть последней фразой в команде.

2.4.19.3. Вывод сообщения и кнопок (MessageBox)

Messagebox (ВырС1 [,ВырN [,ВырC2]]) - номер нажатой кнопки. ВырС1 и ВырС2 задают тексты сооб­ще­ния и заголовка диалогового окна. Если в со­об­­­ще­ние до­бавить сим­вол с кодом 13, то произойдет переход на сле­ду­ющую строку;

ВырN - сумма констант (режимов ра­бо­ты):

вывод кнопок: OK (0), OK+Cancel (1), Abort+Retry+Ig­nore (2), Yes+No+Can­cel (3), Yes+No (4), Retry+Cancel (5);

вывод пиктограммы с одним из символов: X (16), ? (32), ! (48), i (64);

код кнопки в окне по умолчанию: кнопка первая (0), вторая (256), третья (512).

Функция возвращает код нажатой пользователем кнопки: OK (1), Cancel (2), Abort (3), Retry (4), Ignore (5), Yes(6), No (7).

Пример

If MessageBox(“Текущее время?“, 4+32, “Время“) = 6 &&нажата кнопка Yes

MessageBox(“Текущее время?“ & Time())

endif