精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VFP>>〖数据处理〗>>动态建立SQL复合查询——VFP5示例详解(-

主题:动态建立SQL复合查询——VFP5示例详解(-
发信人: 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]

[关闭][返回]