Дата публикации: 03.03.2011
IBProvider v3.6. Новые интерфейсы набора рядов и схема метаданных
Новые интерфейсы набора рядов: IRowsetRefresh, IRowsetResynch
- Новые интерфейсы предназначены для перезагрузки значений колонок набора рядов.
- По-умолчанию поддержка интерфейсов IRowsetRefresh и IRowsetResynch отключена. Для включения нужно установить свойства команды или набора рядов IRowsetRefresh, IRowsetResynch равными true.
- Для настройки процесса перезагрузки значений, добавлены новые свойства: refresh_sql, refresh_trans_type, refresh_trans_level.
- Обратите внимание, что ADODB.Field.UndelyingValue некорректно работает с IRowsetRefresh. Поэтому, для ADODB рекомендуется включать только интерфейс IRowsetResynch.
option explicit '-------------------------------------------------------------------------- dim cn set cn=createobject("ADODB.Connection") cn.Provider="LCPI.IBProvider.3" cn.Properties("location")="localhost:d:\database\employee.fdb" cn.Properties("user id") ="SYSDBA" cn.Properties("password")="masterkey" call cn.Open() call cn.BeginTrans() dim cmd set cmd=createobject("ADODB.Command") cmd.ActiveConnection=cn cmd.Properties("IRowsetResynch")=true 'Robert Nelson cmd.CommandText="select * from employee where EMP_NO=2" dim rs set rs=cmd.execute() wscript.echo "[CurrentValue] FIRST_NAME : "&print_value(rs("first_name").value) wscript.echo "[UnderlyingValue] FIRST_NAME : "&print_value(rs("first_name").UnderlyingValue) wscript.echo "--- [update]" call cn.Execute("update employee set first_name=upper(first_name) where emp_no=2") wscript.echo "[CurrentValue] FIRST_NAME : "&print_value(rs("first_name").value) wscript.echo "[UnderlyingValue] FIRST_NAME : "&print_value(rs("first_name").UnderlyingValue) wscript.echo "--- [resync]" call rs.Resync() wscript.echo "[CurrentValue] FIRST_NAME : "&print_value(rs("first_name").value) wscript.echo "[UnderlyingValue] FIRST_NAME : "&print_value(rs("first_name").UnderlyingValue) call wscript.quit(0) '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ private function print_value(v) dim s if(IsNull(v))then s=s&"#NULL" else s=s&cstr(v) end if print_value=s end function 'print_value
Вывод:
Новая схема метаданных DBSCHEMA_IBP_FIELD_DIMENSIONS
- Предназначена для получения размерностей массивов в колонках и параметрах SP.
- Идентификатор схемы: {769A128E-04BF-11D8-AE8B-00A0C907DB93}.
-
Колонки схемы:
- RELATION_CATALOG [WSTR]
- RELATION_SCHEMA [WSTR]
- RELATION_NAME [WSTR]
- FIELD_NAME [WSTR]
- FIELD_GUID [GUID]
- FIELD_PROPID [UI4]
- DIMENSION [UI4]. Нумерация с 1
- LOWER_BOUND [I4]
- UPPER_BOUND [I4]
- Ограничения: RELATION_CATALOG, RELATION_SCHEMA, RELATION_NAME, FIELD_NAME.
- Сортировка: RELATION_CATALOG, RELATION_SCHEMA, RELATION_NAME, FIELD_NAME, DIMENSION.
option explicit '-------------------------------------------------------------------------- private const adSchemaProviderSpecific=-1 private const guid_DBSCHEMA_IBP_FIELD_DIMENSIONS="{769A128E-04BF-11D8-AE8B-00A0C907DB93}" '-------------------------------------------------------------------------- dim cn set cn=createobject("ADODB.Connection") cn.Provider="LCPI.IBProvider.3" cn.Properties("location")="localhost:d:\database\employee.fdb" cn.Properties("user id") ="SYSDBA" cn.Properties("password")="masterkey" call cn.Open() dim restrictions restrictions=Array(empty,empty,"JOB","LANGUAGE_REQ") dim rs set rs=cn.OpenSchema(adSchemaProviderSpecific, _ restrictions, _ guid_DBSCHEMA_IBP_FIELD_DIMENSIONS) dim nRec nRec=0 while not rs.eof nRec=nRec+1 wscript.echo "---------------- ["&nRec&"]" wscript.echo "RELATION_CATALOG: "&print_value(rs("RELATION_CATALOG").value) wscript.echo "RELATION_SCHEMA : "&print_value(rs("RELATION_SCHEMA").value) wscript.echo "RELATION_NAME : "&print_value(rs("RELATION_NAME").value) wscript.echo "FIELD_NAME : "&print_value(rs("FIELD_NAME").value) wscript.echo "FIELD_GUID : "&print_value(rs("FIELD_GUID").value) wscript.echo "FIELD_PROPID : "&print_value(rs("FIELD_PROPID").value) wscript.echo "DIMENSION : "&print_value(rs("DIMENSION").value) wscript.echo "LOWER_BOUND : "&print_value(rs("LOWER_BOUND").value) wscript.echo "UPPER_BOUND : "&print_value(rs("UPPER_BOUND").value) call rs.MoveNext() wend wscript.echo "" wscript.echo "total record count: "&cstr(nRec) call wscript.quit(0) '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ private function print_value(v) dim s if(IsNull(v))then s=s&"#NULL" else s=s&cstr(v) end if print_value=s end function 'print_value
Вывод:
Дата публикации: 03.03.2011. Права на материал принадлежат: IBProvider. При перепечатке ссылка на сайт https://www.ibprovider.com/rus обязательна.