Датасет — различия между версиями
(→Примеры операций с датасетом.) |
Alexey (обсуждение | вклад) (→Примеры операций с датасетом.) |
||
(не показаны 3 промежуточные версии этого же участника) | |||
Строка 10: | Строка 10: | ||
== Примеры операций с датасетом. == | == Примеры операций с датасетом. == | ||
'''Копирование датасета в другой датасет:'''<br> | '''Копирование датасета в другой датасет:'''<br> | ||
− | OpenDataSet(`copy:`, `DataSet1`, `DataSet2`) | + | OpenDataSet(`copy:`, `DataSet1`, `DataSet2`)<br> |
+ | или<br> | ||
+ | Assign(`DataSet2.*`, DataSet1) | ||
'''Сортировка:'''<br> | '''Сортировка:'''<br> | ||
− | + | Gb_SetProp(`DataSet`,`IndexFieldNames`,`Имена полей через ;`)<br> | |
+ | Gb_SetProp(`dsGdsSbor`, `IndexFieldNames`,`Idx;Articul;HeapCell`) | ||
'''Загрузка датасета из файла:'''<br> | '''Загрузка датасета из файла:'''<br> | ||
Строка 19: | Строка 22: | ||
'''Сохранить датасет в файл:'''<br> | '''Сохранить датасет в файл:'''<br> | ||
− | + | SaveDataSet(`DataSet` ,:file) | |
'''Вывод датасета в диалоге:'''<br> | '''Вывод датасета в диалоге:'''<br> | ||
Строка 26: | Строка 29: | ||
'''Получить датасет данные из другого документа:'''<br> | '''Получить датасет данные из другого документа:'''<br> | ||
CreateDataSet(`LinksDs`, `ID,I=""),<br> | CreateDataSet(`LinksDs`, `ID,I=""),<br> | ||
− | Assign(`LinksDs.*`, GB_GET( 11, :id, `Links` )) | + | Assign(`LinksDs.*`, GB_GET( 11, :id, `Links` )) |
'''Очистить датасет:'''<br> | '''Очистить датасет:'''<br> | ||
− | IIF( | + | IIF(RecordCount( `DataSet` ) > 0, Delete( `DataSet.*` )) |
+ | |||
+ | '''Закрыть датасет:'''<br> | ||
+ | Assign(`DataSet.*`, 1/0) |
Текущая версия на 08:04, 22 мая 2017
Все продукты семейства ГБ не взаимодействуют с таблицами БД напрямую, а используют для этого хранимые процедуры или иные механизмы. Все эти инструменты должны уметь принимать и выдавать данные во внутреннем формате, основой для которого является формат клиентского датасета от Borland (будем называть этот формат пакетом данных или датасетом).
Этот формат позволяет хранить объекты и их атрибуты, как и обычная таблица, кроме того, он поддерживает типизацию уровня предметной области, дополнительные свойства атрибутов для клиентского приложения (подпись, форматирование, правила расчета итогов и пр.), а также вложенные датасеты (субсеты).
Субсет является полноправным датасетом, следовательно, он также может содержать субсеты, причем их вложенность не ограничена. Следовательно, любой объект в ГБ может быть представлен в виде датасета с иерархической структурой, в котором простые атрибуты содержат данные простых типов, а связи этого объекта с другими представлены субсетами. Особую роль играют субсеты, хранящие ровно одну запись (синглсеты или просто хипы). Обычно такие субсеты используются для хранения данных, которые определяет конечный пользователь.
Примеры операций с датасетом.
Копирование датасета в другой датасет:
OpenDataSet(`copy:`, `DataSet1`, `DataSet2`)
или
Assign(`DataSet2.*`, DataSet1)
Сортировка:
Gb_SetProp(`DataSet`,`IndexFieldNames`,`Имена полей через ;`)
Gb_SetProp(`dsGdsSbor`, `IndexFieldNames`,`Idx;Articul;HeapCell`)
Загрузка датасета из файла:
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)