发信人: fbilo()
整理人: hunter__fox(2002-03-16 22:15:50), 站内信件
|
本示例是VFP5的solution示例应用程序中databases下的View/query目录下的int eractively build a sql statement子程序的详解。
交互式建立一个SQL声明
本示例可以作为一个复合查询的典型示例。
1.设置组合框的数据源为表中字段名
在本示例中组合框Cbofield1、Cbofield2的数据源和控制源都没有设置值,而是 通过在表单的Load events、Init events中使用Afield()函数来加载。在表 单中建立了两个自定义属性nFields、astructure(1,2)。
nFields用来放置组合框的数据源表中字段的数目。
Astructure(1,2)数组用来放置AFIELD()函数生成的包含表结构的数组。
Afields()函数语法:
AFIELDS(ArrayName [, nWorkArea | cTableAlias])
ArrayName表示数组名,如果已存在该数组,则把表结构信息放在该数组中,如 果没有该数组,则创建该数组。
cTableAlias表示表别名。如果省略,则使用当前工作区中的表别名。
Afields()函数定义一个储存表结构信息的数组,并返回字段的数目。在该数 组的第一列中放置字段的名称,在第二列中放置字段的数据类型。
在本示例中,首先通过表单的Load事件建立这个放置字段结构的数组,并把字段 数目赋值给表单的自定义属性(变量)nField:
THIS.Alias = ALIAS()
THIS.nFields = AFIELDS(THIS.aStructure)
我们看到,这个aStructure数组就是表单的自定义属性aStructure(1,2)。
然后,在表单的init事件中通过下面的循环用additem方法把字段名称加入组合 框以供用户在查询时使用。
THIS.cboField1.clear
THIS.cboField2.clear
FOR nLoop = 1 TO THIS.nFields
IF !THIS.aStructure[nLoop,2]$"MGO"
THIS.cboField1.AddItem(THIS.aStructure[nLoop,1])
THIS.cboField2.AddItem(THIS.aStructure[nLoop,1])
ENDIF
ENDFOR
其中,IF !THIS.aStructure[nLoop,2]$"MGO"语句用来判断该字段的数据类型是 否不属于Memo、Object、General 类型。
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.101.254]
|
|