Функции отбора значений из внешних баз данных |
|
Функция dbf() позволяет осуществлять отбор данных из внешних баз данных формата dBASE.
Функция dbfwin() имеет параметры аналогичные параметрам функции dbf(). Эта функция используется для правильного чтения русскоязычных текстов (выполняет перекодирование текста в формат Windows).
Синтаксис функции:
dbf (arg1, arg2, arg3), где
arg1 - имя базы данных. Имя базы данных может быть задано текстовой константой, переменной или выражением.
arg2 - имя поля, из которого надо произвести отбор. Имя поля данных может быть задано текстовой константой, переменной или выражением.
arg3 - условие отбора. При задании условия можно использовать текстовые константы, переменные и выражения.
Например:
dbf("DBF_NAME", "COL1", "COL2 == 30")
Это означает: отобрать значение из базы данных DBF_NAME из поля COL1 при условии, что значение поля COL2 равно 30.
Примеры:
dbf($NAME, "COL1", "COL2 <= {GRM_VAR}")
dbf($NAME, "COL1", "TEXT = \"GRM_TEXT\"")
dbf("<*>DBF_NAME", "COL1","COL2 > 30")
В последнем примере перед именем БД может стоять последовательность символов <*>. Она означает, что БД с именем DBF_NAME будет искаться в той же директории, что и чертеж. То есть, при изменении пути вам не надо будет в Редакторе Переменных изменять имя БД во всех вызовах функции dbf().
Рекомендуется при создании чертежей, связанных с внешними БД, задавать имя БД с использованием последовательности символов "<*>". Это упростит вам работу с этими чертежами в дальнейшем.
Условие отбора при вызове функции dbf() является логическим выражением, соответствующим понятию фильтра в классической реляционной базе данных. Синтаксис условия (фильтра) соответствует требованиям dBASE. Его составными частями могут быть имена полей базы данных, константы, логические и арифметические операции, функции dBASE. Кроме этого, в фильтрах могут использоваться переменные системы T-FLEX CAD, а также логические операции Редактора Переменных. При использовании в фильтре переменных, они заключаются в фигурные скобки.
Тип возвращаемого функцией значения соответствует типу поля базы данных и может быть либо текстовым, либо вещественным.
Рассмотрим связь переменных с внешней базой данных на примере чертежа PROBA.
Создайте с помощью команды IDatabase внешнюю базу данных PROBA.DBF с полями AA, BB, CC, которые являются вещественными полями и текстовым полем DD.
После этого в Редакторе Переменных для переменной C создайте список значений, совпадающих со значениями поля CC базы данных, а для остальных переменных введите следующие выражения:
После выхода на экране отобразится:
Таким образом вы связали изображение чертежа со значениями переменных, которые хранятся во внешней БД. Теперь при изменении значения переменной C, значения остальных переменных будут выбираться из внешней базы данных.
В результате чертеж перерисуется в соответствии с отобранными из БД значениями переменных.
Функция mdb() позволяет осуществлять отбор данных из внешних баз данных формата MDB.
Синтаксис функции.
mdb (arg1, arg2, arg3, arg4, arg5), где
arg1 - имя базы данных. Имя базы данных может быть задано текстовой константой, переменной или выражением.
arg2 - имя таблицы в базе данных. Может быть задано текстовой константой, переменной или выражением.
arg3 - имя поля, из которого надо произвести отбор. Имя поля данных может быть задано текстовой константой, переменной или выражением.
arg4 - условие отбора. При задании условия можно использовать текстовые константы, переменные и выражения.
arg5 – значение, возвращающееся, если запись с заданным условием не найдена. Значение может быть как текстовым, так и вещественным, что определяется пользователем, и должно соответствовать типу переменной. Данный параметр не обязательный.
Например:
mdb ( "C:\\Example\\T-FLEX_USER.mdb", "USER", "ФИО", "Код={kod}" )
или
mdb ( "T-FLEX_USER.mdb", "USER", "ФИО", "Код={kod}", "Не найдено").
Это означает: отобрать значение из таблицы USER базы данных T-FLEX_USER из поля ФИО при условии, что значение поля Код равно значению переменной kod (в нашем случае 15). Во втором варианте добавляется пятый параметр возвращающий значение "Не найдено" в случае, если в поле Код нет значения 15. Если файл базы данных лежит в одной папке с файлом T-FLEX, то полный путь к файлу указывать не нужно.
Следует отметить, что четвёртый операнд функции, задающий условие отбора записей, может быть записан в форме SQL запроса и должен соответствовать предложению “WHERE” команды “SELECT”. Если при написании условия используются текстовые переменные, то выражение будет выглядеть следующим образом mdb ("С:\\T-FLEX_USER.mdb", "USER", "ФИО", "Должность=\"{$Dol}\"").
Ввиду более медленного процесса получения информации из внешней базы данных использовать функции DBF () и MDB () следует только в тех случаях, где невозможно использование базы данных по ссылке на основе форматов “*.xls”и “*.txt”.
Смотри: Функции работы с переменными