组态王与Access数据库的数据交换
组态王与组态王与 AccessAccess 数据库的数据交换数据库的数据交换 1. SQL1. SQL 访问管理器访问管理器 SQL 访问管理器用来建立数据库列和组态王变量之间的联系。包括表格模板和记录 体两部分功能。通过表格模板在数据库表中建立表格;通过记录体建立数据库表格列和 组态王之间的联系,允许组态王通过记录体直接操纵数据库中的数据。表格模板和记录 体都是在工程浏览器中建立的。 2.2. 创建表格模板创建表格模板 在工程浏览器中左侧工程目录显示区中选择“SQL 访问管理器”下的“表格模板” 项,在右侧目录内容显示区中双击“新建”,弹出“创建表格模板”对话框,如下图。 建立表格模板的目的在于定义一种格式,在后面用到是 SQLCreatTable(),以次 格式在 Access 数据库中建立表格。 3.3. 创建记录体创建记录体 在工程浏览器中左侧工程目录显示区中选择“SQL 访问管理器”下的“记录体”项, 在右侧目录内容显示区中双击“新建”,弹出“创建记录体”对话框,如下图。 1 其中: 字段名称填写数据库表格中的列名。 组态王变量填写和表格中指定列相关联的组态王变量。 4.4. 建立建立 AccessAccess 数据库数据库 1)建立一空 Access 文件,定名。 2)定义数据源 双击控制面板下的“ODBC 数据源(32 位)”选项,弹出“ODBC 数据源管理器”对 话框。 选择“用户 DSN”属性页,并单击“添加”按钮。 2 在弹出的“创建新数据源” 对话框中,选择“Mirosoft Access Driver”单击“完成” 按钮。 弹出“ODBC Microsoft Access 安装”对话框,定义数据源名。 单击“选取”按钮,从中选择相应路径下刚刚定义的数据库文件。 单击“确定”按钮,完成对数据源的配置。 3 5.5. 对数据库的操作对数据库的操作 首先在数据词典里建立变量 DeviceID, 为内存整形, 是数据库连接时产生的连接号。 5.15.1 连接数据库连接数据库 函数 SQLConnect( DeviceID, “dsn=;uid=;pwd=“); 参数说明: DeviceIDSQLConnct()产生的连接号。 “dsn=;uid=;pwd=“连接语句,包括 ODBC 中定义的数据源名、用户名和密码,用 户名和密码可以缺省。 例子:组态王以 sa 身份登录(无密码)和名为 wang 的 SQL Server 中的 pubs 数据 库连接。 SQLConnect(DeviceID,“DSN=wang;DATABASE=pubs;UID=sa; PWD=”); 5.25.2 创建表格创建表格 函数 SQLCreateTable(DeviceID,TableName,TemplateName); 参数说明: DeviceIDSQLConnct()产生的连接号。 TableName想要创建的数据库的表格名。 TemplateName表格模板名。 例子:下例创建一个名为 kingview 的新表,模板为 table1。 SQLCreateTable(DeviceID, “kingview”, “table1”); 5.35.3 插入新记录插入新记录 函数 SQLInsert(DeviceID, TableName, BindList); 参数说明: DeviceIDSQLConnct()产生的连接号。 TableName数据库的表格名。 BindList记录体。 例子:在表格 kingview 中插入一条记录,记录体 bind1。 4 SQLInsert(ConnectionID, “kingview”, “bind1”); 5.45.4 得到选择集得到选择集 函数 SQLSelect(DeviceID, TableName, BindList, WhereExpr, OrderByExpr); 函数说明: DeviceIDSQLConnct()产生的连接号。 TableName数据库的表格名。 BindList记录体。 WhereExpression指定函数起作用行的条件。 注意:如果列名是字符串,表达式必须在单引号中。 下例选择“名字”列中等于 Asia 的行: 名字= ’Asia’。 下例选择“年龄”列中在 20 和 30 之间的行: 年龄=20 and 年龄30。 OrderByExpression定义排序的列和方向。只有列名可以用来排序,表达式:列名 [ASC|DESC]。 下例将以“温度”列的升序排序。 “温度 ASC”。 排序中也可使用多重表达式。例如: “温度 ASC,时间 DESC”。 5.55.5 选择记录选择记录 SQLFirst(DeviceID);从 SQLSelect()函数产生的结果集中选取首项记录。 SQLNext(DeviceID);选取选择集中的下一条记录。 SQLPrev(DeviceID);选取选择集中的上一条记录。 SQLLast(DeviceID);选取由 SQLSelect()创建的选择集的末条记录。 DeviceIDSQLConnct()产生的连接号 5 5.65.6 断开数据库断开数据库 SQLDisconnect(DeviceID); DeviceIDSQLConnct()产生的连接号。 6