点击或拖拽改变大小

Functions.CursorSetProp 方法

X#
-- todo --
指定X#表或游标的属性设置。

命名空间:  XSharp.VFP
程序集:  XSharp.VFP (在 XSharp.VFP.dll 中) 版本:2.22 GA
语法
 FUNCTION CursorSetProp(
	cProperty,
	eExpression,
	uArea
) AS USUAL CLIPPER
查看代码

参数

cProperty (Optional)
类型:__Usual
指定要设置的表或游标属性。对于X#表,只能指定Buffering属性。
eExpression (Optional)
类型:__Usual
指定用cProperty指定的属性的值。如果省略eExpression,属性将设置为其默认值。
remarks部分的表列出了可以为cProperty指定的属性,以及eExpression可以采用的值的描述。
uArea (Optional)
类型:__Usual
指定要为其设置属性的表或游标的别名,或指定要为其设置属性的表或游标的工作区。
如果为uArea指定0,CursorSetProp( )将为所有后续表或游标设置环境设置。
缓冲不适用于隐式打开的表,例如使用SQL Insert/Update/Delete命令。

返回值

类型:__Usual
逻辑数据类型。如果X#成功设置了您指定的属性,CursorSetProp( )返回True (.T.)。 如果无法设置您指定的属性,X#会生成错误。
备注
CursorSetProp( )的Buffering属性的设置决定了X#如何执行记录锁定和更新缓冲。 有关记录锁定和更新缓冲的更多信息,请参见如何:缓冲数据。
CursorSetProp( )的WhereType属性的设置决定了如何对远程表执行更新。 有关远程表更新的更多信息,请参见开发数据库。
您可以使用CursorSetProp( )来覆盖游标的SqlSetProp( )函数中的FetchSize属性。 默认情况下,此属性从游标的连接句柄继承。
使用CursorGetProp( )返回X#表或为表创建的游标的当前属性设置。
如果在没有可选uArea参数的情况下发出CursorSetProp( ), 则属性设置将指定为当前选定工作区中的打开表或游标。
属性eExpression值
AllowSimultaneousFetch 适用于使用远程视图、共享连接和使用ODBC创建的游标。
.T. - 允许共享连接的类似配置的游标同时获取行。
.F. - 不允许共享连接的类似配置的游标同时获取行。
AutoIncError .T. - 在尝试插入或更新使用自动递增字段值的字段中的值时生成错误消息。
.F. - 不生成错误消息,但在尝试插入或更新使用自动递增字段值的字段中的值时不使用指定的值, 而是使用适当的递增值。
适用于游标和会话。
BatchUpdateCount* 指定要发送到远程数据源的缓冲表的更新语句数。 默认值为1。调整此值可以在使用自动更新时大大提高更新性能。
Buffering 1 – 关闭行和表缓冲。记录锁定和数据写入与早期FoxPro版本相同。(默认)
2 – 开启悲观行缓冲。
3 – 开启乐观行缓冲。
4 – 开启悲观表缓冲。
5 – 开启乐观表缓冲。除了1(关闭)之外,所有缓冲模式都必须将Set multilocs设置为on
CompareMemo .T. - 在更新的Where子句中包含Memo、General或Picture类型的备注字段。
.F. – 不在更新的Where子句中包含备注字段。
适用于使用自动更新时。
FetchAsNeeded .T. – 仅在需要时获取记录,例如当记录指针移动到尚未获取的行时。
.F. – 在空闲时获取额外数据。
备注 备注:
当禁用渐进式获取(FetchSize为-1)时,FetchAsNeeded不适用。
FetchMemo* .T. – 随视图结果获取备注字段。
.F. – 不随视图结果获取备注字段。
FetchSize* 指定从远程表结果集渐进获取的行数。默认值为100行。 将FetchSize设置为–1将检索完整的结果集,受MaxRecords设置的限制。
备注 备注:
渐进式获取会保持连接直到检索所有行。 如果ShareConnection为True (.T.),在使用FetchSize时要谨慎编码。
KeyFieldList 指定游标的主要字段的逗号分隔列表。没有默认值。 使用自动更新时,必须包含字段名列表才能进行更新。
MapBinary .T. - 在会话级别,SQL Pass-Through将SQL_BINARY、SQL_VARBINARY和 SQL_LONGVARBINARY ODBC类型映射到VarbinaryBlob数据类型。
对于远程视图,Create SQL View命令将SQL_LONGVARBINARY ODBC数据源类型映射到Blob类型, 当数据源中相应列的精度小于或等于254字节时,将SQL_BINARY和SQL_VARBINARY ODBC数据源类型映射到Varbinary类型。 当精度大于254字节时,这些类型映射到Blob类型。
.F. - SQL Pass-Through将SQL_BINARY和SQL_VARBINARY ODBC类型映射到Character类型。(默认)
对于远程视图,Create SQL View命令将SQL_BINARY和SQL_VARBINARY ODBC数据源类型映射到Memo类型。
备注 备注:
对于uArea设置为0,MapBinary是读/写的;对于SQL Pass-Through游标,是只读的;对于表游标 (uArea等于或大于1),是无效的。
MapVarchar .T. - 在会话级别,SQL Pass-Through将SQL_WVARCHAR和SQL_VARCHAR ODBC类型映射到Varchar类型。
对于远程视图,Create SQL View命令将SQL_WVARCHAR和SQL_VARCHAR ODBC数据源类型映射到Varchar类型。
.F. - SQL Pass-Through将SQL_WVARCHAR和SQL_VARCHAR ODBC类型映射到Character类型。(默认)
对于远程视图,Create SQL View命令将SQL_WVARCHAR和SQL_VARCHAR ODBC数据源类型映射到Character类型。
备注 备注:
对于uArea设置为0,MapVarchar是读/写的;对于SQL Pass-Through游标,是只读的;对于表游标(uArea等于或大于1),是无效的。
MaxRecords* 指定返回结果集时获取的最大行数。默认值为– 1,返回所有行。 值为0指定执行视图但不获取任何结果。
ParameterList指定视图参数和参数类型的分号分隔列表。仅适用于视图。
Prepared .T. - 为后续的Requery( )函数调用准备SQL语句。
.F. - 不为后续的Requery( )调用准备SQL语句。(默认)
Requery( )用于再次检索SQL视图的数据。 有关准备SQL语句的更多信息,请参见SqlPrepare( )函数。
Refresh 为当前数据会话中的单个游标指定数值刷新值,或为新打开的游标指定初始刷新值。
使用Set DATASESSION命令选择特定的数据会话,并使用uWorkArea参数指定特定的游标。 使用uArea = 0更改所有新打开游标的初始刷新值。 已经打开的任何游标不会受到新刷新设置的影响。
Set Refresh命令允许您指定全局刷新值。默认情况下,CursorSetProp( ) Refresh设置为-2, 表示使用当前的全局Set Refresh值。全局Set Refresh值通过其第二个参数nSeconds2指定。
您可以将CursorSetProp( ) Refresh设置设为与Set Refresh中的nSeconds2参数相同的值。
备注 备注:
如果Set Refresh命令中的nSeconds2参数当前设置为零,则会忽略CursorSetProp( ) Refresh设置。
SendUpdates .T. – 指定在使用视图进行更新时发送SQL更新查询以更新表。
.F. – 指定不发送SQL更新查询以更新表。
Tables 指定远程表名称的逗号分隔列表。没有默认值。 使用自动更新时,必须包含表名列表才能进行更新。
UpdateableFieldList 指定视图中字段的逗号分隔列表。此列表可以包括来自本地和远程表的字段。 使用自动更新时,必须包含字段列表才能进行更新。
UpdateNameList 指定远程字段名称和分配给游标的本地字段名称的逗号分隔列表。 使用此选项为游标中具有无效Visual FoxPro字段名的字段指定有效的Visual FoxPro名称。
UpdateType 1 – 用新数据更新旧数据。(默认)
2 – 通过删除旧数据并插入新数据来更新。
UseMemoSize* 指定结果列返回为备注字段的最小字节大小。 例如,如果列结果的宽度大于UseMemoSize的值,则列结果将存储在备注字段中。 UseMemoSize可以从1到255字节不等。
默认值为255字节。
WhereType 用于更新远程表的Where子句。WhereType可以采用以下值:
1或DB_KEY(来自Foxpro.H)。用于更新远程表的Where子句仅包含 由KeyFieldList属性指定的主键字段。
2或DB_KEYANDUPDATable(来自Foxpro.H)。用于更新远程表的Where子句 包含由KeyFieldList属性指定的主键字段和任何可更新字段。
3或DB_KEYANDMODIFIED(来自Foxpro.H)。用于更新远程表的Where子句 包含由KeyFieldList属性指定的主键字段和任何其他已修改的字段。(默认)
4或DB_KEYANDTIMESTAMP(来自Foxpro.H)。用于更新远程表的Where子句 包含由KeyFieldList属性指定的主键字段和时间戳的比较。
* 此属性主要用于远程视图;对本地视图设置它没有效果。但是,您可以为将要升级的本地视图预设此属性。
示例
当打开游标时,AutoIncError属性的默认值从会话默认值读取, 该值是当前默认数据会话设置。以下示例展示了如何通过指定0(默认会话)作为最后一个参数来为每个会话设置默认AutoIncError值:
X#
1CursorSetProp("AutoIncError", .T., 0)
打开新的私有数据会话或游标时使用默认会话。以下示例展示了如何通过使用uArea参数作为最后一个参数来为每个表设置游标或表AutoIncError设置:
X#
1CursorSetProp("AutoIncError", .F. , uArea )
以下示例演示了如何使用CursorSetProp( )启用乐观表缓冲。将MultiLocks设置为 ON,这是表缓冲的必要条件。打开"testdata"数据库中的"Customer"表,并使用CursorSetProp( ) 将缓冲模式设置为乐观表缓冲(5)。显示一个消息框,显示操作结果。
X#
 1Close Databases
 2Clear
 3Set MultiLocks ON
 4Open Database (HOME(2) + 'data\testdata')
 5Use Customer     // 打开Customer表
 6* 设置缓冲模式并存储逻辑结果
 7lSuccess=CursorSetProp("Buffering", 5, "Customer")
 8
 9IF lSuccess = .T.
10    =MessageBox("操作成功!",0,"操作状态")
11ELSE
12    =MessageBox("操作未成功!",0,"操作状态")
13ENDIF
参见