Датасет — различия между версиями

Материал из GB wiki
Перейти к: навигация, поиск
(Примеры операций с датасетом.)
(Примеры операций с датасетом.)
Строка 10: Строка 10:
 
== Примеры операций с датасетом. ==
 
== Примеры операций с датасетом. ==
 
'''Копирование датасета в другой датасет:'''<br>
 
'''Копирование датасета в другой датасет:'''<br>
OpenDataSet(`copy:`, `DataSet1`, `DataSet2`)
+
OpenDataSet(`copy:`, `DataSet1`, `DataSet2`)<br>
 +
или<br>
 +
Assign(`DataSet2.*`, DataSet1)
  
 
'''Сортировка:'''<br>
 
'''Сортировка:'''<br>
gb_setprop(`DataSet`,`IndexFieldNames`,`Имена полей через ;`)
+
Gb_SetProp(`DataSet`,`IndexFieldNames`,`Имена полей через ;`)
  
 
'''Загрузка датасета из файла:'''<br>
 
'''Загрузка датасета из файла:'''<br>
OpenDataSet(`file:`,`FileName,S="c:\DataSet.cds"`,`DataSet`)
+
OpenDataSet(`file:`,`FileName,S="c:\DataSet.cds"`,`DataSet`)
  
 
'''Сохранить датасет в файл:'''<br>
 
'''Сохранить датасет в файл:'''<br>
SAVEDATASET(`DataSet` ,:file)
+
SaveDataSet(`DataSet` ,:file)
  
 
'''Вывод датасета в диалоге:'''<br>
 
'''Вывод датасета в диалоге:'''<br>
QueryParams(`Grid=DataSet`)
+
QueryParams(`Grid=DataSet`)
  
 
'''Получить датасет данные из другого документа:'''<br>
 
'''Получить датасет данные из другого документа:'''<br>
CreateDataSet(`LinksDs`, `ID,I=""),<br>
+
CreateDataSet(`LinksDs`, `ID,I=""),<br>
Assign(`LinksDs.*`, GB_GET( 11, :id, `Links` ))<br>
+
Assign(`LinksDs.*`, GB_GET( 11, :id, `Links` ))
  
 
'''Очистить датасет:'''<br>
 
'''Очистить датасет:'''<br>
IIF(RECORDCOUNT( `DataSet` ) > 0,  DELETE( `DataSet.*` ))
+
IIF(RecordCount( `DataSet` ) > 0,  DELETE( `DataSet.*` ))
 +
 
 +
'''Закрыть датасет:'''<br>
 +
Assign(`DataSet.*`, 1/0)

Версия 10:31, 21 июня 2016

Все продукты семейства ГБ не взаимодействуют с таблицами БД напрямую, а используют для этого хранимые процедуры или иные механизмы. Все эти инструменты должны уметь принимать и выдавать данные во внутреннем формате, основой для которого является формат клиентского датасета от Borland (будем называть этот формат пакетом данных или датасетом).

Этот формат позволяет хранить объекты и их атрибуты, как и обычная таблица, кроме того, он поддерживает типизацию уровня предметной области, дополнительные свойства атрибутов для клиентского приложения (подпись, форматирование, правила расчета итогов и пр.), а также вложенные датасеты (субсеты).

Субсет является полноправным датасетом, следовательно, он также может содержать субсеты, причем их вложенность не ограничена. Следовательно, любой объект в ГБ может быть представлен в виде датасета с иерархической структурой, в котором простые атрибуты содержат данные простых типов, а связи этого объекта с другими представлены субсетами. Особую роль играют субсеты, хранящие ровно одну запись (синглсеты или просто хипы). Обычно такие субсеты используются для хранения данных, которые определяет конечный пользователь.

Примеры операций с датасетом.

Копирование датасета в другой датасет:

OpenDataSet(`copy:`, `DataSet1`, `DataSet2`)
или
Assign(`DataSet2.*`, DataSet1)

Сортировка:

Gb_SetProp(`DataSet`,`IndexFieldNames`,`Имена полей через ;`)

Загрузка датасета из файла:

OpenDataSet(`file:`,`FileName,S="c:\DataSet.cds"`,`DataSet`)

Сохранить датасет в файл:

SaveDataSet(`DataSet` ,:file)

Вывод датасета в диалоге:

QueryParams(`Grid=DataSet`)

Получить датасет данные из другого документа:

CreateDataSet(`LinksDs`, `ID,I=""),
Assign(`LinksDs.*`, GB_GET( 11, :id, `Links` ))

Очистить датасет:

IIF(RecordCount( `DataSet` ) > 0,  DELETE( `DataSet.*` ))

Закрыть датасет:

Assign(`DataSet.*`, 1/0)