---
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 действителен только при работе с текстовыми базами данных.
