Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД / Uchpos / Gl_4.doc
Скачиваний:
24
Добавлен:
27.04.2015
Размер:
342.53 Кб
Скачать

Вычисления

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

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

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

Слово calc может быть записано в любом поле формы запроса. После него записывается выражение, содержащее константы, элементы-примеры, арифметические операторы +, -, *, /, скобки ( ) и значения из одной или нескольких таблиц.

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

31)

S═╦═══НомП════╦══════ИмяП══════╦════Статус════╦══════Город══════╗

║ ║√ ║√ S,calc S/10 ║ ║

ANSWER═╦══ИмяП════╦═Статус══╦══Статус / 10══╗

1 ║ База 1 ║ 40 ║ 4 ║

2 ║ База 10 ║ 15 ║ 1.5 ║

3 ║ ... ║ ║ ║

Calc может быть записано в любом поле, не обязательно в поле STATUS.

32)

P═╦══НомД══╦═════Наим════╦════Цвет═════╦══Вес════╦════Город════╗

ND ║√ ║ ║√ W ║ ║

SP════╦════НомП══╦════НомД══╦══════════════Колич══════════════╗

║√ ║ ND ║√ Q,as Кол1,calc W*Q as Кол2 ║

ANSWER═╦═════Наим══════╦══Вес══╦═НомП═╦══Кол1══╦════Кол2══════╗

1 ║ Вал ║ 12 ║ П10 ║ 56 ║ 672 ║

2 ║ Вал ║ 12 ║ П7 ║ 78 ║ 936 ║

3 ║ Верстак ║ 45 ║ П1 ║ 278 ║ 12510 ║

4 ║ ... ║ ║ ║ ║ ║

33) Использование calc с алфавитно-цифровыми значениями:

S═╦════НомП════╦════ИмяП════╦════Статус════╦══════Город══════╗

NPSS ║ ║ FF

P═╦═══НомД════╦═════Наим═════╦════Цвет═════╦══Вес════╦════Город════╗

NDNN ║ ║ ║ GG

SP════╦═══════НомП═══════════════╦═════════НомД════════════╦═Колич═╗

NP,calc SS+","+FF as Пост ║ND,calc NN+","+GG as Дет ║√ ║

ANSWER═╦══Колич══╦═══════Пост═════════╦═══════════Дет═══════════╗

1 ║ 4 ║ База 1,Москва ║ Редуктор,Москва ║

2 ║ 12 ║ База 1,Москва ║ Стол,Москва ║

3 ║ 12 ║ База 3,Киев ║ Стол,Москва ║

4 ║ ║ ... ║ ║

Операции

Все рассмотренные выше запросы просто выводят информацию на экран. Однако язык позволяет использовать операторы для выполнения других действий: insert, find, delete, changeto.

Слова insert, find, delete должны быть расположены в крайнем левом поле формы запроса, changeto - в любом поле слева. Можно использовать в одном запросе несколько операторов. В этом случае сначала выполняются все delete, затем changeto, затем insert.

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

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

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

При выполнении запроса создается временная таблица inserted, содержащая добавленные записи.

34)

SP═════╦══════НомП══════╦══════НомД══════╦══════Колич══════╗

NP ║ ║ Q,<15 ║

insert ║ NP ║ Д5 ║ 15 -Q ║

INSERT══╦═НомП═╦═НомД═╦══Колич══╗

1 ║ П1 ║ Д5 ║ 11 ║

2 ║ П1 ║ Д5 ║ 3 ║

3 ║ П2 ║ Д5 ║ 8 ║

4 ║ ... ║ ║ ║

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

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

35)

S═╦════НомП═══╦════ИмяП════╦════Статус═════╦══════Город══════╗

NP ║ База2 ║ ║ ║

SP════════╦════════НомП══════╦════════НомД══════╦══════Колич══════╗

delete ║ NP ║ ║ <30 ║

DELETED╦══НомП═╦══НомД═╦══Колич══╗

1 ║ П2 ║ Д14 ║ 23 ║

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

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

36)

SP════╦══════НомП═════╦════════НомД══════╦════════Колич════════╗

║ ║ Д2 ║ Q,changeto Q+10 ║

CHANGED╦══НомП═╦══НомД═╦══Колич══╗

1 ║ П4 ║ Д2 ║ 54 ║

37)

P╦════НомД════╦═══Наим══╦═════════Цвет═════════╦══Вес════╦══Город══╗

║ ║ ║ Красный,changeto red ║ ║ ║

CHANGED╦══НомД═╦═════Наим═════╦════Цвет═══╦══Вес══╦════Город══════╗

1 ║ Д3 ║ Редуктор ║ Красный ║ 57 ║ Москва ║

2 ║ Д9 ║ Мотор ║ Красный ║ 88 ║ Казань ║

38)

SP════╦════НомП══╦════НомД══╦══════════════Колич══════════════╗

║ ║ ║ >300,Q1,changeto(Q1-300)/2+300 ║

║ ║ ║ <20,Q2,changeto Q2*1.2 ║

CHANGED╦═НомП═╦═НомД═╦══Колич══╗

1 ║ П2 ║ Д4 ║ 378 ║

2 ║ П1 ║ Д3 ║ 4 ║

3 ║ П1 ║ Д4 ║ 12 ║

4 ║ П3 ║ Д4 ║ 12 ║

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

Checkmark и групповые операторы в find не используются.

39)

P══════╦══НомД══╦═══════Наим══════╦══Цвет════╦══Вес════╦══Город══╗

find ║ ║ Дрель ║ ║ ║ ║

P══════╦══НомД═╦════Наим════╦════Цвет═══╦══Вес══╦══════Город══════╗

1 ║ Д1 ║ Корпус ║ Серый ║ 15 ║ Калининград ║

2 ║ Д10 ║ Дрель ║ Синий ║ 6 ║ Рязань ║

3 ║ Д11 ║ Шкив ║ Черный ║ 12 ║ Киев ║

║ ║ ... ║ ║ ║ ║

Перейдя в режим Edit (F9) можно отредактировать найденную запись.

40)

P══════╦════НомД════╦═══Наим════╦════Цвет════╦══Вес════╦══Город══╗

find ║ ND ║ ║ ║ ║ ║

SP════╦════════НомП══════╦════════НомД══════╦══════Колич══════╗

║ ║ ND ║ >30, <36 ║

P══════╦══НомД═╦═══Наим════╦═══Цвет═══╦══Вес══╦══════Город══════╗

1_║ Д1 ║ Корпус ║ Серый ║ 15 ║ Калининград ║

2 ║ Д10 ║ Дрель ║ Синий ║ 6 ║ Рязань ║

3 ║ Д11 ║ Шкив ║ Черный ║ 12 ║ Киев ║

║ ║ ... ║ ║ ║ ║

Answer будет содержать сведения о деталях, поставляемых партиями более 30 и менее 36.

Соседние файлы в папке Uchpos