Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VisualFoxPro.doc
Скачиваний:
15
Добавлен:
01.07.2025
Размер:
11 Мб
Скачать
☆

Столбцы курсора, создаваемого sqltables( )

Имя столбца

Описание

Table_cat

Каталог таблицы

Table_schem

Схема таблицы

Table_name

Имя таблицы, взятое из словаря данных

Table_type

Тип таблицы ('TABLE', 'VIEW' или 'SYSTEM TABLE')

Remarks

Описание таблицы

Пример. Выводится информация о таблицах ODBC-источника данных BookSaleDataBase.

&& Неразделяемое SQL-соединение; указываем ODBC-имя источника данных

&& По умолчанию имеем синхронное соединение

nStHandle = SQLConnect('BookSaleDataBase')

if nStHandle > 0 then

MessageBox('SQL-соединение создано!')

nResult = SQLTables(nStHandle, 'TABLE', "BookSaleCur")

if nResult = 1 then

&& Отображаем курсор BookSaleCur

&& Результат приведен на рис. 16.11

browse last

else

MessageBox("Ошибка при выполнении SQLTables")

endif

&& Разрываем SQL-соединение

SQLDisconnect(nStHandle)

else

MessageBox('Не удалось создать SQL-соединение')

endif

Рис. 16.11. Результат, полученный SQLConnect( )

Функция

SQLCOLUMNS(nStatementHandle, cTableName [, "FOXPRO" | "NATIVE"] [, cCursorName])

заносит имена столбцов (полей) таблицы SQL-соединения, указанного параметром nStatementHandle, и информацию о ее столбцах в курсор VFP.

Функция может выполняться в асинхронном режиме.

Результат и параметр nStatementHandle функции описаны в разд. 16.3.3 и 16.3.4.

Если cTableName задает несуществующее имя таблицы и использован параметр "NATIVE", то функция вернет 1 и сформирует пустой курсор. Если же употреблен параметр "FOXPRO", то функция вернет –1, курсор не создается.

Параметры:

cTableName – имя таблицы. Может содержать символы ? и *.

"FOXPRO" | "NATIVE" – формат информации о столбцах. Если указано значение "NATIVE", то формат сведений будет таким же, как и в источнике данных. В противном случае (по умолчанию) употребляется формат VFP.

cCursorName – имя курсора VFP, в который посылаются результаты. Если параметр опущен, то будет использовано имя по умолчанию – SQLResult.

Имена столбцов результирующего курсора в формате "FOXPRO" приведены в табл. 16.9, а в формате "NATIVE" – в табл. 16.10.

Таблица 16.9

Имена столбцов курсора в формате "foxpro"

Имя столбца

Описание

Field_name

Имя столбца

Field_type

Тип поля

Field_len

Длина поля

Field_dec

Число десятичных знаков

Таблица 16.10

Имена столбцов курсора в формате "native"

Имя столбца

Описание

Table_cat

Каталог таблицы

Table_schem

Схема таблицы

Column_name

Имя столбца

Data_type

Тип поля

Type_name

Имя типа поля

Decimal_digits

Число десятичных знаков

Buffer_length

Размер буфера

Scale

Коэффициент масштабирования данных

Num_prec_radix

Основание системы счисления (для числовых данных)

Nullable

Поддержка NULL-значений

Remarks

Описание столбца

Замечание. В зависимости от источника данных в результат могут быть включены дополнительные, не указанные в табл. 16.10 столбцы.

Пример. Выводятся сведения о столбцах таблицы Authors базы данных BookSale.mdb источника данных BookSaleDataBase. Результат приводится как в "FOXPRO", так и в "NATIVE"-формате.

&& Создаем неразделяемое SQL-соединение; указываем ODBC-имя источника данных

&& По умолчанию имеем синхронное соединение

nStHandle = SQLConnect('BookSaleDataBase')

if nStHandle > 0 then

MessageBox('SQL-соединение создано!')

&& Формат "FOXPRO"

nResult = SQLColumns(nStHandle, "Authors", 'FOXPRO', "BookSaleAuthorsCur")

&& Формат "NATIVE"

* nResult = SQLColumns(nStHandle, "Authors", "NATIVE", "BookSaleAuthorsCur")

if nResult = 1 then

&& Отображаем курсор BookSaleAuthorsCur

&& Результат приведен на рис. 16.12 и рис. 16.13

browse last

else

MessageBox("Ошибка при выполнении SQLColumns")

endif

&& Разрываем SQL-соединение

SQLDisconnect(nStHandle)

else

MessageBox('Не удалось создать SQL-соединение')

endif

Рис. 16.12. Сведения о столбцах таблицы Authors в формате "FOXPRO"

Рис. 16.13. Одна запись курсора BookSaleAuthorsCur в формате "NATIVE"

Функция

SQLEXEC(nStatementHandle, [cSQLCommand, [cCursorName [, aCountInfo]]])

посылает источнику данных SQL-оператор, где он выполняется. Если вызывается для исполнения SQL-оператора, подготовленного функцией SQLPREPARE( ), то только инициирует его выполнение и осуществляет получение результатов.

Функция может выполняться в асинхронном режиме.

Результат и параметр nStatementHandle функции описаны в разд. 16.3.3 и 16.3.4.

Параметры:

cSQLCommand – SQL-оператор, передаваемый источнику данных.

SQL-оператор может содержать опцию WHERE. Все параметры WHERE должны быть определены до вызова SQLEXEC( ) или SQLPREPARE( ).

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

Если SQL-оператор содержит более 255 символов (включая пробелы), то его текст нужно разбить на несколько строк, объединенных знаком конкатенации. Каждая строка не должна превышать 255 символов, например:

cSQLCommand = "SELECT <список полей> " ;

+ " FROM <список таблиц> " ;

+ " WHERE <выражение фильтра>")

SQL-оператор может содержать SQL-команды DELETE, INSERT, SELECT и UPDATE, а также команду PROCEDURE.

cCursorName – имя курсора, в который VFP заносит результаты. Если параметр не задан, то будет использовано имя по умолчанию – SQLResult. В случае нескольких результатов, получаемых во время выполнения запроса в асинхронном режиме (см. пример для SQLMORERESULTS( )), имя нового курсора образуется путем прибавления номера результат к имени cCursorName.

aCountInfo – задает имя массива, заполняемого информацией о числе доставленных записей. Если массив не существует, то он будет создан. Массив имеет 2 столбца, условно называемых Alias и Count. Описание массива дано в табл. 16.11.

Таблица 16.11.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]