设计数据库写
在您的业务运行中会发现随着时间的推移在保存在数据库中信息会发生变化。例如,您获得了新的用户或关于现有用户的信息发生变化,如联系人名或电话号码。VisiconX 让您将这些新信息通过 SQL Insert 或 Update 语句写到数据库中。
重要(仅限 iFIX 用户):在写数据库之前,必须在用户和/或组帐号中添加 VisiconX 写入应用程序特性。此外,如果您在以前版本的 iFIX 中创建的数据控件执行数据库写入,将不再工作;您必须在您的用户帐户和/或组帐户中添加 VisiconX 写入应用程序特性。如需了解详情,请参阅 iFIX 实现安全电子书中的应用程序特性。
添加或更改信息意味着要找到哪个数据库想要更新以及这些信息在数据库中是如何组织的,这样您才可以确定要访问哪个表和列。
在确定哪个信息和信息如何组织的后,您应该找到:
? ? ?
要添加或更改的表。
哪个列包含要添加后更改的信息。
当执行 Update 时, 在行过滤器中要使用哪个比较表达式以及是否使用 And 操作符或 Or 操作符组成表达式。
您可能需要对多个数据库进行写操作,特别当常驻在一个数据库重的数据影响到其他数据库时。
提示: SQL 语句必须符合标准 SQL-92 约定。与 SQL 标准一致,所输入的任何语句不分大小写。
设计布局
一旦了解所需要获得的信息,则应考虑怎样在运行时画面中显示和使用这些信息。应考虑以下几点:
? ?
如何显示特定的信息类型,例如在电子表格类型的网格或列表框中。
哪些人需要看运行时显示?如监视生产的人只需看用网格控件返回的信息,而无需用数据控件配置和查询数据库。需要访问多个数据库的用户可能希望在运行模式中使用按钮来连接和查询不同的数据库。 ? ? ?
在画面中如何使用颜色?
在运行时环境中,哪些对象可见,哪些不可见?
是否使用信息实现另一个对象的动画,例如一个查询属性或矩形的填充属性。
完成设计
规划查询和设计布局后,需按以下步骤细化设计:
? ? ?
要求用户在运行时环境中登录数据提供者。 动画对象,如列表框、查询属性等等。
在脚本中使用属性和方法创建更为动态的运行时环境。例如,在 iFIX 中可增加 Microsoft 窗体,如命令按钮和选项按钮,运行特殊的查询或 SQL 向导。
? 修改设计优化系统性能。
优化系统性能
查询关系型数据库及检索数据时可能会影响 Windows 系统性能。这一节主要讨论使用 VisiconX“数据控件”查询数据库时如何优化系统性能。包括下面题目:
? ?
选择数据提供者
使用行过滤器限制数据的读取
选择数据提供者
VisiconX 使用 OLE DB 数据提供者访问数据的性能要优于使用 ODBC 数据库驱动程序。如果可用 OLE DB 数据提供者访问本机的数据库,如 SQL Server,同时也可用 ODBC 数据库驱动程序访问,则在“数据控件 OLE 属性”对话框中选择 OLE DB 数据提供者。
使用行过滤器限制数据的读取
检索大数据集中所有数据时可能会影响数据读取的时间,虽然不会引起系统死机。但如果只需读取大数据集中的某些数据,则需要在 SQL 查询中使用“行过滤器”限制数据的读取。
疑难解答
VisiconX 是易于使用和实现数据库连接的工具。但在某些情况下,如连接数据提供者或动画对象时,可能产生一些难以理解的问题。
本节主要讨论可能遇到的一些典型的问题。并提供相应的解决方法。包括以下主题:
? ? ? ? ? ?
避免产生某些问题 分析测试连接失败原因 分析运行时连接失败原因 行过滤器数据字段显示无数据 用数据控件动画的控件显示无数据 排除存储过程引起的错误
避免产生某些问题
在操作之前适当的配置系统可避免一些问题的发生。尽量使用简单的对象动画和数据查询。 以下列出的是最小推荐配置,当排除问题时应具备这些条件:
? ?
使用建议的计算机。
使用建议的网络硬件和软件。
如需了解详情,请参阅iFIX 入门指南(如果正在使用 iFIX)或入门指南(如果正在使用 CIMPLICITY)。
分析测试连接失败原因
在 VisiconX“数据控件 OLE 属性”对话框的“数据库”标签中单击“测试连接”按钮时,会弹出连接失败的消息。
? ? ? ?
从“连接失败”对话框的描述中判断失败原因。
如果数据库是受保护的,首先必须获得访问数据库和表的授权。 确保用户名和密码是正确的。
确保保存数据库的服务器是可访问和操作的。
如果仍有问题,请与系统管理员联系,检查相应设定是否正确。
分析运行时连接失败原因
在运行时环境中,数据控件显示连接错误。
?
确保所查询的表是可访问的。用“Table”命令创建查询并重新运行。如果再次出现出错信息,则该表为不可查询。 ? ?
检查用户权限。可能用户无权访问该表。
重新检查所有对象和动画查询属性的数据源和数据转换。
行过滤器数据字段显示无数据
如果“行过滤器”包含比较表达式,用来比较日期字段为某一值或查询属性时。用数据控件动画的对象此时无数据显示,则:
? ?
确保数据与行过滤器的数据类型一致。
显示日期的数据字段可能是字符串格式。在行过滤器中以字符串格式输入日期值并重新运行查询。此外,设定系统日期格式与数据库日期格式相匹配。在 Windows NT 中,
选择“控制面板”的“区域设定”;在 Windows 2000、Windows XP 或 Windows Server 2003 中选择“控制面板”的“区域选项”。
用数据控件动画的控件显示无数据
网格、列表框或组合框控件在运行时环境中不显示数据。
? ? ?
确保查询条件有对应的数据。
确保在 iFIX 中对象由数据控件实现动画,或在 CIMPLICITY 中与其关联。 如果查询中包含查询属性,则确保在 iFIX 中已实现数据控件查询属性的动画或在 CimEdit 脚本中初始化。
如果查询中包含查询属性,切换至运行时环境。在动画查询属性的对象中选择或输入相应的值,则在数据控件动画的对象中改变数据显示,例如用列表框控件动画查询属性,在列表框中选择另一值,则由数据控件动画的对象改变数据显示。
排除存储过程引起的错误
使用存储过程查询 Access 数据库或 Oracle 服务器,由于这些数据库设计时特殊的单元组合,需要做一些特殊的考虑。
Access 数据库
Access 数据库并不真正支持存储过程。然而,Access 支持查询,在某些时候 ADO 又把这些查询作为存储过程处理。目前,MS Jet 3.51 和 4.0 OLE DB 供应者不能从 Access 查询中接受参数信息。因此,如果在“数据控件 OLE 属性”对话框的“记录源”标签中选择“存储过程”作为命令类型,在所选的 Access 查询中不会出现参数或与之对应的查询属性。 为了避免该问题,以下提供两种解决方案:
? ?
使用 ODBC 驱动程序连接 Access 数据库,而非使用 MS Jet OLE DB 供应者。 如果知道 Access 查询中的参数定义,则手动输入 SQL Select 查询语句。如下面例子,ScrBatchSummary 是 Access 查询数据库名,Batch_Serial_No 查询的输入参数。
Select * From ScrBatchSummary where ScrBatchSummary.batch_serial_no = QP1
Oracle 服务器
正如 VisiconX 控件的功能,Oracle 存储过程可以更新(Update)、插入(Insert)或删除(Delete)数据库信息。然而,用存储过程从 Oracle 服务器读取或查询数据时,需要做一些特殊的考虑。为了 Oracle 存储过程能正确返回记录集(Recordset),必须创建信息包。
使用“存储过程”命令类型不能直接调用该信息包。您必须用 SQL 命令来调用它。如下面例子,packperson是信息包的名字,oneperson 是存储过程名,resultset 2 是信息包所要返回的最大行数,ssn,fname 和lname 是要返回的列,QP1 是控制查询的 VisiconX 变量。
{call packperson.oneperson(QP1,{resultset 2, ssn, fname, lname})}
有关如何在 Oracle 中创建信息包、返回记录集到 ADO 和 VisiconX 的详细信息,请查阅文章 Q176086 在微软支持知识库.
在 VisiconX 中创建 SQL 语句
本章将讨论如何建立查询并从 OLE DB 数据提供者获得数据。查询的基础就是如何定义查询,以获得所需的相关信息,包括如何动画查询属性。
一旦获得数据,就可以用网格、列表框或组合框控件显示这些数据了。如需了解详情,请参阅显示数据章节。
该章节包括下面部分:
? ? ? ?
创建查询 写数据库 SQL 向导 创建行过滤器
创建查询
查询指的是访问数据库表并返回所请求的数据。简单查询可返回单个表的所有内容。复杂查询可根据所选标准、数据排序或联合多个表过滤某些数据行。根据需要,VisiconX 可以建立简单或复杂查询。
建立查询是从“数据控件 OLE 属性”对话框中的“记录源”标签开始。从“命令类型”列表框选择所要建立的查询类型,如下表所示。
查询命令类型 命令类型 SQL 命令 表 存储的程序 描述 使用“SQL 向导”创建 SQL 命令或手工输入 SQL 命令。 返回整个表的数据。 用查询属性映射存储过程参数。 读取和更新数据时,可使用“记录源”标签提供的“设定数据库锁类型”选项。如需了解详情,请参阅设置环境电子书中的高级主题。