发表于:2002-02-07 21:24:00
6楼
SQL查询
概述
ForceControl SQL访问功能是为了实现ForceControl 和其它ODBC数据库之间的数据传送。SQL访问管理器可以建立数据表模板和数据绑定表。通过SQL函数可以建立同ODBC数据库连接,并可对数据库进行操作。为了与ODBC数据库建立连接,需要ODBC数据库的描述信息,要建立数据表,需要知道表中包含的字段名,字段数据类型等信息,该信息由数据表模板定义,而向数据表中添加记录,就要知道各字段与变量间的对应关系,这是由数据绑定表决定的。
下面介绍几个常用术语:
ODBC数据库的描述信息
描述信息因ODBC数据库的种类而异,该描述信息指明了数据源名
字,数据驱动程序类型,数据库所在位置,用户名,口令,数据库文
件记录访问等级等信息。该信息可以通过“动作定义”对话框中的数
据源选择按钮得到。
数据表模板
定义了数据表的结构,如字段组成,字段类型等。可以通过该模板
创建一个数据表或多个数据表。
绑定表(数据表绑定)
数据表绑定是指将数据表中的字段(列)与ForceControl中的变量
建立对应关系,插入或更新记录时各字段将取对应的ForceControl
中的变量的当前值。
SQL函数可以在ForceControl 的任意脚本中调用。这些函数用来创建表格,插入/更新/删除记录,查询记录等。
使用SQL的一般步骤
1.通过SQL管理器(导航器中选择SQL管理器)
1) 建立数据表模板
如果不需要创建数据表,该步可跳过。
2) 建立绑定表
2.在脚本中定义查询
1) 建立连接
2) 建立数据表/选择记录(在已有的表中查询)
3) 插入/更新/删除记录或改变记录当前位置
.
.
.
最后要断开与数据库的连接。
数据表模板
数据表模板对应于数据库(DBMS)中的数据表结构,该模板中定义了数据表中包括的字段,以及各字段的属性。用于SQLCreateTable()函数。在导航器中选择“SQL管理器/数据表模板”
表格模板名称最大长度为 32 个字符。
1)在“字段名”框中,输入表格模板的列名。字段名最多为 30 个字符长。
2) 在“字段类型”框中,选择数据类型。数据类型选择依所用的数据库
而变化。
3)选择“索引类型”如下:
唯一 - 该列内每一值必须为唯一的。
非唯一 - 在该列内的值不必是唯一的。
无 - 没有索引。
4)选择“允许空值输入”来允许输入空数据到这一字段。
5). 单击“添加一行”来添加项目。
6). 单击“删除一行”来删除表格模板中所选项目。
7). 单击“修改一行”来修改表格模板中所选项目。
8). 单击“确定”来保存您的新表格模板配置并关闭对话框。
9) 您可以单击“保存”来保存您的设置而不关闭对话框。
修改数据表模板
您可以在导航器中选择您想改变的数据表模板名称,然后单击右键选择“修改”,
在对话框中修改所需项。
单击“确定”来保存您的修改并关闭对话框。
数据表绑定
数据表绑定是将数据表中的字段与DRAW中的变量相关联。要建立数据表绑定,您可以在导航器中选择“SQL管理器/数据表绑定”,将出现如下对话框:
在“绑定列表名”框中,输入绑定列表名称。绑定表名称长度最多为 32 个字符。新绑定表将数据表的字段与DRAW中的变量相链接。
1) 在变量名输入框中输入变量名称,或者双击输入框,在弹出的变量选择框中选择所需变量。
2)在“字段名称”框,输入列名称。
3)单击“添加一行”来添加项目。
3) 单击“删除一行”删除绑定表中所选择的项目。
4) 单击“插入一行”在绑定表中所选择的项目之前插入一行。
5)单击“确定”来保存您的绑定表,并关闭对话框。
6)您可以单击“保存”来保存您的设置而不关闭对话框。
修改绑定表
您可以在导航器中选择您想改变的绑定表名称,然后单击右键选择“修改”.
在对话框中修改所需项。
单击“确定”来保存您的修改并关闭对话框。
SQL函数
ForceControl提供了一组SQL函数,以便您使用脚本语言访问其它数据库(DBMS)。SQL函数是同步执行的的,在SQL函数返回之前,VIEW不能做任何事情。
SQL函数的一般格式如下:
SQLXXXX(参数1,参数2,…)
SQLConnect( ConnectID,DataSourceDesc)
说明
连接到指定的数据库
参数
ConnectID 整型,数据源标识,为返回值,该值将用于其它SQL函数。
DataSourceDesc 字符串,数据源描述。数据源描述可以通过“数据源“按钮得到。
备注
数据源使用完后,使用SQLDisconnect来断开连接
示例
SQLConnect(ConnectID,"DSN=MS Access 97
Database;DBQ=c:\FCSql\TEST1.mdb;DefaultDir=c:\FCSql\test;DriverId=25;FIL=MSAccess;MaxBufferSize=512;PageTimeout=5;UID=admin;");
第二个参数可以通过点击SQL连接来选择。
SQLDisconnect(ConnectID)
说明
关闭数据库连接。
参数
ConnectID 整型,数据源标识。由SQLDisconnect调用返回。
备注
数据源使用完后,应该使用该函数来断开连接。
示例
SQLDisconnect(ConnectID);
参数ConnectID由SQLConnect调用得到。
SQLCreateTable(ConnectID, DataTableName, TableTemplateName)
说明
使用表格模板在数据库中创建数据表
参数
ConnectID 数据源标识,由SQLConnect调用返回。
DataTableName 字符串,新建的数据表名称。
TableTemplateName字符串,使用的数据表模板名称。数据表模板规
定了数据表中各字段名称及属性。
备注
示例
SQLCreateTable(ConnectID,"TAB1", "A")
参数ConnectID由SQLConnect调用得到。
数据表名为”TAB1”
数据表模板为”A”,数据表模板”A”必须在SQL管理器中事先建立。
SQLClearTable(ConnectID, DataTableName);
说明
删除数据表中所有记录,但不删除数据表
参数
ConnectID 数据源标识,由SQLConnect调用返回。
DataTableName 字符串,新建的数据表名称。
备注
该函数只删除记录,不删表。
示例
SQLClearTable(ConnectID,"Tab1");
参数ConnectID由SQLConnect调用得到。
数据表名为”TAB1”
SQLDropTable(ConnectID, DataTableName)
说明
删除数据表
参数
ConnectID 数据源标识,由SQLConnect调用返回。
DataTableName 字符串,新建的数据表名称。
备注
如果表中记录不为空,操作将失败。
示例
SQLDropTable(ConnectID,"Tab1");
参数ConnectID由SQLConnect调用得到。
删除的数据表名为”Tab1”
SQLInsert(ConnectID, DataTableName, BindTableName)
说明
使用捆绑数据表中指定的变量的当前值在数据表中插入一个新记录。
参数
ConnectID 数据源标识,由SQLConnect调用返回。
DataTableName 字符串,数据表名称。
BindTableName字符串,使用的捆绑表名称。
备注
捆绑数据表定义了DRAW变量和数据库表中的字段间的对应关系。
示例
SQLInsert(ConnectID,"Tab1", "A");
参数ConnectID由SQLConnect调用得到。
数据表名为”TAB1”。
数据捆绑表为”A”, 捆绑表”A”必须在SQL管理器中事先建立。
SQLUpdate(ConnectID, DataTableName, BindTableName,
WhereExpr )
说明
使用捆绑数据表中指定的变量的当前值更新数据表中当前记录。
参数
ConnectID 数据源标识,由SQLConnect调用返回。
DataTableName 字符串,数据表名称。
BindTableName字符串,使用的捆绑表名称。
WhereExpr字符串,选择表达式,只有符合该条件的记录被更新。
备注
捆绑数据表定义了DRAW变量和数据库表中的字段间的对应关系。
WhereExpr 参数为空” ”,时将更新所有记录。
示例
1)SQLUpdate(ConnectID,"Tab1", "A","");
参数ConnectID由SQLConnect调用得到。
数据表名为”Tab1”。
数据捆绑表为”A”, 捆绑表”A”必须在SQL管理器中事先建立。
条件为空“”表示更新所有记录。
2)SQLUpdate(ConnectID,"Tab1", "A","A = 50");
只更新字段A等于50的记录。
SQLDelete(ConnectID, DataTableName, WhereExpr)
说明
删除一个或多个记录。
参数
ConnectID 数据源标识,由SQLConnect调用返回。
DataTableName 字符串,数据表名称。
WhereExpr字符串,选择表达式,只对符合该条件的记录进行操作。
备注
WhereExpr 参数为空” ”,时将删除所有记录。
示例
1) SQLDelete(ConnectID,"Tab1", "");
参数ConnectID由SQLConnect调用得到。
数据表名为”Tab1”。
条件为空""表示删除所有记录。
2) SQLDelete (ConnectID,"Tab1","A = 50");
只删除字段A等于50的记录。
SQLSelect(ConnectID,DataTableName, WhereExpr)
说明
在数据库中选择符合条件的记录,该函数返回一数据集,可以使用如
下函数SQLFirst(),SQLLast(),SQLNext(),SQLPrev()遍历该数据集
中的记录。
参数
ConnectID 数据源标识,由SQLConnect调用返回。
DataTableName 字符串,数据表名称。
WhereExpr字符串,选择表达式,只有符合该条件的记录被选中。
备注
示例
1) SQLSelect(ConnectID,"Tab1","");
参数ConnectID由SQLConnect调用得到。
数据表名为”Tab1”。
条件为空""表示选择所有记录。
2) SQLSelect (ConnectID,"Tab1","A = 50");
只选择字段A等于50的记录。
3)SQLSelect(ConnectID,"Tab1" ,"A > 50 ORDER BY A DESC");
选择字段A大于50的记录,并以降序排序。
SQLStatistics(ConnectID,DataTableName, Flag,
Field, Value, WhereExpr)
说明
在数据库中选择符合条件的记录的统计信息。
参数
ConnectID 数据源标识,由SQLConnect调用返回。
DataTableName 字符串,数据表名称。
Field 字符串,欲求统计值的字段名称。
Flag 统计标识符,含义如下:
0:平均值。
1:合计。
2:最小值。
3:最大值。
4:记录总数。
Value 浮点数,返回的统计信息。
WhereExpr字符串,选择表达式,只有符合该条件的记录被选中。
备注
欲求统计值的字段必须为数值型值。
示例
1) SQLStatistics(ConnectID,"Tab1",0,"A",RtnValue,"");
参数ConnectID由SQLConnect调用得到。
数据表名为”Tab1”。
0:表示平均值。
条件为空""表示选择所有记录。
返回的平均值在变量RtnValue中。
2) SQLStatistics(ConnectID,"Tab1",1,"A",RtnValue," ");
字段A的合计值。
1:表示合计值。
返回的合计值在变量RtnValue中。
SQLUse(ConnectID,DataTableName)
说明
在数据库中选择一数据集, 数据集是曾经用SQLSelect函数生成的.
参数
ConnectID 数据源标识,由SQLConnect调用返回。
DataTableName 字符串,数据表名称。
备注
该函数改变当前使用的数据集。该函数返回后,所要的记录移动操作,
都变成对该数据集的操作。
示例
SQLUse(ConnectID,"Tab1");
参数ConnectID由SQLConnect调用得到。
数据表名为”Tab1”。
SQLFirst()
说明
选择由SQLSelect()选择的数据集中的第一条记录。
示例
SQLFirst();
SQLLast()
说明
选择由SQLSelect()选择的数据集中的最后一条记录
示例
SQLLast();
SQLNext()
说明
选择由SQLSelect()选择的数据集中的下一条记录
示例
SQLNext();
SQLPrev()
说明
选择由SQLSelect()选择的数据集中的上一条记录
示例
SQLPrev();
SQLRowCount(RowCount)
说明
SQLSelect()选择的数据表中记录总数
参数
RowCount 整型,返回的记录数。
示例
SQLRowCount(RowCount);
返回的行数(记录个数)在RowCount中。
SQLExecute(ConnectID ,SqlCommand)
说明
执行一条SQL语句。
参数
ConnectID 数据源标识,由SQLConnect调用返回。
SqlCommand 字符串,SQL命令。
示例
SQLExecute(ConnectID,"Select * From tab1");
参数ConnectID由SQLConnect调用得到。
注意:选择的数据集不能被显示,遍历。
SQLLastError(strErrorDesc)
说明
取得SQL函数的最后一条错误信息。
参数
strErrorDesc字符串,错误描述。
示例
SQLExecute(ErrorMes);
返回的错误信息在参数ErrorMes中。
SQLMoveTo(RowNum)
说明
移动到当前记录集中指定的记录。
参数
RowNum记录号。
示例
SQLMoveTo(2);
SQLDisplay(nLineCount)
说明
查看由SQLSelect()选择的数据集中的记录。
参数
RowNum要查看的记录数。
示例
SQLDisplay(10);
显示从当前光标位置以下10条记录。
SQLManagerDSN
运行微软ODBC管理器设置程序。可以用来增加,删除和修改所有的数据源名字
BOOL SQLSelDatSour (DataSourceDesc)
说明
用于运行时动态得到数据源描述。执行该函数时会出现数据源选择
框,在该选择框中指定你所要连接的数据源。
参数
DataSourceDesc 字符串变量,为返回的数据源描述。该描述可以用
于SQLConnect。
返回值 1表示成功,0 失败。
示例
SQLSelDatSour (DataSource).