--- title: "База данных (Интерфейс ksDataBaseObject)" type: interface api: [api7] tags: [interface, api7, ksdatabaseobject] sources: - ksdatabaseobject.html --- *API интерфейсов. Версия 5* ## База данных (Интерфейс ksDataBaseObject) Интерфейс базы данных. Примечание: Указатель на интерфейс можно получить при помощи метода KompasObject::DataBaseObject. Смотрите также KompasObject ## ksCloseTextFile - Закрыть текстовый файл запросов Аналог данного метода при использовании API экспортных функций - CloseTextFile. Синтаксис Automation: ``` BOOL ksCloseTextFile (long F); Входной параметр: F - указатель на текстовый файл. Возвращаемое значение: 1 - в случае успешного завершения, 0 - в случае неудачи. ``` ## ksCondition - Задать или изменить условие запроса Аналог данного метода при использовании API экспортных функций - Condition. Синтаксис Automation: ``` long ksCondition (long db, long r, BSTR stSQL); Входные параметры: db - указатель на объект БД, r - указатель на отношение, stSQL - запрос. Возвращаемое значение: 1 - в случае успешного завершения, 0 - в случае неудачи. ``` Примечание: При работе с базой данных через ODBC-интерфейс происходит переопределение составляющей SQL-запроса, начинающейся с ключевого слова WHERE. Состав обрабатываемых полей записи, определенный в отношении, не изменяется. При работе с текстовыми файлами использование функции ksDataBaseObject::ksCondition является единственной возможностью определения условия запроса, так как в функции ksDataBaseObject::ksDoStatement определяется только список обрабатываемых полей записи. Следует отметить, что при работе с текстовыми базами данных не обрабатывается вложенность условий (например, "where d > 10 and d < 14"). ## ksConnectDB - Связать объект БД с конкретной базой данных Аналог данного метода при использовании API экспортных функций - ConnectDB. Синтаксис Automation: ``` long ksConnectDB (long db, BSTR DBName); Входные параметры: db - указатель на объект БД, DBName - имя БД (для ODBC - имя БД в администраторе ODBC, для текстового файла - имя файла). Возвращаемое значение: 1 - в случае успешного завершения, 0 - в случае неудачи. ``` ## ksCreateDB - Создать блок заголовка базы данных Синтаксис Automation: ``` long ksCreateDB (BSTR typeBD); Входной параметр: typeBD - тип базы данных: TXT_DB - база данных текстового формата, ODBC_DB - база данных, доступная через интерфейс ODBC. Возвращаемое значение: указатель на блок заголовка базы данных - в случае успешного завершения, 0 - в случае неудачи. ``` Примечание: Функция позволяет открыть БД. Одновременно может быть открыто несколько БД. ## ksDeleteDB - Удалить блок заголовка базы данных Аналог данного метода при использовании API экспортных функций - DeleteDB. Синтаксис Automation: ``` long ksDeleteDB(long db); Входной параметр: db - указатель на объект БД. Возвращаемое значение: 1 - в случае успешного завершения, 0 - в случае неудачи. ``` Примечание: Происходит автоматическое отсоединение базы данных и удаление всех созданных ранее запросов. ## ksDisconnectDB - Отключиться от базы данных Аналог данного метода при использовании API экспортных функций - DisconnectDB. Синтаксис Automation: ``` long ksDisconnectDB (long db); Входной параметр: db - указатель на объект БД. Возвращаемое значение: 1 - в случае успешного завершения, 0 - в случае неудачи. ``` Примечание: Функция отсоединяет блок заголовка с указателем bd от базы данных. Следует отметить, что при удалении блока заголовка (функция ksDataBaseObject::ksDeleteDB) отсоединение выполняется автоматически, поэтому использовать ее рекомендуется только при переопределении базы данных. ## ksDoStatement - Установить запрос для объекта БД Аналог данного метода при использовании API экспортных функций - DoStatement. Синтаксис Automation: ``` long ksDoStatement (long db, long r, BSTR stSQL); Входные параметры: db - указатель на объект БД, r - действительный указатель на отношение, stSQL - запрос. Возвращаемое значение: 1 - в случае успешного завершения, 0 - в случае неудачи. ``` Примечание: Параметр stSQL при работе через ODBC-интерфейс содержит строку SQL-запроса, а при работе с текстовыми файлами - номера полей (колонок) или пустую строку (если обрабатываются все поля таблицы). Для текстовых баз данных созданный запрос будет обрабатывать все записи, а непосредственно условие выборки определяется функцией ksDataBaseObject::ksCondition. Для ODBC-баз отношение не обязательно в случае вставки, удаления и обновления записи. Для текстового файла отношение в этих случаях необходимо, чтобы определить имена колонок. Примеры: ```vb Select d, s, p from bolt where d = 10 - пример запроса выборки из БД, где d, s, p - названия колонок или * для всех колонок или номера колонок "2, 4, 7" для текстового файла, начиная с единицы слева направо, bolt - имя таблицы в БД или пустая строка для всех колонок текстового файла, d - имя колонки в отношении. Insert into bolt (d,p,s) values( 10, 1.5, 14 ) - пример запроса для вставки строки в таблицу, где bolt - имя таблицы в БД или пустая строка для всех колонок текстового файла. Delete from bolt where d = 10 - пример запроса для удаления строки из таблицы bolt. Update bolt set p = 2.5, s = 20 where d =10 - пример запроса для замены данных в строке таблицы bolt. ``` ## ksEndRelation - Завершить описание отношения Аналог данного метода при использовании API экспортных функций - EndRelation. Синтаксис Automation: ``` BOOL ksEndRelation(); Возвращаемое значение: TRUE - в случае успешного завершения, FALSE - в случае неудачи. ``` Примечание: Описание отношения начинается методом ksDataBaseObject::ksRelation. ## ksFreeStatement - Освободить отношения Аналог данного метода при использовании API экспортных функций - FreeStatement. Синтаксис Automation: ``` long ksFreeStatement (long db, long r, long fOption); Входные параметры: db - указатель на объект БД, r - указатель на отношение, fOption - тип освобождения. Возвращаемое значение: 1 - в случае успешного завершения, 0 - в случае неудачи. ``` Примечание: Происходит освобождение памяти, отведенной для буфера записи функцией ksDataBaseObject::ksRelation. Параметр fOption имеет значение при работе через ODBC-интерфейс и означает тип освобождения (описан в помощи модуля ODBC). ## ksGetColumnName - Считать имя колонки таблицы из базы данных Аналог данного метода при использовании API экспортных функций - GetColumnName. Синтаксис Automation: ``` BSTR ksGetColumnName (long db, BSTR tableName, long* res, BSTR firstOrNext); Входные параметры: db - указатель на объект БД, tableName - ODBC - имя таблицы, текстовая БД - имя файла, firstOrNext - признак колонки: F - первая колонка, N - следующая колонка. Выходной параметр: res - результат работы: 1 - если в указанной таблице или базе еще существуют несчитанные имена колонок, 0 - если все имена колонок считаны. Возвращаемое значение: имя колонки. ``` Примечание: Для текстовых БД возвращаются номера колонок. ## ksGetTableName - Считать имя таблицы Аналог данного метода при использовании API экспортных функций - GetTableName. Синтаксис Automation: ``` BSTR ksGetTableName (long db, long* res, BSTR firstOrNext); Входные параметры: db - указатель на объект БД, firstOrNext - признак таблицы: F - первая таблица, N - следующая таблица. Выходной параметр: res - результат работы: 1- если в указанной базе еще существуют несчитанные имена таблиц, 0 - если все имена таблиц считаны. Возвращаемое значение: имя таблицы. ``` ## ksIsODBCOkey - Проверить подключение ODBC Аналог данного метода при использовании API экспортных функций - IsODBCOkey. Синтаксис Automation: ``` long ksIsODBCOkey(); Возвращаемое значение: 1 - если соединение с ODBC установлено, 0 - если соединения нет. ``` ## ksOpenTextFile - Открыть текстовый файл запросов Аналог данного метода при использовании API экспортных функций - OpenTextFile. Синтаксис Automation: ``` long ksOpenTextFile (BSTR fileName); Входной параметр: fileName - имя файла. Возвращаемое значение: указатель на открытый файл - в случае успешного завершения, 0 - в случае неудачи. ``` Примечание: Открыть текстовый файл запросов, настроенный на базу данных. Функция работает по правилам стандартной процедуры WINDOWS OpenFile. Реализованные в рамках данного раздела функции работы с текстовыми файлами обеспечивают их построчную обработку и позволяют вынести обращения к базе данных во внешний текстовый файл. Это дает возможность работать с разными платформами СУБД без изменения выполняемого кода приложения. ## ksRChar - Определить в отношении строковое поле Аналог данного метода при использовании API экспортных функций - RChar. Синтаксис Automation: ``` long ksRChar (BSTR name, long size, long type); Входные параметры: name - имя колонки таблицы, size - размер буфера, type - тип данных, хранящихся в БД (действительно для ODBC-баз). Возвращаемое значение: 1 - в случае успешного завершения, 0 - в случае неудачи. ``` Примечание: Параметр name действителен при работе с текстовой базой данных. Параметр type имеет смысл только для баз данных, связанных через ODBC, и описывает действительный тип колонки базы данных, с которой будет связано поле при выполнении операции ksDataBaseObject::ksDoStatement. Это позволяет получать строковое представление записи произвольного типа. Описания типов для ODBC хранятся в файле SQL.h, который поставляется вместе с модулями ODBC. ## ksRCharW - Определить в отношении строковое поле Аналог данного метода при использовании API экспортных функций - RCharW. Синтаксис Automation: ``` long ksRCharW (BSTR name, long size, long type); Входные параметры: name - имя колонки таблицы, size - размер буфера, type - тип данных, хранящихся в БД (действительно для ODBC-баз). Возвращаемое значение: 1 - в случае успешного завершения, 0 - в случае неудачи. ``` Примечание: Параметр name действителен при работе с текстовой базой данных. Параметр type имеет смысл только для баз данных, связанных через ODBC, и описывает действительный тип колонки базы данных, с которой будет связано поле при выполнении операции ksDataBaseObject::ksDoStatement. Это позволяет получать строковое представление записи произвольного типа. Описания типов для ODBC хранятся в файле SQL.h, который поставляется вместе с модулями ODBC. ## ksRDouble - Определить в отношении поле типа double Аналог данного метода при использовании API экспортных функций - RDouble. Синтаксис Automation: ``` long ksRDouble (BSTR name); Входной параметр: name - имя поля. Возвращаемое значение: 1 - в случае успешного завершения, 0 - в случае неудачи. ``` Примечание: Параметр name действителен только при работе с текстовыми базами данных. ## ksReadRecord - Получить запись базы данных Аналог данного метода при использовании API экспортных функций - ReadRecord. Синтаксис Automation: ``` long ksReadRecord (long db, long r, LPDISPATCH userPars); Входные параметры: db - указатель на объект БД, r - указатель на отношение, userPars - указатель на интерфейс ksUserParam. Возвращаемое значение: 1 - в случае успешного завершения, 0 - в случае неудачи. ``` Примечание: Количество и типы полей в структуре userPars должны соответствовать отношению r. ## ksReadStrFrFile - Считать строку из текстового файла запросов Аналог данного метода при использовании API экспортных функций - ReadStrFromTextFile. Синтаксис Automation: ``` BSTR ksReadStrFrFile (long f, long* res, long numb); Входные параметры: f - указатель на текстовый файл, numb - номер строки. Выходной параметр: res - результат работы метода: 1 - в случае успешного завершения, 0 - в случае неудачи. Возвращаемое значение: - строка обращения к базе данных. ``` Примечание: Строка обращения к базе данных начинается с номера, далее после двоеточия идет текст обращения, например: 3:select d,f from Table1 where d=10 and f>d ## ksRelation - Создать новое отношение Аналог данного метода при использовании API экспортных функций - Relation. Синтаксис Automation: ``` long ksRelation (long db); Входной параметр: db - указатель на объект БД. Возвращаемое значение: указатель на отношение - в случае успешного завершения, 0 - в случае неудачи. ``` Примечание: Отношение характеризует один запрос и представляет собой Описание памяти, необходимой для размещения очередной записи выборки, выполняемого функцией ksDataBaseObject::ksReadRecord. Является составным объектом, каждое поле которого описывает тип и имя поля (колонки) в таблице базы данных. Имя действительно только в случае работы с текстовым файлом, так как при обмене через ODBC-интерфейс имена уже описаны в блоке заголовка. Количество отношений, определенных для базы данных, не ограничивается. ## ksRFloat - Определить в отношении поле типа float Аналог данного метода при использовании API экспортных функций - RFloat. Синтаксис Automation: ``` long ksRFloat (BSTR name); Входной параметр: name - имя поля. Возвращаемое значение: 1 - в случае успешного завершения, 0 - в случае неудачи. ``` Примечание: Параметр name действителен только при работе с текстовыми базами данных. ## ksRInt- Определить в отношении поле типа Int Аналог данного метода при использовании API экспортных функций - RInt. Синтаксис Automation: ``` long ksRInt (BSTR name); Входной параметр: name - имя поля. Возвращаемое значение: 1 - в случае успешного завершения, 0 - в случае неудачи. ``` Примечание: Параметр name действителен только при работе с текстовыми базами данных. ## ksRLong - Определить в отношении поле типа long Аналог данного метода при использовании API экспортных функций - RLong. Синтаксис Automation: ``` long ksRLong (BSTR name); Входной параметр: name - имя поля. Возвращаемое значение: 1 - в случае успешного завершения, 0 - в случае неудачи. ``` Примечание: Параметр name действителен только при работе с текстовыми базами данных.