Publish date: 2011-03-03
IBProvider v3.6. New interfaces for rowset and new metadata schema
New interfaces for rowset: IRowsetRefresh, IRowsetResynch
- New interfaces are used to reload the values of columns in the rowset.
- By default, support of IRowsetRefresh and IRowsetResynch interfaces disabled. For activation of these interfaces, need to assign «true» to the properties IRowsetRefresh, IRowsetResynch.
- For configuration of work of these interfaces, defined new properties: refresh_sql, refresh_trans_type, refresh_trans_level.
- Note that ADODB.Field.UndelyingValue can’t correctly work with IRowsetRefresh interface. Our common recommendations for ADODB users — activate and use the IRowsetResynch interface only.
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
Output:
New scheme of metadata: DBSCHEMA_IBP_FIELD_DIMENSIONS
- A new scheme provides the information about dimension of column or SP parameter with array data type.
- Schema identifier: {769A128E-04BF-11D8-AE8B-00A0C907DB93}
-
Schema columns:
- RELATION_CATALOG [WSTR]
- RELATION_SCHEMA [WSTR]
- RELATION_NAME [WSTR]
- FIELD_NAME [WSTR]
- FIELD_GUID [GUID]
- FIELD_PROPID [UI4]
- DIMENSION [UI4]. Numbering begins at one
- LOWER_BOUND [I4]
- UPPER_BOUND [I4]
- Restriction columns: RELATION_CATALOG, RELATION_SCHEMA, RELATION_NAME, FIELD_NAME.
- Default sort order: 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
Output:
Publish date: 2011-03-03. Copyright: IBProvider. This material may be reproduced on other web sites, without written permission but link https://www.ibprovider.com/eng required.
