Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Операция соединения отношенийСодержание книги
Поиск на нашем сайте
Общая операция соединения (называемая также соединением по условию) требует наличия двух операндов - соединяемых отношений и третьего операнда - простого условия. Пусть соединяются отношения A и B. Как и в случае операции ограничения, условие соединения comp имеет вид либо (a comp-op b), либо (a comp-op const), где a и b - имена атрибутов отношений A и B, const - литерально заданная константа, а comp-op - допустимая в данном контексте операция сравнения. Тогда по определению результатом операции сравнения является отношение, получаемое путем выполнения операции ограничения по условию comp прямого произведения отношений A и B. Если внимательно осмыслить это определение, то станет ясно, что в общем случае применение условия соединения существенно уменьшит мощность результата промежуточного прямого произведения отношений-операндов только в том случае, когда условие соединения имеет вид (a comp-op b), где a и b - имена атрибутов разных отношений-операндов. Поэтому на практике обычно считают реальными операциями соединения именно те операции, которые основываются на условии соединения приведенного вида. Хотя операция соединение в нашей интерпретации не является примитивной (поскольку она определяется с использованием прямого произведения и проекции), в силу особой практической важности она включается в базовый набор операций реляционной алгебры. Заметим также, что в практических реализациях соединение обычно не выполняется именно как ограничение прямого произведения. Имеются более эффективные алгоритмы, гарантирующие получение такого же результата. Имеется важный частный случай соединения - эквисоединение и простое, но важное расширение операции эквисоединения - естественное соединение. Операция соединения называется операцией эквисоединения, если условие соединения имеет вид (a = b), где a и b - атрибуты разных операндов соединения. Этот случай важен потому, что (a) он часто встречается на практике, и (b) для него существуют эффективные алгоритмы реализации. Операция естественного соединения применяется к паре отношений A и B, обладающих (возможно составным) общим атрибутом c (т.е. атрибутом с одним и тем же именем и определенным на одном и том же домене). Пусть ab обозначает объединение заголовков отношений A и B. Тогда естественное соединение A и B - это спроектированный на ab результат эквисоединения A и B по A/c и BBC. Если вспомнить введенное нами в конце предыдущей главы определение внешнего ключа отношения, то должно стать понятно, что основной смысл операции естественного соединения - возможность восстановления сложной сущности, декомпозированной по причине требования первой нормальной формы. Операция естественного соединения не включается прямо в состав набора операций реляционной алгебры, но она имеет очень важное практическое значение. Операция деления отношений Эта операция наименее очевидна из всех операций реляционной алгебры и поэтому нуждается в более подробном объяснении. Пусть заданы два отношения - A с заголовком {a1, a2,..., an, b1, b2,..., bm} и B с заголовком {b1, b2,..., bm}. Будем считать, что атрибут bi отношения A и атрибут bi отношения B не только обладают одним и тем же именем, но и определены на одном и том же домене. Назовем множество атрибутов {aj} составным атрибутом a, а множество атрибутов {bj} - составным атрибутом b. После этого будем говорить о реляционном делении бинарного отношения A(a,b) на унарное отношение B(b). Результатом деления A на B является унарное отношение C(a), состоящее из кортежей v таких, что в отношении A имеются кортежи <v, w> такие, что множество значений {w} включает множество значений атрибута b в отношении B. Предположим, что в базе данных сотрудников поддерживаются два отношения: СОТРУДНИКИ (ИМЯ, ОТД_НОМЕР) и ИМЕНА (ИМЯ), причем унарное отношение ИМЕНА содержит все имена, которыми обладают сотрудники организации. Тогда после выполнения операции реляционного деления отношения СОТРУДНИКИ на отношение ИМЕНА будет получено унарное отношение, содержащее номера отделов, сотрудники которых обладают всеми возможными в этой организации именами.
Контрольные вопросы. 1. Перечислите теоретико-множественные реляционные операции. 2. Перечислите специальные реляционные операции. 3. Как выполняется операция прямого произведения отношений. 4. Как выполняются операции ограничения отношения и операция проекции отношения?
Лекция № 6
Основные компоненты, входящие в состав приложений VFP Приложение на VFP состоит из следующих компонентов: - все описание приложения храниться в специальном файле проекта (расширение PJX)
В VFP принципиально изменена система организации данных. Теперь она приблизилась к теоретическим основам реляционной модели и позволяет более естественно выполнять операции реляционной алгебры. Основная единица хранения данных — это таблица, в столбцах и строках которой содержатся данные, как это и было раньше в dbf-файле. Таблица сохранила расширение файла dbf и имеет прямую совместимость со “старыми” dbf-файлами. Таблицы объединяются в базу данных (БД), в которой можно описать все связи, устанавливаемые между полями отдельных таблиц, правила проверки, определяющие реакцию системы на вносимые изменения, добавление или удаление данных и правила проверки целостности данных в БД. Файлы баз данных имеют расширение dbc и при открытии автоматически поддерживают все перечисленные установки для входящих в нее таблиц. При необходимости мы можем создать и таблицы, не входящие в БД, — свободные таблицы. VFP5 обеспечивает поддержку значений NULL и выполнение операций с этими данными в соответствии со стандартом ANSI. Это облегчает задачу представления неизвестных данных и взаимодействие с базами данных SQL, которые могут содержать такие типы значений. Для таблиц, входящих в БД, могут быть созданы следующие типы индексов, первые два из которых в FoxPro появились впервые: • Первичный (Primary) — обеспечивает наличие только уникальных данных в поле, по которому построен. В таблице может быть только один первичный индекс. • Кандидат (Candidate) — аналогичен первичному, но позволяет иметь несколько индексов этого типа для одной таблицы независимо от того, включена она в БД или нет. • Регулярный (Regular) — обычный тип индекса, поддерживаемый в предыдущих версиях. • Уникальный (Uniq) — при наличии одинаковых значении в поле, при активизации этого индекса обеспечивается вывод только уникальных значений. Этот тип индекса включен для поддержки совместимости.
Таким образом, база данных в VFP — это основной элемент организации данных, который помимо формирования структуры представления информации выполняет функции словаря данных за счет поддержки следующих функциональных возможностей: • допускаются длинные имена таблиц; • каждому полю и таблице можно давать комментарии; • позволяется задавать длинные имена полей; • для полей помимо идентификаторов появились заголовки, которые могут использоваться как в окне Browse, так и в качестве заголовков для колонок в объекте Grid; • введены значения по умолчанию для полей; • добавлены два новых типа индексов: первичный и кандидат; • предусмотрены правила проверки для полей и записей при изменении и вводе новых данных; • имеются триггеры для поддержания целостности данных; • поддерживаются постоянные связи между таблицами, размещенными в БД; • имеются процедуры БД для описания сложных условий правил проверки; • появились соединения с внешними источниками данных; • поддерживаются локальные и внешние просмотры.
Все объекты хранятся в таблицах(за исключением файлов PRG и TXT)
Контейнерный файл БД (DBC) – содержит информацию о всех остальных таблицах входящих в БД. (Словарь БД) А также о различных ограничениях, значениях по умолчанию, триггерах, Индексах, связях между таблицами, и тд.
Интерфейс управляемый событиями.
Основные элементы языка программирования Visual FoxPro. - типы данных; - переменные и массивы; -рабочие области; -операторы поиска и перемещения по записям; -операторы циклов; -управляющие операторы;
Аналогично многим языкам высокого уровня язык Visual Foxpro работает с переменными некоторого фиксированного набора типов. Т.К. основная цель языка VSFP - обработка данных из таблиц то, соответственно, и типы переменных совпадают с возможными типами полей в таблицах VFP. Имена полей могут содержать до 254 символов, но не должны содержать пробелы, не могут начинаться с цифры и включать специальные символы кроме символов подчеркивания. Поля могут быть следующих типов:
Переменные в VSFP не являюся жестко типизованными - тип переменной определяется последним присвоенным значением. Переменные создаются либо описанием операторами Public, Private, либо оператором присваивания. В VSFP разрешается работа с одномерными и двумерными массивами переменных. Для этого они должны быть описаны специальной командой: DECLARE/DIMENSION <переменная> (<вырN1>[,<N2>]) [,<переменная> (<вырN1>[,<N2>])] Нумерация элементов массива начинается с 1. Сразу после описания все элементы массива получают тип LOGICAL и значение.F. Тип каждого отдельного элемента определяется результатом последней операции присваивания. Разрешается повторное описание существующего массива без потери имеющихся данных. При обращении к элементам массива разрешено использовать круглые или квадратные скобки.
VSFP Может одновременно работать с большим количеством таблиц. Каждая таблица открывается в так называемой рабочей области, открывая новую таблицу Вы либо выбираете определенную рабочую область командой SELECT, либо таблица будет открыта в текущей рабочей области. Всего VSFP имеет 32767 рабочих областей. При запуске по умолчанию активизируется рабочая область 1. Таблица в текущей области открывается командой: USE <имя таблицы>. Открытие таблицы в конкретной области: USE <имя таблицы> IN <номер рабочей области>. Открытие таблицы в свободной области с наименьшим номером: USE <имя таблицы> IN 0. Открытой таблице VSFP назначает псевдоним (Alias) - имя длиной до 10 символов, служащее для ссылок на эту таблицу: USE <имя таблицы> IN 0 ALIAS <псевдоним>.
Дополнение: Над переменными и полями таблиц могут выполняться следующие операции: Математические (перечислены в порядке приоритетов): ** или ^ - возведение в степень; * - умножение, / - деление; + - сложение, - -вычитание;
Логические (в порядке приоритетов): NOT - НЕ(другая форма -!); AND - логическое И; OR - логическое ИЛИ; Знаки логических операций (кроме!) окаймляются точками или пробелами. Отношения: < - меньше, > - больше, = - равно, # - не равно, <= - не больше, >= - не меньше. Знаки отношения применимы как к числовым выражениям, так и к датам и символьным выражениям. Если сравниваются символьные строки разной длины, сравнение выполняется по длине второго выражения; Остаток левого операнда, превышающий длину правого операнда, игнорируется. Существуют операции отношения только для символьных выражений: $ -сравнение символьных строк. Операция A$B даст значение.T. если A идентично B, либо A входит в B, и.F. в противном случае. == - сравнение на полное тождество символных строк и по длине, и по содержанию, включая пробелы. Сцепления: + - соединение двух или более строк в одну; - то же, но пробелы в конце первой стороки помещаются в конец итоговой строки; Оператор присваивания <перем>=<выраж> STORE <выраж> TO <список перем>
Структура команды - команды ориентированные на обработку файлов БД, в самом общем виде имеют следующий синтаксис: НАЗВАНИЕ [<границы>] [<список выражений>] [FOR <условие>] [ WHILE <условие>] где НАЗВАНИЕ - имя команды;
<границы> - диапазон действия команды ALL REST NEXT N RECORD N FOR <условие> - выполнение команды только для записей, отвечающих <условию>
WHILE <условие> - выполнение команды до тех пор, пока не перестанет выполняться условие; FOR и WHILE могут присутствовать в команде одновременно. В этом случае WHILE условие имеет преимущество перед FOR условием. Порядок следования элементов команды - произвольный. По умолчанию, если отсутствуют <границы> и <условия >, команда выполняется только над текущей записью или над всей таблицей в целом.
Рассмотрим команды перемещения указателя текущей записи в таблице. (знакомые по практическим занятиям;) Запись на которой находиться указатель, является текущей, и только к ней возможен непосредственный доступ. Команды перемещения по записям: GO TOP [IN <ВырN/ВырС>] - переход к первой записи таблицы;[в указанной области]; GO BOTTOM [IN <ВырN/ВырС>] - переход к последней записи; GO <ВырN> [IN <ВырN/ВырС>] - переход к записи с номером <ВырN>; SKIP <ВырN> [IN <ВырN/ВырС>] - переход к записи, отстоящей от текущей на <ВырN> записей; В данной команде <ВырN> может быть отрицательным, что означает движение указтеля назад; SKIP - без параметра аналогично SKIP 1; Для контроля положения указателя и наличия записей в таблице предусмотрены функции: RECNO([ <ВырN/ВырС>]) - возвращает номер текущей записи; RECCOUNT([ <ВырN/ВырС>]) - Возвращает общее число записей в таблице,включая записи, помеченные к удалению; EOF([ <ВырN/ВырС>]) - Возвращает.T. если достигнут конец таблицы, если нет возвращает.F.
ВOF([ <ВырN/ВырС>]) - Возвращает.T. если достигнуто начало таблицы, если нет возвращает.F.
Поиск данных в таблицах
Команда LOCATE осуществляет последовательный поиск одной самой первой записи в таблице, удовлетворяющей заданному FOR - условию, среди записей, находящихся в заданных границах, и до тех пор, пока соблюдается WHILE - условие(если есть);
LOCATE [FOR <условие>] [<границы>] [ WHILE <условие>] Если границы и while - условие отсутствуют, поиск ведется во всей таблице, начиная с первой записи; Если запись найдена функция FOUND() - оценивающая результат поиска, возвращает.T. указатель записей устанавливается на эту запись. При неудачном поиске FOUND()=. F. EOF() =.T.; Продолжение поиска начатого командой LOCATE возможно с использованием команды: CONTINUE Пример использования команды LOCATE
Из таблицы заказов выбираются заказчики находящиеся в Москве и подсчитывается их число.
USE customer && Open Customer table SET TALK OFF
STORE 0 TO gnCount LOCATE FOR ALLTRIM(UPPER(customer.city)) = 'Москва' DO WHILE FOUND() gnCount = gnCount + 1 ? company CONTINUE ENDDO
? 'Всего заказчиков в Москве: '+ LTRIM(STR(gnCount))
SEEK <выражение> Осуществляет поиск в таблице первой записи такой, что значение индекса совпадает с указанным выражением, указатель текущей записи устанавливается на найденную запись.
SEEK eExpression [ORDER nIndexNumber | IDXIndexFileName | [TAG] TagName [OF CDXFileName] [ASCENDING | DESCENDING]] [IN nWorkArea | cTableAlias]
Циклы:
DO WHILE <условие> <команды> [exit] [loop] EndDO
<команды > выполняютя когда <условие> истинно. [EXIT] -Прерывает выполнение цикла(управление передается оператору следующему за enddo, endfor, endscan) [LOOP] -переход к началу цикла(на проверку условия)
Пример DO WHILE... ENDDO
В примере суммируется количество товаров на складе цена которых превышает 20 рублей
USE products && Opens Products table SET TALK OFF gnStockTot = 0
DO WHILE.T. && Begins loop IF EOF() EXIT ENDIF IF unit_price < 20 SKIP LOOP ENDIF gnStockTot = gnStockTot + in_stock SKIP ENDDO && Ends loop
CLEAR ? 'Всего товаров стоимостью больше 20 руб.:' ?? gnStockTot
Цикл FOR FOR <перем>=<вырN1> TO <вырN2> [STEP <вырN3>] <команды> [exit] [loop] EndFOR <Перем> - используется в качестве управляющего параметра цикла для которого N1 является начальным значением, N2- конечным, а N3 шагом изменения переменной. По умолчанию шаг изменения параметра цикла =1.
[EXIT] -Прерывает выполнение цикла(управление передается оператору следующему за enddo, endfor, endscan) [LOOP] -переход к началу цикла(на проверку условия)
Пример FOR... ENDFOR
* Пример 1 CLEAR FOR gnCount = 1 TO 10 ? gnCount ENDFOR
* Пример 2 SET TALK OFF CLOSE DATABASES OPEN DATABASE (HOME() + 'samples\data\testdata') USE customer && Opens Customer table STORE 2 TO gnI && Initial value STORE 10 TO gnJ && Final value STORE 2 TO K && Step value FOR gnCount = gnI TO gnJ STEP K GOTO gnCount && Move record pointer DISPLAY company && Display company name ENDFOR
Цикл SCAN Просматривает таблицу в текущей рабочей области и выполняет команды для каждой записи которая удовлетворяет условиям. SCAN [<границы>] [FOR <условие>] [ WHILE <условие>] <команды> [exit] [loop] ENDSCAN [EXIT] -Прерывает выполнение цикла(управление передается оператору следующему за enddo, endfor, endscan) [LOOP] -переход к началу цикла(на проверку условия) Контрольные вопросы. 1. Перечислите основные компоненты входящие в состав проекта Visual Foxpro. 2. Какие типы данных могут использоваться в таблицах Visual Foxpro? 3. Какой оператор используется для описания массивов? 4. Перечислите операторы организации циклов.
Лекция 7 Команды управления ходом выполнения программы:
If Выполняет группу команд в зависимости от условия
IF lExpression [THEN] Commands [ELSE Commands] ENDIF
Параметры
lExpression - логическое выражение. Если lExpression истинно (.T.), любые команды следующие за IF или THEN и предшествующие ELSE или ENDIF выполняются.
· Если lExpression ложно (.F.) и ELSE присутствует, выполняются команды следующиее за ELSE и предшествующие ENDIF. Оператор do case Выполняет первый набор команд для которого логическое выражение указанное в предложении CASE является истинным.
Синтаксис
DO CASE CASE lExpression1 Commands [CASE lExpression2 Commands ... CASE lExpressionN Commands] [OTHERWISE Commands] ENDCASE
Аргументы
CASE lExpression1 Commands...Когда обнаруживается первое истинное (.T.) CASE-выпражение, выполняется следующий за ним набор команд. Команды выполняются до следующего оператора CASE или ENDCASE.
Исполняется только один набор команд, даже если в других CASE – логическое выражение будет истинным. OTHERWISE Commands Если все из CASE выражений примут значение ложно (.F.), то будут выполнены команды указанные после OTHERWISE.
Пример DO CASE... ENDCASE
STORE CMONTH(DATE()) TO month && Название месяца для текущей даты
DO CASE && Begins loop
CASE INLIST(month,'January','February','March') STORE 'Отчет за первый квартал' TO rpt_title
CASE INLIST(month,'April','May','June') STORE ' Отчет за второй квартал ' TO rpt_title
CASE INLIST(month,'July','August','September') STORE ' Отчет за третий квартал ' TO rpt_title
OTHERWISE STORE ' Отчет за четвертый квартал ' TO rpt_title
ENDCASE && Ends loop WAIT WINDOW rpt_title NOWAIT
Команды удаления данных ERASE (DELETE FILE) Удаляет файл(файлы) с диска
Синтаксис
ERASE FileName |? [RECYCLE]
FileName Указывает файл который будет удален. Необходимо указание полного пути к файлу если он расположен не в текущем каталоге.
FileName – может содержать символы обобщения такие как * и?. Если в качестве имени файла указать ‘?’ будет выведен диалог для выбора удаляемого файла.
RECYCLE Удаляемый файл помещается в Windows 95 Recycle Bin (может быть восстановлен).
ZAP Удаляет все записи из таблицы,.оставляет только ее структуру.
Синтаксис
ZAP [IN nWorkArea | cTableAlias]
IN nWorkArea указывает номер рабочей области.
IN cTableAlias указывает алиас таблицы.
Если не указаны nWorkArea или cTableAlias, удаляются все записи из таблицы в текущей рабочей области.
После выполнения ZAP записи не могут быть восстановлены.
DELETE Помечает записи как удаленные.
Синтаксис
DELETE [Scope] [FOR lExpression1] [WHILE lExpression2] [IN nWorkArea | cTableAlias] [NOOPTIMIZE]
Scope Указывает диапазон записей помечаемых к удалению. Могут использоваться: ALL, NEXT N, RECORD N, и REST.
Если аргументы не указаны –помечается текущая запись.
PACK Физически удаляет из таблицы все записи помеченные к удалению.
Синтаксис
PACK [MEMO] [DBF] Выполнение команды PACK требует монопольного доступа к таблице. Если у таблицы имеются открытые индексы – при выполнении команды они будут перестроены.
RECALL Снимает пометку удаления с записей помеченных к удалению в текущей таблице.
Синтаксис
RECALL [Scope] [FOR lExpression1] [WHILE lExpression2] [NOOPTIMIZE]
Аргументы
Scope Указывает диапазон восстанавливаемых записей. Могут использоваться: ALL, NEXT N, RECORD N, и REST.
Если аргументы не указаны –снимается пометка с текущая запись. RECALL – может восстановить записи в таблице если для нее не выполнялись команды ZAP или PACK
Команды изменения данных REPLACE Изменяет значения в полях таблицы. Синтаксис
REPLACE FieldName1 WITH eExpression1 [ADDITIVE] [, FieldName2 WITH eExpression2 [ADDITIVE]]... [Scope] [FOR lExpression1] [WHILE lExpression2] [IN nWorkArea | cTableAlias] [NOOPTIMIZE]
Аргументы
FieldName1 WITH eExpression1 [, FieldName2 WITH eExpression2... ] Указывает что данные в FieldName1 заменяются значением Expression1; данные в FieldName2 заменяются значением eExpression2; и т.д.
В случае если значение выражения превышает разрядность числового(numeric) поля, REPLACE выполняет следующие шаги:
1. REPLACE округляет значение выражения до количества десятичных знаков в поле таблицы. 2. Если значение не размещается, REPLACE сохраняет значение используя представление вида мммЕ пп. 3. Если значение не размещается, REPLACE заменяет содержимое поля звездочками.
Scope Указывает диапазон изменяемых записей. Могут использоваться: ALL, NEXT N, RECORD N, и REST.
По умолчанию REPLACE изменяет текущую запись (NEXT 1).
IN nWorkArea Указывает номер рабочей области в которой будут модифицированы записи. IN cTableAlias Указывает алиас таблицы в которой будут модифицированы записи. Если nWorkArea и cTableAlias не указаны, обновляются записи в текущей рабочей области.
Функции VFP Количество функции VFP очень велико, перечислим лишь некоторые из них. Математические ABS(num) – Возвращает абсолютное значение аргумента(модуль) ACOS(num) Возвращает значение arccos(num) ASIN(num) Возвращает значение arcsin(num) ATAN(num) Возвращает значение arctg(num) ATN2(num1, num2) Возвращает значение arctg(num1/num2); num2 мб =0 BETWEEN(num1, num2, num3) CEILING(num1) - округляет число до большего целого. COS(num1) DTOR(num1) преобразует угол из градусов в радианы EXP(num1) FLOOR(num1) - возвращает целое число, меньшее или равное num1. INT(num1) LOG(num1) Возвращает значение натурального логарифма LOG10(num1) Возвращает значение десятичного логарифма MAX() MIN() MOD(nDividend, nDivisor) Делит одно числовое на другое и возвращает остаток. nDividend Определяет делимое. nDivisor Определяет делитель. PI() – значение 3.14159 RAND() Возвращает случайное число между 0 и 1 ROUND(nExpression, nDecimalPlaces) Округляет выражение до указанного количества десятичных знаков. RTOD() преобразует угол из радиан в градусов SIGN() SIN() SQRT() TAN()
Строковые ALLTRIM(ВырС) Удаляет пробелы вначале и в конце символьного выражения ASC(ВырС) Возвращает код первого символа из символьного выражения AT(ВырС1, ВырС2 [, ВырN]) Возвращает позицию(отсчет позиций слева-направо) первого вхождения одного символьного выражения (ВырС1) в другое символьное выражение(ВырС2); ВырN-номер вхождения; AT_C() тоже что и AT() но для двухбайтовых символов. ATC() тоже что и AT() но не различает строчные и заглавные буквы. ATCC() – ATC() – для двухбайтовых символов. ATLINE(ВырС1, ВырС2) возвращает номер строки из ВырС2, в которой встретилось выражение ВырС1 ATCLINE()тоже, что ATLINE но не различает строчные и заглавные буквы. BETWEEN(ВырС1, ВырС2, ВырС3) CHR(ВырN) – возвращает символ заданный кодом ВырN CHRTRAN() CPCONVERT() - Преобразует символьные выражения в другую кодовую таблицу CPCONVERT(nCurrentCodePage, nNewCodePage, cExpression) INLIST (eExpression1, eExpression2 [, eExpression3...]) Определяет, соответствует ли выражение одному из выражений в множестве. Возвращает логическое или NULL значение. eExpression1 Определяет выражение для поиска.
eExpression2 [, eExpression3...] Определяет множество выражений, среди которых производиться поиск. (не более 24 выражений) Все выражения должны иметь одинаковый тип данных. ISALPHA() ISDIGIT() ISLOWER() ISUPPER() LEFT(ВырС, ВырN) – Возвращает ВырN символов из ВырС считая слева – направо. LEN(ВырС) Возвращает количество символов в ВырN LIKE(ВырС1, ВырС2) Определяет есть ли в ВырС2 подстрока соответствующая образцу ВырС1. LIKE(ВырС1, ВырС2) В выражении ВырС1 допустимо использование любой комбинации символов обобщения ? и *. LOWER() LTRIM() MAX() MIN() OCCURS(cSearchExpression, cExpressionSearched) Возвращает количество вхождений, одного выражения в другое. Аргументы cSearchExpression Определяет выражение, которое разыскивается внутри cExpressionSearched. Функция возвращает 0 если cSearchExpression не найдено внутри cExpressionSearched.
PADC(eExpression, nResultSize [, cPadCharacter]); PADL(); PADR() Возвращает строку из выражения, дополненного пробелами или указанными символами cPadCharacter до указанной длины слева (PADL), справа (PADR), или с двух сторон(PADC).
RAT() Тоже, что AT(), но символы считаются справа налево. RATLINE() REPLICATE() RIGHT() RTRIM() SPACE() STR (nExpression [, nLength [, nDecimalPlaces]]) Преобразует числовое выражение в симвльное.
Синтаксис
STR (nExpression [, nLength [, nDecimalPlaces]]) nExpression - числовое выражение. nLength Определяет длину возвращаемой строки. nDecimalPlaces Определяет число десятичных знаков в результирующей строке.
STRCONV() STRTRAN() STUFF(cExpression, nStartReplacement, nCharactersReplaced, cReplacement) Возвращает строку, полученную, путем замены указанного числа символов в cExpression, другим выражением cReplacement. CExpression - строка в которой происходит замена. nStartReplacement определяет позицию в cExpression, с которой начинается замена. nCharactersReplaced Определяет количество символов, которое будет заменено. Если nCharactersReplaced - 0, строка cReplacement будет вставлена в cExpression .CReplacement строка замены. Если cReplacement – пустая строка, то число символов, указанное nCharactersReplaced будет удалено из cExpression.
SUBSTR() SYS(2007) – Возвращает значение CRC для строки аргумента TRANSFORM() TRIM() TXTWIDTH() UPPER()
Работа с датами BETWEEN() CDOW(dExpression | tExpression) Возвращает день недели из Date или DateTime выражения. (По английски) CMONTH(dExpression | tExpression) Возвращает название месяца из Date или DateTime выражения. (По английски) CTOD(cExpression) Преобразует символьное выражение в выражение типа Date CTOT(cExpression) Преобразует символьное выражение в выражение типа DateTime DATE() Возвращает текущую системную дату. DATETIME() Возвращает текущую системную дату и время. DAY(dExpression | tExpression) Возвращает номер дня в месяце(число от 1 до 31) DMY(dExpression | tExpression) Возвращает символьную строку содержащую дата например, 31 May 1996. DOW(dExpression | tExpression [, nFirstDayOfWeek]) Возвращает номер дня недели. EMPTY(dExpression | tExpression) FDATE(cFileName) Возвращает дату последней модификации файла. GOMONTH(dExpression | tExpression, nNumberOfMonths) Возвращает дату, отстоящую от указанной на заданное число месяцев. nNumberOfMonths - число месяцев.
INLIST() см. выше MAX() ------”----- MDY(dExpression | tExpression) Возвращает символьную строку в формате месяц-день-год для указанной даты. MIN() см. выше MONTH(dExpression | tExpression) Возвращает номер месяца в году.(от 1 до 12) SYS(1) - возвращает системную дату SYS(2) возвращает текущее время в секундах
SYS(10) возвращает системную дату в виде символьной строки. WEEK(dExpression | tExpression [, nFirstWeek] [, nFirstDayOfWeek]) Возвращает номер недели в году. dExpression | tExpression выражение типа Date или DateTime. YEAR(dExpression | tExpression) Возвращает год для указанной даты.
Преобразование типов CHR(nANSICode) Возвращает символ соответствующий заданному коду CTOD(cExpression) Преобразует символьное выражение в выражение типа date DTOC() Преобразует выражение типа date в символьное выражение MTON() Преобразует выражение типа Currency в выражение типа Numeric NTOM() Преобразует выражение типа Numeric в выражение типа Currency NVL (eExpression1, eExpression2)
Возвращает отличное от NULL значение из двух выражений. eExpression1, eExpression2 NVL() возвращает eExpression2, если eExpression1 содержит NULL значение. NVL() возвращает eExpression1, если eExpression1 – отличное от NULL значение. eExpression1 и eExpression2 могут быть любого типа. NVL() возвращает.NULL. если и eExpression1 и eExpression2 оба содержат NULL значение. STR() см. выше SYS(10) см. выше TRANSFORM(eExpression, cFormatCodes) Возвращает символьную строку содержащую результат преобразования выражения eExpression с использованием шаблона cFormatCodes. TTOC(tExpression [, 1 | 2]) Преобразует выражение типа DateTime в символьную строку. TTOD(tExpression) Преобразует выражение типа DateTime в тип Date. VAL(cExpression) Возвращает числовое значение полученное из символьного выражения.
Проверка файлов и дисков FCHSIZE (nFileHandle, nNewFileSize) Изменяет размер файла, открытого на низком уровне.
NFileHandle указатель на файл, возвращается функцией FOPEN() или FCREATE(). NNewFileSize Определяет новый размер файла в байтах.
FCLOSE(nFileHandle) Закрывает файл, открытый на низком уровне. FCREATE (cFileName [, nFileAttribute]) Создает и открывает файл на низком уровне. CFileName Определяет имя создаваемого файла. NFileAttribute Определяет атрибуты создаваемого файла. 0 (по умолчанию) Чтение -запись 1 Только для чтения 2 Скрытый 3 только для чтения, скрытый 4 cистемный 5 только для чтения / системный 6 Системный / скрытый 7 только для чтения /скрытый/системный
FEOF(nFileHandle) Проверяет достигнут или нет конец файла FFLUSH(nFileHandle) Записывает на диск файловый буфер для файла открытого на низком уровне. FGETS(nFileHandle [,nBytes]) Возвращает строку считанную из файла FOPEN(cFileName [, nAttribute]) Открывает файл на низком уровне FPUTS(nFileHandle, cExpression [, nCharactersWritten]) Записывает строку символов в файл FREAD(nFileHandle, nBytes) Считывает указанное число байт из файла FSEEK (nFileHandle, nBytesMoved [, nRelativePosition]) Перемещает указатель в файле, открытом на низком уровне. NFileHandle указатель файла NBytesMoved число байтов, на которое необходимо переместить указатель файла. Указатель файла перемещается к концу файла, если nBytesMoved положителен. Указатель файла перемещается к началу файла, если nBytesMoved отрицателен. NRelativePosition относительно чего перемещается указатель файла: 0 (Значение по умолчанию) начало файла. 1 Текущее положение указателя файла 2 Конец файла FTIME(cFileName) Возвращает время последней модификации файла. FWRITE(nFileHandle, cExpression [, nCharactersWritten]) Записывает последовательность байт в файл открытый на низком уровне. HEADER([nWorkArea | cTableAlias]) Возвращает число байт в заголовке указанной таблицы. DELETED([cTableAlias | nWorkArea]) Возвращает логическое значение показывающее удалена текущая запись или нет. FCOUNT([cTableAlias | nWorkArea]) Возвращает число полей в указанной таблице. FIELD(nFieldNumber [, nWorkArea | cTableAlias]) Возвращает имя поля заданного номером в указанной таблице FSIZE(cFieldName [, nWorkArea | cTableAlias] | cFileName) Возвращает размер в байтах указанного поля LUPDATE([nWorkArea | cTableAlias]) Возвращает дату последнего обновления таблицы. Функции времени CTOT(cCharacterExpression) Преобразует символьное выражение в тип DateTime DATETIME() Возвращает системные дату и время в переменную типа DateTime HOUR(tExpression) Возвращает количество часов из переменной типа DateTime MINUTE(tExpression) Возвращает количество минут из переменной типа DateTime SEC(tExpression) Возвращает количество секунд из переменной типа DateTime SECONDS() Возвращает текущее время в секундах TIME([nExpression]) Возвращает текущее время в виде символьной строки (hh:mm:ss)
Функция анализа условий IIF(логВыраж, Выр1, Выр2) Возвращает одно из двух значений в зависимости от значения логического выражения.
логВыраж Определяет логическое выражение, которое IIF() проверяет. Выр1, Выр2, если логВыраж истинно, то возвращается Выр1. Если логВыраж ложно(.F)., то возвращается Выр2.
|
|||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-01-25; просмотров: 204; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.195.84 (0.015 с.) |