组态王 KINGVIEW 6X
组态王历史数据库及其他关系数据库
常见问题解答
北京亚控科技发展有限公司
2011年02月
“数据库”常见问题解答
目 录
1. 组态王历史数据库 ................................................................................................ 1
1.1 组态王保存的历史数据,我希望对其进行修改,可以吗? .................. 1
1.2 为什么我的软件在运行时提示“历史库:历史库服务程序没有启动”?
..................................................................................................................................... 1
1.3 我使用了自己编写的VB(VC)程序,希望能调用组态王保存的历史数据
文件,请问可以实现吗? ......................................................................................... 1
1.4 我想使用组态王提供的KingReport文件进行数据查询,为什么打开时提
示有错误发生呢? ..................................................................................................... 1
1.5 请问目前版本的组态王软件历史库记录文件格式是什么? .................. 1
1.6 请问如何访问组态王历史库中的数据?组态王中的历史库文件是否可
以使用其他应用程序打开? ..................................................................................... 2
1.7 组态王历史库文件是否可以修改、删除?如果不慎删除后能否恢复?
..................................................................................................................................... 2
1.8 在组态王软件的各个版本中历史数据存储格式有哪些区别? .............. 2
1.9 在组态王软件中变量的历史记录方式有哪几种? .................................. 2
1.10 在控制面板→管理工具→服务中找不到HistorySvr服务,且在组态王
中无法查询历史数据,怎么办? ............................................................................. 3
1.11 组态王质量戳有哪几种?各代表什么含义? ........................................ 4
1.12 如何实现将组态王历史库中的数据导出来? ........................................ 5
1.13 组态王的历史库容量有多大?历史信息能存多少天的? .................... 5
1.14 在组态王运行环境中能否动态修改历史数据记录的存储天数? ........ 5
1.15 在组态王数据词典中设置了变量的历史记录属性,但是变量无历史记
录,为什么? ............................................................................................................. 5
2. 其他数据库 ............................................................................................................ 5
2.1 组态王采集的数据能保存到第三方的数据库如SQL、ORACLE等吗?
..................................................................................................................................... 5
2.2 我希望组态王将采集的数据保存到网络中的另一台计算机上的SQL或
ORACLE等数据库,如何操作? ............................................................................. 5
2.3 请问组态王软件与SQL数据库交互的一般配置过程如何? .................. 6
北京亚控科技发展有限公司 i
“数据库”常见问题解答
2.4 我采用组态王软件对SQL数据库写数据,写入没有成功,请问需要注
意什么问题? ............................................................................................................. 6
2.5 在建立组态王和ACCESS数据库连接时,开始一分多钟连接是成功的,
可是一会在组态王的信息窗口就会显示“数据库错误:客户端工作过多Driver's
SOLSetConnectAttr faild”然后就是连接失败。请问这是什么原因? .................. 6
2.6 我采用组态王软件对SQL数据库进行数据交换,请问如何通过组态王
对SQL数据库中的数据进行更新? ......................................................................... 7
2.7 在组态王中使用SQLSelect函数查询数据库记录时如何得到符合条件
的记录的数量? ......................................................................................................... 7
2.8 在组态王中使用KVADODBGrid控件对数据库查询后,将查询的数据
打印出来? ................................................................................................................. 7
2.9 在组态王运行系统下如何删除数据库中的记录? .................................. 7
2.10 在组态王中使用KVADODBGRID控件进行数据库查询时,能否对查
询出来的数据进行修改,同时将数据更新到数据库中? ..................................... 7
2.11 在组态王中使用KVADODBGRID控件进行数据库查询时,能否将查
询出来的数据保存为其他格式的文件? ................................................................. 8
2.12 在组态王中使用KVADODBGRID控件进行数据库查询时,如何得到
指定单元格中的内容? ............................................................................................. 8
2.13 使用SQLInsert函数向Access数据库存储数据时,此函数使用完全正
确,但是信息窗口总是提示语法错误,为什么? ................................................. 9
2.14 一个记录体里面两个相同的字段名称对应组态王两个不同的变量是
否可以? ..................................................................................................................... 9
2.15 如果Access数据库里的两个
完全一样,那么组态王在插入记录的
时候能用同一个记录体吗? ..................................................................................... 9
2.16 如何判断组态王与外部数据库的连接状态? ........................................ 9
2.17 组态王能同时对两个Access数据库进行操作吗? ................................ 9
2.18 在组态王中能否对Access数据库进行压缩,该如何实现? ................ 9
2.19 两台装有组态王的计算机通过网络ODBC连接同一个Access数据库
时,不能同时连接数据库,为什么? ................................................................... 10
2.20 在组态王中使用KVADODBGRID控件进行数据库查询时,能否实现
打印预览的功能? ................................................................................................... 10
北京亚控科技发展有限公司 ii
“数据库”常见问题解答
2.21 在组态王中使用KVADODBGRID控件进行数据库查询时,能否实现
多个表联合查询的功能? ....................................................................................... 10
2.22 在使用KVADODBGRID控件来查询数据库的时候,如何在运行时修
改控件中显示数据的小数点位数? ....................................................................... 10
2.23 在组态王中使用KVADODBGRID控件进行数据库查询时,能否在运
行时进行表格的选择? ............................................................................................. 10
2.24 在组态王中使用KVADODBGRID控件进行数据库查询时,如何实现
字符串查询? ........................................................................................................... 11
2.25 在组态王中使用KVADODBGRID控件进行数据库查询时,如何实现
相似查询? ............................................................................................................... 11
2.26 在组态王中使用KVADODBGRID控件进行数据库查询时,如何实现
时间段的查询? ....................................................................................................... 11
2.27 在组态王中使用KVADODBGRID控件进行数据库查询时,如何实现
查询结果的排序? ................................................................................................... 12
2.28 在组态王中使用KVADODBGRID控件进行数据库查询时,如何删除
控件中显示的数据? ............................................................................................... 12
2.29 在组态王中使用KVADODBGRID控件进行数据库查询时,如何对控
件的数据进行刷新? ............................................................................................... 12
2.30 在组态王中使用KVADODBGRID控件进行数据库查询时,如何得到
当前所选单元格中的内容? ................................................................................... 12
2.31 在组态王中使用KVADODBGRID控件进行数据库查询时,如何动态
地添加控件的字段? ............................................................................................... 12
2.32 在组态王中如何实现在access数据库中始终保存一个月的历史数据,
自动删除一个月之前的历史数据的功能? ........................................................... 13
2.33 在组态王中使用KVADODBGrid控件时如何对数据库中的日期类型
字段进行查询? ....................................................................................................... 14
2.34 组态王的记录体能否直接引用“远程变量”,实现数据库的查询与存
储? ........................................................................................................................... 17
2.35 Oracle数据库表字段有Date类型字段时,利用SQL函数需要注意问题:
................................................................................................................................... 17
2.36 组态王查询SQL Server 2005 数据库中字段内容为空(NULL)的记录,
查询条件怎么写? ................................................................................................... 17
北京亚控科技发展有限公司 iii
“数据库”常见问题解答
2.37 组态王查询Access数据库中字段内容为空(NULL)的记录,查询条
件怎么写? ............................................................................................................... 17
2.38 利用KVADODBGIRD来查询SQL Server 2005 数据库,查询条件设置
成:控件名.where="日期时间=#2010-12-28 10:21:23#";“日期时间”字段是日期
时间类型,查询失败?但同样的方式查询Access数据库是没问题的?............ 17
2.39 利用KVADODBGrid控件来查询Access数据库,有两个画面分别用
KVADODBGrid控件查询数据库里不同的表,查询条件写的都一样,都是按照
时间来查询,其中一个表查询成功,另外一个表查询失败? ........................... 18
北京亚控科技发展有限公司 iv
“数据库”常见问题解答
1. 组态王历史数据库
1.1 组态王保存的历史数据,我希望对其进行修改,可以吗?
不可以,组态王保存的历史数据文件不开放用户来修改。
1.2 为什么我的软件在运行时提示“历史库:历史库服务程序没有启动”?
出现这种提示,一般情况下是用户的软件安装出了问题,建议用户重新安装组态王
软件。
如果重新安装组态王软件此提示依然存在,请按如下操作进行处理:
进入组态王的软件安装目录(默认情况下为“C:\Program Files\Kingview”),找到
exe 程序 HistorySvr.exe。
使用鼠标点击微软系统的“开始-程序-运行”,在对话框中输入"C:\Program
Files\Kingview\HistorySvr.exe" -run(具体路径要根据你的安装路径来定),按回车键运
行即可解决此问题。
1.3 我使用了自己编写的 VB(VC)程序,希望能调用组态王保存的历史数据文件,请问可
以实现吗?
组态王针对用户的这种需求,提供了一个动态库连接接口文件:AccessHist.dll,此
文件中提供了对组态王数据库进行读取的接口函数,通过这些函数就可以实现对组态王
数据库的检索。
详情请参考组态王使用手册的附录 B。
1.4 我想使用组态王提供的 KingReport文件进行数据查询,为什么打开时提示有错误发
生呢?
KingReport 文件的宏命令语言中使用了 Microsoft Common Dialog Control 的控件,
如果你的计算机上没用此控件,那么在打开此文件启动宏时就会报错,所以建议你在使
用此文件前安装一下 Office 或 VB 软件程序 。
1.5 请问目前版本的组态王软件历史库记录文件格式是什么?
目前版本的组态王历史库记录文件包括以下三种文件格式:
*.tmp :临时数据文件,存储最近一段时间的原始数据。文件名格式为
北京亚控科技发展有限公司 1
“数据库”常见问题解答
projectYYYYMMDDHHXX.tmp,如 project200712261200.tmp ,YYYY—年,MM—月,
DD—日,HH—小时,XX—文件序号;
*.std:压缩的原始数据文件,保存的是一天内的压缩数据。文件名格式为
projectYYYYMMDDXX.std,如 project2007102500.std;
*.ev:特征值文件,存放将原始数据根据特征值算法过滤出的部分数据。文件名格
式为 projectYYYYXX.ev,如 project200700.ev;
1.6 请问如何访问组态王历史库中的数据?组态王中的历史库文件是否可以使用其他应
用程序打开?
组态王中的历史库文件是组态王自定义的文件格式,所以无法使用其他应用程序打
开,但是可以在 Excel 中利用 KingReport 工具(在 Kingview 目录下)来查询历史库中的
时间、数据、质量戳或者通过组态王提供的报表控件、历史趋势曲线来获取历史库中的
数据。
注:在 Excel 中利用 KingReport 工具来查询历史库数据的详细配置请参考组态王帮
助文档。
1.7 组态王历史库文件是否可以修改、删除?如果不慎删除后能否恢复?
组态王历史库文件用户是不能够修改的,只能够进行查询。
组态王历史库文件是以文件格式保存在计算机里的,所以可以删除掉的,但是要注
意如果一旦删除此文件,将无法查询到该时期的历史数据。
如果不慎将历史库文件删除的话,将无法进行恢复。
1.8 在组态王软件的各个版本中历史数据存储格式有哪些区别?
之前的版本 (历史数据文件后缀.rec)
6.5 的第一版(6.5.0.X) 不支持特征值文件(历史数据文件后缀.tmp、std)
6.5 的第二版(6.5.1.X)之后,支持特征值文件(历史数据文件后缀.tmp、.std、.ev)
历史数据文件后缀名为非 tmp、std 的组态王版本,升级后历史数据不能进行查询,
6.5 版本之后升级后原有历史数据可以查询到。
1.9 在组态王软件中变量的历史记录方式有哪几种?
不记录:该变量值不进行历史记录;
定时记录:无论变量变化与否,系统运行时按定义的时间间隔将变量的值记录到历
北京亚控科技发展有限公司 2
“数据库”常见问题解答
史库中。最小定义时间间隔单位为 1 分钟,这种方式适用于数据变化缓慢的场合;
数据变化记录:系统运行时,变量的值发生变化,而且当前变量值与上次的值之间
的差值大于设置的变化灵敏度时,该变量的值才会被记录到历史记录中。这种记录方式
适合于数据变化较快的场合;
每次采集记录:系统运行时,按照变量的采集频率进行数据记录,每到一次采集频
率,记录一次数据。该功能只适用于 IO 变量,内存变量没有该记录方式。该功能应慎
用,且意义不大。
1.10 在控制面板→管理工具→服务中找不到 HistorySvr服务,且在组态王中无法查询历
史数据,怎么办?
A:卸载组态王软件,并以系统管理员身份登陆重新安装组态王软件。
B:先在组态王安装目录下(一般是 C:\Program Files\kingview)找到 HistorySvr.exe
可执行文件。
鼠标点击系统的“开始-程序-组态王6X-工具-服务注册工具”,如图1.10.1所示,
图 1.10.1
用鼠标点击“Search”按钮,如图 1.10.2 所示,找到 HistorySvr.exe 历史服务程序,
用鼠标双击窗口中“C:\Program Files\kingview\HistorySvr.exe”,在 status 里会显示服务
目前状态,然后再用鼠标点击“Register”按钮,完成服务注册,如图 1.10.3 所示。
北京亚控科技发展有限公司 3
“数据库”常见问题解答
图 1.10.2
图 1.10.3
1.11 组态王质量戳有哪几种?各代表什么含义?
0:质量戳为坏(驱动传过来的质量戳为坏,或通讯失败)。
1:关机时刻,同时关机时通讯是失败的,或质量戳为坏。
2:开机时刻,开机时,还没有采集到数据。
192:质量戳为好
193:关机时取得好的质量戳
194:开机时取得好的质量戳
北京亚控科技发展有限公司 4
“数据库”常见问题解答
1.12 如何实现将组态王历史库中的数据导出来?
可以使用组态王提供的 KingReport.xls 文件,此文件在组态王安装目录下可以找到,
就可以将组态王历史库中的数据导出到 Excel 文档中。
具体使用
请参考组态王用户手册。
1.13 组态王的历史库容量有多大?历史信息能存多少天的?
组态王历史库容量本身没有限制,与计算机硬盘大小有关系。报警信息存储的天数
在系统配置-->历史数据记录-->历史记录配置对话框中设置,以天为单位,最多是 8000
天。
1.14 在组态王运行环境中能否动态修改历史数据记录的存储天数?
不能动态修改。只能在开发环境中通过系统配置-->历史数据记录-->历史库配置对话
框中进行设置。
1.15 在组态王数据词典中设置了变量的历史记录属性,但是变量无历史记录,为什么?
请确认:
A、组态王系统配置-->历史数据记录-->历史库配置对话框中的“运行时启动历史数
据记录”复选框是否选中;
B、在控制面板-->管理工具-->服务-->HistorSvr 服务是否启动;
2. 其他数据库
2.1 组态王采集的数据能保存到第三方的数据库如 SQL、ORACLE等吗?
可以,通过控制面板的 ODBC(Open Database Connectivity,开放数据库互连)配
置来实现。用户首先需要对 SQL 或 ORACLE 数据库进行 ODBC 配置,然后通过组态王
提供的 SQL 函数就可以实现组态王数据保存到第三方数据库,详细说明请参考组态王的
使用手册。
2.2 我希望组态王将采集的数据保存到网络中的另一台计算机上的 SQL或 ORACLE等
数据库,如何操作?
一般不推荐直接在运行组态王的计算机上直接配置网络 ODBC 数据源,因为网络的
不稳定会造成一系列的通讯问题。
北京亚控科技发展有限公司 5
“数据库”常见问题解答
推荐方式如下:
请在运行组态王的计算机和网络中的数据库计算机同时安装 SQL 或 ORACLE 数据
库,对这两台计算机上的 SQL 或 ORACLE 数据库进行同步(数据库软件提供同步的功
能),组态王软件直接与本机的数据库通讯读写数据(这样可以避免网络不稳定对组态
王软件的影响,防止数据的丢失)。
2.3 请问组态王软件与 SQL数据库交互的一般配置过程如何?
A、建立数据库和数据源,数据源的建立在“控制面板―>管理工具->数据源
(ODBC)中配置”。
B、在组态王中建立表格模版和记录体模版。
C、使用 SQLCONNECT()建立组态王与数据源的连接。
D、采用 SQL****函数对数据库进行操作。
E、使用 SQLDISCONNECT()断开与数据源的连接。
2.4 我采用组态王软件对 SQL数据库写数据,写入没有成功,请问需要注意什么问题?
需要注意的事项如下:
A、在组态王的信息窗口中查看组态王与数据源是否连接成功。
B、数据库中的表格的字段名与组态王记录体定义的字段名是否相同。
C、数据库表格的字段类型与组态王变量的类型是否符合,推荐使用组态王的表格
创建表格。
D、表格中使用的字段名是否有 date 和 time、in 等关键字,如果有请改为其他字段
名。
E、数据库字段中是否包含有#字,ODBC 数据源不支持该字符使用。
2.5 在建立组态王和 ACCESS数据库连接时,开始一分多钟连接是成功的,可是一会在
组态王的信息窗口就会显示“数据库错误:客户端工作过多 Driver's SOLSetConnectAttr
faild”然后就是连接失败。请问这是什么原因?
这是连接命令语言在组态王中重复执行的次数太多了(比如将 SQLCONNECT 语句
写在了命令语言存在时),这样做很不好,不断的执行数据库连接可能会造成系统的崩
溃,建议将其写到命令语言启动时连接一次即可。
北京亚控科技发展有限公司 6
“数据库”常见问题解答
2.6 我采用组态王软件对 SQL 数据库进行数据交换,请问如何通过组态王对 SQL 数据
库中的数据进行更新?
一般操作步骤如下:
A、采用组态王提供的 SQLSELECT()函数从数据库检索到需要修改的记录。
B、通过记录体关联的变量将数据显示在画面上。
C、在画面上对这些数据进行修改。
D、采用 SQLUPDATE()函数将数据更新到数据库中即可。
2.7 在组态王中使用 SQLSelect 函数查询数据库记录时如何得到符合条件的记录的数
量?
使用 SQLNumRows()函数能够得到符合条件的记录的数量,函数的调用格式为:
SQLNumRows(DeviceID);
2.8 在组态王中使用 KVADODBGrid控件对数据库查询后,将查询的数据打印出来?
调用控件的 PRINT 方法就可以了,具体调用方法如下:Ctrl4.Print();
2.9 在组态王运行系统下如何删除数据库中的记录?
通过组态王提供的 SQLDelete()函数可以删除数据库中的一条或多条记录,函数使用
说明如下:
[ResultCode=]SQLDelete(DeviceID, "TableName", "WhereExpr");
:
DeviceID:SQLConnct()产生的连接号。
TableName:表名。
WhereExpr:指定函数起作用行的条件
例如:删除 kingview 表格中所有 LogNo 列等于 11 的记录:
SQLDelete(DeviceID, "kingview", "LogNo=11");
2.10 在组态王中使用 KVADODBGRID控件进行数据库查询时,能否对查询出来的数据
进行修改,同时将数据更新到数据库中?
可以。通过控件的 Editable 属性来实现,此属性置 0 不可编辑,置 1 可编辑,调用
北京亚控科技发展有限公司 7
“数据库”常见问题解答
格式如下:
数据库查询控件.Editable=0;
数据库查询控件.Editable=1;
修改后可使用 SQLUpdate()函数将数据更新到数据库中。
2.11 在组态王中使用 KVADODBGRID控件进行数据库查询时,能否将查询出来的数据
保存为其他格式的文件?
使用控件的 SaveToCSV方法可以将数据表格保存为 csv格式的文件,使用说明如下:
SaveToCSV(STRING bstrCSV)方法:
参数:
STRING bstrCSV:保存路径和文件名。
例如:数据库查询控件.SaveToCsv("f:\Temp\a1.csv");
2.12 在组态王中使用 KVADODBGRID控件进行数据库查询时,如何得到指定单元格中
的内容?
使用控件的方法 GetCertainCellText 方法可以实现,使用说明如下:
GetCertainCellText(LONG lRow,LONG lCol)方法:
参数:
LONG lRow:指定单元格所在行(从 0 开始)。
LONG lCol:指定单元格所在列(以 0 开始)。
例如:
LONG lRow;
LONG lCol;
lRow = 2;
lCol = 3;
strCurSelText = 数据库查询控件. GetCertainCellText(lRow,lCol); //获取第 2 行、第
3 列单元格中的文本到字符串变量 strCurSelText。
北京亚控科技发展有限公司 8
“数据库”常见问题解答
2.13 使用 SQLInsert函数向 Access数据库存储数据时,此函数使用完全正确,但是信息
窗口总是提示语法错误,为什么?
这是因为数据库表格中设置的字段名称与数据库中的关键字冲突(如:date time 等
等)造成的,将其字段名更改为其它名称即可。
2.14 一个记录体里面两个相同的字段名称对应组态王两个不同的变量是否可以?
不可以。
因为记录体的作用是确定数据库中表格字段和组态王变量的唯一对应关系,如果出
现重名的会出现错误,另外数据库一个表中两个字段也不能重名。
2.15 如果 Access数据库里的两个表格完全一样,那么组态王在插入记录的时候能用同一
个记录体吗?
可以使用同一个记录体,但是条件是两个表格的字段名称,字段类型完全一样。
2.16 如何判断组态王与外部数据库的连接状态?
通过 SQLConnect 函数的返回值来判断,如果是 0 表明与数据库连接失败,如果是
正数则表明连接成功。
2.17 组态王能同时对两个 Access数据库进行操作吗?
可以。
利用 SQLConnect 函数连接两个数据库,在使用 SQLConnect 函数时,连接两个数据
库的 ID 号是不同的(即函数的第一个参数不同),连接成功后就可以同时对两个数据
库进行操作了。
2.18 在组态王中能否对 Access数据库进行压缩,该如何实现?
亚控提供了对 Access 数据库进行压缩处理的批处理程序,在组态王中使用 StartApp
函数调用此程序即可,批处理程序可以使用记事本打开并编辑,针对具体的应用只需要
修改批处理程序中的 office 的安装路径以及 mdb 数据库的路径/文件名即可。如有需要请
向亚控索取。
北京亚控科技发展有限公司 9
“数据库”常见问题解答
2.19 两台装有组态王的计算机通过网络 ODBC 连接同一个 Access 数据库时,不能同时
连接数据库,为什么?
这是因为连接的数据库没有完全共享造成的,将数据库设置成完全控制即可。
注:这里的共享不单要把数据库所在的文件夹共享,还需要把数据库共享,如:数
据库右键-属性-安全-添加 everyone-完全控制、修改等。
2.20 在组态王中使用 KVADODBGRID控件进行数据库查询时,能否实现打印预览的功
能?
组态王暂时无此功能。
2.21 在组态王中使用 KVADODBGRID控件进行数据库查询时,能否实现多个表联合查
询的功能?
组态王软件提供的 KVADODBGRID 控件不支持同时查询多表,只能对一个数据库
表格进行查询。但用户可以通过关系数据库提供的视图功能,此视图可以从多个表中联
合查询,通过选择视图可间接的达到从多个表中联合查询数据的目的。
组态王提供了这个功能的例程,请到组态王网站上下载(下载中心-知识库下载-组
态王通用版-功能例程-关系数据库多表联合查询例程)或与亚控公司的技术支持联系。
2.22 在使用 KVADODBGRID控件来查询数据库的时候,如何在运行时修改控件中显示
数据的小数点位数?
使用控件的 SetFieldDecimalDigits 方法来实行,使用说明如下:
SetFieldDecimalDigits(STRING bstrName,LONG lDecimalDigits);
参数:
bstrName 表头字段名
lDecimalDigits 设置小数位数
例如:数据库查询控件.SetFieldDecimalDigits("温度",3);
2.23 在组态王中使用 KVADODBGRID控件进行数据库查询时,能否在运行时进行表格
的选择?
使用控件的 Table 属性可以实现,调用格式为:
数据库查询控件.Table=\\本站点\表格名称;//其中表格名称是组态王数据词典中定义
北京亚控科技发展有限公司 10
“数据库”常见问题解答
的字符串变量。
2.24 在组态王中使用 KVADODBGRID控件进行数据库查询时,如何实现字符串查询?
查询语句如下所示:
string whe;
weh=="GroupName='"+\\本站点\报警组+"'";
数据库查询控件.Where=whe;
数据库查询控件.FetchData();
数据库查询控件.FetchEnd();
2.25 在组态王中使用 KVADODBGRID控件进行数据库查询时,如何实现相似查询?
查询语句如下所示:
数据库查询控件.Where="VarName like+'%"+\\本站点\查询条件+"%'";
//相似查询,其中 VarName 为为数据库中字段的名称,查询条件是组态王数据词典
中定义的字符串变量。
数据库查询控件.FetchData();
数据库查询控件.FetchEnd();
2.26 在组态王中使用 KVADODBGRID 控件进行数据库查询时,如何实现时间段的查
询?
查询语句如下所示:
数据库查询控件.Where="ADate >={d'"+\\本站点\开始时间+"'} and ADate <={d'"+\\
本站点\结束时间+"'}";
//日期范围查询,其中 ADate 为数据库中字段的名称,日期型,开始时间和结束时
间是组态王数据字典中定义字符串变量。
数据库查询控件.FetchData();
数据库查询控件.FetchEnd();
北京亚控科技发展有限公司 11
“数据库”常见问题解答
2.27 在组态王中使用 KVADODBGRID控件进行数据库查询时,如何实现查询结果的排
序?
查询语句如下所示:
数据库查询控件.Where="ADate={d'"+\\本站点\查询日期+"'}"+" Order By ATime
ASC";
//其中 ADate 和 ATime 都是数据库中字段的名称,日期型,查询日期是组态王数据
字典中定义的字符串变量,d 为字符型转化为日期型。
数据库查询控件.FetchData();
数据库查询控件.FetchEnd();
2.28 在组态王中使用 KVADODBGRID控件进行数据库查询时,如何删除控件中显示的
数据?
使用控件的 RemoveAllData 方法来实行,调用格式为:
数据库查询控件. RemoveAllData();
2.29 在组态王中使用 KVADODBGRID控件进行数据库查询时,如何对控件的数据进行
刷新?
使用控件的 RefreshData 方法来实行,调用格式为:
数据库查询控件. RefreshData();
2.30 在组态王中使用 KVADODBGRID控件进行数据库查询时,如何得到当前所选单元
格中的内容?
使用控件的 CurCellText 属性可以实现,调用格式为:
strCurSelText=数据库查询控件.CurCellText;
2.31 在组态王中使用 KVADODBGRID控件进行数据库查询时,如何动态地添加控件的
字段?
使用控件的 AddField 方法可以实现,使用说明如下:
AddField(STRING bstrName, STRING bstrTitle, LONG lFieldWidth, BOOL
nReadOnly);
参数:
北京亚控科技发展有限公司 12
“数据库”常见问题解答
STRING bstrName:指定添加的字段的字段名,必须为有效字段名称;
STRING bstrTitle:被添加字段的实际显示名称,若为空,则取缺省的名称即该字段
名作为显示名称;
LONG lFieldWidth:字段的宽度,字段宽度必须大于 0;
BOOL nReadOnly:所添加的字段是否为只读(1 表示字段只读,0 表示字段可读
写)。
例如:
Ctrl.SetConnectParam("MyTestDSN","","",""); //连接 MyTestDSN 数据源(Access 数
据库);
Ctrl.Table ="KingTable"; //选择 KingTable 数据表;
Ctrl.AddField("R1","温度",75,1); //增加此表中字段名为 R1 的字段,显示字段名
称为温度,列宽 75,只读;
Ctrl.FetchData(); //刷新数据集。
2.32 在组态王中如何实现在 access数据库中始终保存一个月的历史数据,自动删除一个
月之前的历史数据的功能?
实现过程如下:
1)请将控制面板中的区域设置日期改为 yyyy-mm-dd 格式;
2)在组态王应用程序命令语言启动时输入如下脚本语言:
SQLConnect( DeviceID, "dsn=历史;uid=;pwd=");
long month=\\本站点\$月-1;
long year=\\本站点\$年;
long day=\\本站点\$日;
string date1;
if(month==0)
{
month=12;
year=\\本站点\$年-1;}
date1= StrFromInt( year, 10 );
北京亚控科技发展有限公司 13
“数据库”常见问题解答
date1=date1+"-";
date1 = date1 + StrFromInt( month, 10 );
date1 = date1 + "-" + StrFromInt( day, 10);
string whereexpr="日期={#’"+date1+"’}";
SQLDelete( DeviceID, "A", whereexpr);
if (\\本站点\$月==4||\\本站点\$月==6||\\本站点\$月==9||\\本站点\$月==11)
{
if (\\本站点\$日==30)
{
day=31;
date1= StrFromInt( year, 10 );
date1=date1+"-";
date1 = date1 + StrFromInt( month, 10 );
date1 = date1 + "-" + StrFromInt( day, 10);
whereexpr="日期={#’"+date1+"’}";
SQLDelete( DeviceID, "A", whereexpr);
}
}
}
2.33 在组态王中使用 KVADODBGrid 控件时如何对数据库中的日期类型字段进行查
询?
在组态王中对数据库进行查询主要是利用 KVADODBGrid 控件来实现的,具体实现
方法如下:
1)在组态王画面中添加两个日期时间控件即:Microsoft Date and Time Picker Control
6.0,控件名称分别为 date1 和 date2;
2)在第一个控件的 CLOSEUP 事件中输入如下命令语言:
long year1;
long month1;
北京亚控科技发展有限公司 14
“数据库”常见问题解答
long day1;
year1=date1.Year;
month1=date1.Month;
day1=date1.Day;
string 查询开始时间;
if (month1<10&&day1<10)
{
查询开始时间 =StrFromInt(year1, 10)+"年 "+"0"+StrFromInt(month1, 10)+"月
"+"0"+StrFromInt(day1, 10)+"日";
}
if (month1<10&&day1>=10)
{
查 询 开 始 时 间 =StrFromInt(year1, 10)+" 年 "+"0"+StrFromInt(month1, 10)+" 月
"+StrFromInt(day1, 10)+"日";
}
if (month1>=10&&day1<10)
{
查 询 开 始 时 间 =StrFromInt(year1, 10)+" 年 "+StrFromInt(month1, 10)+" 月
"+"0"+StrFromInt(day1, 10)+"日";
}
if (month1>=10&&da