收藏 分享(赏)

用Delphi编写小型数据库.doc

上传人:dzzj200808 文档编号:3163471 上传时间:2018-10-05 格式:DOC 页数:21 大小:84KB
下载 相关 举报
用Delphi编写小型数据库.doc_第1页
第1页 / 共21页
用Delphi编写小型数据库.doc_第2页
第2页 / 共21页
用Delphi编写小型数据库.doc_第3页
第3页 / 共21页
用Delphi编写小型数据库.doc_第4页
第4页 / 共21页
用Delphi编写小型数据库.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、用 Delphi 编写小型数据库2011-10-20| 分类: 电脑资料 | 标签:电脑技巧 |编辑:,辅编:www.jnsq10 用 Delphi 编写小型数据库(一)建立数据库 Delphi是目前最流行 的编程工具之 一,它在开发数据 库应用程序方 面有着众多的 优越性,提供了强大的 开发基于客户 /服务器模式数 据库应用程序 的能力。在数据库访问 方面,配有 Borland Database Engine(BDE),可通过 SQL Links、ODBC 等技 术访问多种数 据库,也可以利用 ADO 来访问各 种数据库。在应用程序客 户端开发方面 ,Delphi 提供了大量的 用于数据库应

2、 用开发的各种 组件,可以极大地提 高开发效率。在学习 Delphi 数据库 编程之前,我们应该对数 据库有一定的 认识。一、认识数据库1.数据(Data)数据库是存放 数据的仓库,数据的种类很 多,如数字、文字(商家的订单信 息、供应商信息等 )、图形、图像。2.数据库(Databa se)数据库是长期 存放在计算机 上的,能够识别的,有组织、可共享、具有一定安全 性的数据集合 。在数据库中,一般都采用关 系模型,通过表格来实 现。3.数据库管理系 统(DataBa se Management System)数据库管理系 统是位于用户 软件和操作系 统之间的数据 库管理软件,常见的数据库 管

3、理系统有 Oracle、Micros oft SQL Server、Sybase 、Inform ix 等。4.数据库系统(DataBa se System)数据库系统的 构成见图 1:图 1 数据库系统构 成图实际开发中,数据库系统常 分为两类:桌面型数据库 系统和网络型 数据库系统。桌面型数据库 系统指只在本 机运行、不与其他计算 机交换数据的 数据库系统,用于小型的信 息管理;网络型数据库 系统指能够通 过网络进行数 据共享的数据 库系统,多人可以通过 多台计算机对 数据库进行操 作,可以通过数据 库对用户的权 限进行管理。目前,网络型数据库系统的应用前 景越来越广泛 。有关数据库的 术

4、语由于篇幅 关系没做深入 讲解,有兴趣的读者 可以参考相关 书籍。下面我们以 Microsoft SQL Server2000 为例 ,讲解建立一个 数据库的详细 过程。Microsoft SQL Server2000 安装 完成后,依次点击“开始程序Micros oft SQL Server 企业管理器 ”,启动企业管理 器程序,SQL Server企业管理器(Enterp rise Manager)是 SQL Server软件的一个组 成部分,它给用户提供 了一个集成的 管理控制台来集中管理多个 服务器。在 Windows 进程中的 名字叫 mmc.exe。企业管理器的 界面如图 2,我们

5、对数据库 的大部分操作 都在这个程序 中执行。图 2 SQL Server企业管理器的 界面二、创建一个新的 数据库1.在企业管理器 中,点击菜单“操作” ,选择“新建数据库”,在弹出的对话 框中,需要确定新建 的数据库的名 称和存放的路 径。新建的数据库 的名称为 test,存放的路径为 D 盘。注意:修改了数据文 件的路径后,最好手动把日 志文件的路径 也修改到相同 目录下,确定后,新建的数据库 就创建了。在 D盘下可以 找到 test_Data.MDF 和 test_Log.LDF 两个文 件,在企业管理器 树中也能找到 test数据 库了。2.数据库创建后 ,我们就根据实 际需要创建表

6、 了。右键点击企业 管理器树中的 “表”后,在弹出的菜单 中选择“新建表 ”,在弹出的对话 框中对表的结 构进行详细设 计。定义四个字段 ,分别表示姓名 、年龄、性别、住址。注意定义字段 时要考虑数据 类型、长度是否合法 ,如果把姓名定 义为数字型或 者把年龄的长 度设置为 1,将来数据就会 出现意想不到 的情况。当表设计完成 后点击“保存”按钮,输入表名 PersonInfo,对表的设计就 初步完成了。重复上述操作 可以建立多个 表。建立数据库以 及建立表相对 来说比较简单 ,按部就班就能 完成。不过在实际做 项目过程中,在建立表之前 最好根据需求 考虑完善后再 进行。如果到项目编 码中期再

7、更改 表结构,会让人心烦意 乱的。三、值得注意的概 念1.存储过程存储过程是 SQL 语句和可选控 制流语句的预 编译集合,以一个名称存 储并作为一个单元处理。存储过程存储 在数据库内,可由应用程序 通过一个调用 执行,而且允许用户 声明变量、有条件执行,它还拥有强大 的编程功能。存储过程相当 于存放在数据 库中的函数,当应用程序调 用存储过程时 ,将被数据库管 理系统调用并 执行,然后将执行结 果返回给应用 程序。存储过程可包 含程序流、逻辑以及对数 据库的查询。它可以接收参 数、输出参数、返回单个或多 个结果集以及 返回值。2.触发器触发器是一种 特殊类型的存 储过程,当使用一种或 多种数

8、据修改 操作在指定表 中对数据进行 修改时,触发器会生效 ,触发器可以查 询其它表,而且可以包含 复杂的 SQL 语句。它们主要用于 强制复杂的业 务规则或要求 。3.事务性(Transa ction)事务是指不可 分割的一组操 作集合,集合的操作要 么全部完成,要么全部取消 ,是一个不可分 割的工作单位 。4.在设计表时需 要注意以下几 点1)主关键字(Primar y Key)主关键字又叫 主键,是唯一能确定 表的一行(一条记录)的一个或多个 字段,比如上面我们 定义的 PersonInfo 表中, name 字段 就可以设定为 主关键字,在设计表的窗 体中,选中 name这一行,点击“钥

9、匙” 按钮后就把 name 设置为 主关键字了,这样每一条记 录的name的信息就不能 相同了。主关键字的功 能有:建立索引,利于快速查找 和排序;分辨记录;保证引用的完 整性。2)索引(Index)建立索引是为 了提高数据库 的查找和排序 速度。关键字是一个 特殊的索引。索引使数据库 程序无须对整 个表进行扫描 就可以在其中 找到所需要的 数据。用于索引的字 段不需要唯一 ,但唯一的字段 的索引能获得 更高的效率。3)外部关键字(Froeig n Key)外部关键字又 称外键,用于建立和加 强两个表数据 之间链接的一 个或多个字段 。将保存表中主 键值的一列或 多列添加到另 一个表中,可创建

10、两个表 之间的连接。这一列或多列就成为第二个 表的外键。外键也是一种 约束条件,约束的主要目 的是控制存储 在外键表中的 数据,还可以控制对 主键表中数据 的修改。下面举例说明 ,比如我们定义 了两张表,表PersonInfo 的 name 字段 定义为主关键 字,其中 name列的数据是唯 一的,也就是名字不可重复,数据见图 3:图 3 PersonInfo 表表 wage 存 放员工每个月 的工资,所以名字可以 重复,数据见图 4:图 4 wage 表如果把表 PersonInfo 中的第四 条记录“曾虹云”删除,那么表 wage 中的前三条 记录就显得孤 立了,既然员工“曾虹云 ”的基本

11、信息都 没有了,怎么会保留每 个月的薪水呢 ?外部关键字防 止了这种情况 的出现,我们对表 wage 进行如下 设计:在表 wage的设计窗口中 点击按钮“管理索引/键”,在弹出的对话 框中点击“关系” 标签页,点击“新建”按钮,分别在主键表 中选择 name 和在外键表 中选择 name,这样我们就设置了一个外键 ,把 PersonInfo 和 Wage 两张 表做了关联,当 Wage 表 中有“ 曾虹云”的记录时,表 PersonInfo 是 不允许删除“ 曾虹云”这条记录的,这样就保证了 数据引用的完 整性。用 Delphi 编写小型数据库(二)数据库编程的基本操作 2007-05-17

12、 10:49:01| 分类: 电脑资料 | 标签:delphi编程 |字号 订阅上一期我们讲 解了数据库的 基础知识,本期我们主要 讲解 Delphi 数据库编 程的基本操作 ,这一般遵循图 1 的模式: 图 1 数据库应用程 序的构成 启动 Delphi,选择主菜单的 “FlieNewData Module”,就能创建一个 数据模块,数据模块相当 于一个容器,用于放置数据 库的组件,这些数据库相 关组件均为不 可见组件,如 ADODataSet、ADOCon nection、DataSo urce 等。用数据模块的 好处是:1.从直观来讲,这些不可见组 件不用放在窗 体上,简化了窗体的 设计

13、。2.可以对数据库 不可视组件进行统一管理,共享其中相同 的内容。我们这里举例 很简单,直接把不可视 控件放在主窗 体上,就不再讲数据 模块了。 下面我们通过 一个实例学习 使用 AD O 组件来访问 数据库。 一、新建项目 启动 Delphi,新建一个项目 ,选择 ADO 组 件面板,在窗体上添加 ADOConnection1和 ADODataSet1;选择 Data Access组件面板,在窗体上添加 DataSource1;选择 Data Controls 组件面板 ,添加 DBGrid1。 二、设置 ADOConnection ADO 组件一 般都包含一个 被用于连接的 属性,即 Co

14、nnectionString 属 性,利用此属性可 以指定一个到 ADO 数据存 储及其属性的 连接。 在窗体上选中 ADOConnection1,在 Object Inpector 上双击这 个组件的ConnectionString 属性,弹出窗体的 ADO 连接对话 框。 选择 Build 按钮,在弹出的对话 框中选择“Micros oft OLE DB Provider for SQL Server”选项,单击“下一步”按钮,出现数据链接 属性对话框。 1.选择或输入服 务器名称:可以在此输入 IP 地址,也可以点击下 拉列表,以显示当前系 统可以访问的 SQL Server数据库的列表

15、 ,选择其中的一 个,单击“刷新” 按钮,可获得最新的 SQL Server数据服务器列 表。此例中点击下 拉列表,选择上期我们 建立的 test 数据库的列 表。 2.输入登录服务 器的信息:选择“使用指定的用 户名称和密码 ”,然后输入用户 名称和密码。并选中“允许保存密码 ”复选框。 3.在服务器上选 择数据库:如果登录用户 名和密码正确 ,点击下拉列表 就会出现数据库的列表,否则显示报错 信息。 4.点击“测试连接”按钮测试输入 的登录信息是 否正确。设置完毕后点 击“ 确定”按钮返回到主 窗体。 小技巧:ADOCon nection1 的 LoginPrompt 属性用于 控制如何处

16、理 SQL 数据库 的安全性问题 。如设置为 True,当应用程序试 图建立数据库 连接时屏幕上 将出现标准 Delphi 注册对话框,用户必须输入 正确的用户名 和口令。为了设计方便 需要把 ADOConnection1 的LoginPrompt 的 属性设置为 False,这样在配置其 他的 ADODataSet组件时不必每 次都输入用户 名和密码了。 三、配置数据集 ADODataSet Delphi数据库开发的 很重要的特征 之一是,Delphi 可以在程序设 计时让我们对 数据进行处理 ,在开始处理表 的数据之前,程序必须首先 打开数据集,每个 ADO 数 据集都可通过 它自己的 C

17、onnectionString 属性或一 个 ADOConnection 组件(和它的ConnectionString)访问数据库的 数据。在主窗体上选 择 ADODataSet1,设置其Connection 属性:点击其下拉按 钮,选择 ADOConnection1,然后双击“Comman dText”,在弹出的对话 框中选择 PersonInfo 表,并点击*号,也可以直接在 SQL 中输入 “select * from PersonInfo”,这样我们就配 置了一个数据 集。 四、配置数据源 配置数据源只 需要设置 DataSet 属 性,点击下拉按钮 ,选择 ADODataSet1。

18、五、配置表格 配置表格需要 设置 DataSource属性,点击下拉按钮 ,选择 DataSource1。 这时,再选中 ADODataSet1,并把其 Active 属性设 置为 True,如果配置正常 ,将会在表格中 显示数据库的 PersonInfo 表的 数据,如图 2。 图 2 程序主窗体 六、操作数据 1.增加记录 使用 Insert 方法可以 插入一条记录 ,使用 Append 方法在数 据集的最后添 加一条记录。双击“增加一条记录 ”按钮,进入代码编辑 器,输入代码: procedure TForm1.Button1Click(Sender: TObject); begin A

19、DODataSet1.Active:=true;/打开数据集 ADODataSet1.Insert; /调用 Insert 方法 ADODataSet1.FieldByName(name).AsString:=Edit1.Text; /把 Edit1的值赋给插入 的记录的 name 字段 ADODataSet1.FieldByName(age).AsString:=Edit2.Text; ADODataSet1.FieldByName(sex).AsString:=Edit3.Text; ADODataSet1.FieldByName(address).AsString:=Edit4.Text

20、; ADODataSet1.Post;/将数据集中修 改的内容写回 到数据库中 ADODataSet1.Active:=false;/关闭数据集 ADODataSet1.Active:=true;/打开数据集,观看效果 end; 2.编辑记录 鼠标选择表格 里的一条记录 ,Edit 输入 框显示所选的 记录,然后进行修改 后,点击“编辑一条记录 ”按钮,把修改后的记 录写到数据库 中。 首先设置 DBGrid,用鼠标点击表 格的记录时,自动选中所点 击的一行,方法是设置DBGrid 的 Option属性的 dgRowSelect 为 True。 然后在 DBGrid 的 OnCellClick

21、 事件中 写如下代码: procedure TForm1.DBGrid1CellClick(Column: TColumn); begin Edit1.Text:=ADODataSet1.FieldByName(name).AsString;/把选择的记录 中的姓名显示 在 Edit1中 Edit2.Text:=ADODataSet1.FieldByName(age).AsString; Edit3.Text:=ADODataSet1.FieldByName(sex).AsString; Edit4.Text:=ADODataSet1.FieldByName(address).AsString

22、; end; 然后根据需要 对字段进行修 改,最后在“编辑一条记录 ”按钮中写如下 代码: procedure TForm1.Button2Click(Sender: TObject); begin ADODataSet1.Active:=true; ADODataSet1.Edit;/进入编辑模式 ADODataSet1.FieldByName(name).AsString:=Edit1.Text; ADODataSet1.FieldByName(age).AsString:=Edit2.Text; ADODataSet1.FieldByName(sex).AsString:=Edit3.T

23、ext; ADODataSet1.FieldByName(address).AsString:=Edit4.Text; ADODataSet1.Post; ADODataSet1.Active:=false; ADODataSet1.Active:=true; end; 注意:这里修改的是 当前指针所指 向的记录,如果修改后再 点击一次“编辑一条记录 ”按钮,程序就会报错 ,原因是没有定 位到某一条记 录。如果要指定修 改某条记录,可以使用下面 提供的方法: First:定位到第一条 记录 Last:定位到最后一 条记录 Next:定位到下一条 记录 Prior:定位到上一条 记录 MoveB

24、y(n):如果 n 为正数 ,下移 n 条记录 ;如果 n 为负数 ,则上移 n 条记 录 3.删除记录 和编辑记录一 样,需要先定位,找到需要删除 的记录后,才能对所选中 的记录进行删除操作。 在删除记录中 写如下代码: procedure TForm1.Button3Click(Sender: TObject); begin ADODataSet1.Active:=true; ADODataSet1.Delete; end; 4.查询记录 在实际的项目 中,一般都需要给 用户提供一个 查询,比如用户在 Edit5 中输 入姓名后,点击“查询姓名”按钮,系统在数据库 中进行查找。如果找到,表

25、格就自动定 位到这条记录 ,否则给出提示 信息: 双击“查询姓名”按钮,进入代码编辑 器: var i:integer;/定义一个整型 变量用于循环 Tmpname:string; /定义一个内部 变量,用于赋值 begin ADODataSet1.Active:=false;/关闭数据集 ADODataSet1.Active:=true;/打开数据集,目的是更新数 据集,使显示的数据 是最新的 ADODataSet1.First; /定位到第一条 记录 for i:=0 to ADODataSet1.RecordCount-1 do /从第一条记录 开始到最后一 条记录做循环 begin /

26、把当前记录的 name 的值 赋给内部变量 Tmpname Tmpname:=ADODataSet1.FieldByName(name).AsString; /去掉字符串中 的空 Tmpname:=Trim(Tmpname); /如果数据库中 记录的 name 值与查询的 值一致则在 Edit 中显示 相关字段的值 ,并退出这段代 码块 if trim(Edit5.Text)=Tmpname then begin Edit1.Text:=ADODataSet1.FieldByName(name).AsString; Edit2.Text:=ADODataSet1.FieldByName(age

27、).AsString; Edit3.Text:=ADODataSet1.FieldByName(sex).AsString; Edit4.Text:=ADODataSet1.FieldByName(address).AsString; exit; end; ADODataSet1.Next; end; /如果没有查询 到,给出提示信息 MessageDlg(数据库中没有 这个姓名!, mtError,mbOk, 0); end; 本章讲解了如 何使用 ADO对数据库进行 简单的操作。在本章学习结 束后,读者应该对操 作数据库有一 定的认识,并能通过 ADO 创建连接,能编写增加记 录、删除记录

28、、查询记录、修改记录的代 码。用 Delphi 编写小型数据库(三)项目的制作流程 2007-05-17 10:46:53| 分类: 电脑资料 | 标签:delphi编程 |字号 订阅本章将通过一 个项目制作过 程的讲解来加 深读者对数据 库编程的认识 。我们以攀钢热轧板厂纵切机 组二级系统的 上料程序为例 ,讲解如何进行 项目的制作。攀钢热轧板厂 纵切机组是一 条生产钢卷的 生产线,整个生产流程 见图 1:图 1吊车把钢卷吊 到入口步进梁 上(总共有 6 个卷 位,每个卷位可以 放置一个钢卷 ),然后由现场操 作人员开动步 进梁设备,通过上料小车 把钢卷送到开 卷机上进行生 产。生产完成后由

29、 卷取机把钢卷 卷好,通过卸料小车 把钢卷送到出 口步进梁,现场操作人员 开动步进梁到 称重位置的电 子秤称重后,把钢卷送到库 房。整个生产由一 级系统(PLC)控制,二级系统不参 与控制,但需要对整个 生产流程的数 据做记录并统 计分析和备份 ,二级系统主要 实现的功能有 :1.接收计划,生产计划由三级系统下发,二级系统只要 把生产计划接 收下来;2.吊销计划; 3.产品跟踪,现场生产的钢 卷信息要实时 反映到二级系 统,指导现场操作 人员生产;4.生成并上传给 三级系统实绩 ,也就是把生产 完成的卷的相 应信息保存下 来并做标签打 印;5.计划和实绩的 查询功能。根据实际需要 ,二级系统由

30、两 个独立的应用 程序构成:上料程序和主 程序。由于篇幅的关 系,这里只讲解上 料程序的制作 流程和逻辑思 路。上料程序的界 面如图 2:图 2上料程序的功 能:1.上料操作提供给操作人 员一个界面,操作人员在接 到生产计划后 ,把待生产的钢 卷用吊车吊放到入口步进梁 的卷位上,然后在画面中 把实物所对应 的信息从数据 库的计划表中 写到跟踪表中 。比如把一个钢 卷号为“412367 04400”吊到入口步进 梁的 1 号卷位 后,在程序中做如下操作:根据轧制明细 表,选择计划号“212067 ”后显示此计划 下所有的合同 号,点击合同号“J00000 0022”,显示此计划、此合同下的钢 卷

31、号,点击这个钢卷 号,点击“上料”按钮,再点击“1 号卷位”,系统就把此钢 卷的信息(计划号、钢卷号)写到跟踪表中 了。2.卸料操作由于操作失误 或者某种原因 ,把刚才入口步 进梁 1 号卷位 的钢卷“412367 04400”上到2 号卷位 ,提供给操作人 员一个“ 卸卷”按钮,当点击它后,就把跟踪表中 的相关信息清 除了,就可以重新执 行上料操作了 。3.钢卷前进当开动步进梁 前进,由于步进梁是 整体前进的,需要把跟踪表 中的信息做相 应修改,点击 “钢卷前进”按钮,就把 5 号卷位 的信息写到 6号卷位,4 号卷位的信 息写到 5 号卷位1 号卷位的信 息写到 2 号卷 位,同时 1 号

32、卷位 的信息清空。实际上,钢卷前进后,由工业 HMI系统把数据库 的信号表的某 个字段值改变 ,通过扫描这个 值的变化,修改跟踪表实 现钢卷自动前 进功能。如果实际设备 动作后由于某 种原因导致信 号表相应字段 的值没有发生 变化,就需要手动点 击“钢卷前进” 按钮了。一、设计数据库使用 Microsoft SQL Server2000,建立一个数据 库,这里需要使用 4 张表:1.接口表 TB_ SplitCutPlan,三级系统下发 计划的方式是 直接写数据到 此表中,当数据库检测 到此表有数据 后把所有数据 插入到计划表 中,并删除此表中 的全部数据;方法是使用触 发器,只有两句 SQL

33、 语句:insert into l2_splitcutplan select * from tb_splitcutplandelete from tb_splitcutplan2.计划表 L2_SplitCutPlan,存放待生产钢 卷的详细信息 ,由于钢卷号是 唯一的,因此把钢卷号 字段 HOT_COIL_NO 设置为主键 。计划表和接口 表的设计一模 一样,把接口表复制 后改名为计划 表就可以了。3.信号表 Signal,当钢卷信息到 了跟踪表的开 卷机时,需要通知三级 系统此卷上了 生产线,也就是说需要 把信号表中某 个字段的值置 1,由主程序去扫 描这个值是否 为 1,当为1 时把跟

34、踪表的开卷机 的钢卷信息写 到三级系统的 相关表中。4.跟踪表 L2_SplitCutMatTrack,存储钢卷信息 ,保持物流和信 息流一致性。二、程序编码难点1.程序界面中,计划号、合同号、钢卷号等三个 供操作人员进 行选择的列表 框为ListBox 控件,随着数据量的 增大,计划号在 ListBox 中 必须按时间倒 序排列,也就是三级系 统最后下发的 计划,其计划号是排 列在 ListBox 的最顶 部的,这样操作人员 一眼就能找到 最近需要生产 的计划号。当然,为了让程序更 加健壮,需要做一个计 划号的查询,在界面的右下 角输入计划号 ,点击“查询计划号” 按钮,在 ListBox

35、中就自动 把此计划号反 选,并查询出此计 划号所对应的 合同号并显示 在合同号列表 框中。在窗体的 FormShow事件中加入下 面代码:procedure TMaterial.FormShow(Sender: TObject);vari:integer;strPlanNo:string;begin/*计划刷新*/Plan_No_ListBox.Items.Clear;/启动画面时清 空计划号列表 框Plan_ADODataSet.Close;/关闭计划表数 据集,这个数据集对 应的是计划表L2_SplitCutPlan 的数据Plan_ADODataSet.CommandText := SE

36、LECT PlanNo from L2_SplitCutPlan group by planno,prg_start_time order by prg_start_time desc;/关键就是这个 SQL 语句,它从计划表中 选择计划号和 时间字段,并按时间字段 倒序排列,同时相同的计 划号只显示一 次。Plan_ADODataSet.Open;/打开数据集for i := 0 To (Plan_ADODataSet.RecordCount-1) do/把计划表的记 录从头到尾扫 描一遍,把每条记录的 计划号字段读 出来,赋给内部变量 strPlanNo,然后把 strPlanNo的值添加

37、到 ListBox中。beginstrPlanNo := Plan_ADODataSet.FieldByName(PlanNo).AsString;Plan_ADODataSet.Next;Plan_No_ListBox.Items.Add(StrPlanNo);end;L2_TrackADODataSet.Active:=false;/当启动画面时 刷新画面右侧 的跟踪表格的 数据,这个表格是 DBGrid 控 件。L2_TrackADODataSet.Active:=true;end;2.当点击合同号 后,在钢卷号列表 框中就显示了 钢卷号,这里显示的钢 卷号必须具备下面两点:1.显示的钢

38、卷号 所对应的计划 号必须是前面 选择的计划号 ;2. 显示的钢卷号 所对应的合同 号必须是前面 选择的合同号 。如果要满足这 两个要求,必须要使用到 SQL 语句。3.如何把选择的 钢卷号上料到 步进梁上面?也就是说如何 把计划表的计 划号、钢卷号字段写 到跟踪表中?根据工艺流程 ,设计的跟踪表 如图 3:图 3Coil_Number 和 Coil_Name 字段的 值是固定的,在程序中是静 止的,只须把选择的 计划号和钢卷 号写给 Coil_No 和 PlanNo 即 可。下面给出“1 号卷位”按钮的代码,操作人员在选 择一个钢卷号 后,点击“上料 ”按钮,再点击“1 号卷位”按钮就把从计

39、 划表中选择的 钢卷号的信息 写到跟踪表中 了。procedure TMaterial.Button5Click(Sender: TObject);vari:integer;tmpCoil:string;beginif UpOrDown=1 then /上料, UpOrDown 是全局变 量,当点击 “上料”按钮后,把这个值置为 1,表示进行上料 操作beginfor i := 0 to (Coil_No_ListBox.Items.Count - 1) do/把选择的钢卷 号的值赋给内 部变量tmpCoilbeginif Coil_No_ListBox.Selectedi thenbegin

40、tmpCoil:=Coil_No_ListBox.Items.Stringsi;/*修改 L2 跟踪 表*/L2_TrackADODataSet.Active:=false;L2_TrackADODataSet.Active:=true;L2_TrackADODataSet.First;/由于是上料到 1 号卷位,就指向跟踪表 的第一条记录if L2_TrackADODataSet.FieldByName(Coil_No).AsString then/如果字段Coil_Name 的值不为空 ,就不应该上料 到此处,给出提示信息 并退出程序beginMessageDlg(此卷位有卷啦 ,请先卸卷

41、, mtError,mbOk, 0);exit;end;L2_TrackADODataSet.Edit;/编辑跟踪表L2_TrackADODataSet.FieldByName(Coil_No).AsString:= tmpCoil; /把选择的钢卷 号写到跟踪表 的第一条记录 的 Coil_No 字段中。L2_TrackADODataSet.FieldByName(PlanNo).AsString:=strPlanNo1; /把选择的钢卷号所对应的计 划号写到跟踪 表的第一条记 录的 PlanNo 字段中。L2_TrackADODataSet.Post;/ 将数据集中修 改的内容写回 到数据

42、库中L2_TrackADODataSet.Active:=false;/刷新表格L2_TrackADODataSet.Active:=true;exit;/退出程序end;end;end;end;编码完成后,需要不断离线 测试,修改程序中的 Bug,完善程序。如果没有大问 题就可以上线 运行了。用 Delphi 编写小型数据库(四)打印标签 2007-05-17 10:42:48| 分类: 电脑资料 | 标签:delphi编程 |字号 订阅技术看点:数据库的格式 化输出技巧、打印调试技巧数据库编程有 一个很重要的 特点,通常需要把数 据输出到打印 机,比如生产线的 成品出厂前需 要贴上标签,财

43、务报表做的 数据统计结果 需要打印给上 司过目,这些都需要在Delphi中根据需要设 计好打印功能 。一、标签打印我们先来设计 标签的打印输 出,这里的 Delphi 版本为 7.0,制作打印程序 需要用到Rave 组件板内 的组件。以攀钢热轧板 厂纵切机组的 程序为例,当生成一条实 绩(成品信息)后,需要在钢卷出 厂前给钢卷贴 上包含此钢卷 数据信息的标 签,标签格式如图 1 所示,标签下面是成 品表,当在成品表格 中选择一条记 录后,把成品表的字 段的值写到标 签的 Edit控件中,这在第二章已 经详细介绍过 了,方法是在 DBGrid 的 OnClick事件中写类似 下面的代码:图 1p

44、rocedure TForm1.DBGrid1CellClick(Column: TColumn);beginedtProductCoilNo.Text :=ADODataSet1.FieldByName(HOT_COIL_NO).AsString;edtThick1.Text:=ADODataSet1.FieldByName(COIL_THICK).AsString;edtWidth1.Text:=ADODataSet1.FieldByName(COIL_WIDTH).AsString;edtPruductWeight.Text:=ADODataSet1.FieldByName(COIL_W

45、EIGHT).AsString;edtShift_No.Text:=ADODataSet1.FieldByName(Shift_No).AsString;edtChecker.Text:=ADODataSet1.FieldByName(DUTY_PERSON).AsString; edtProductTime.Text:=DateTimeToStr(ADODataSet1.FieldByName(PRODUCTION_TIME).AsDateTime);end;这样,当被选择的记 录的信息显示 在 Edit 中 后,只需要把 Edit 的内容按 标签的实际大小输出到打印 机就可以了。找到 Ra

46、ve组件板,把 RvProject1、RvSyst em1 添加到 窗体上。1.双击 RvProject1组件,打开 Rave Report 5.0,新建一个文档 并保存为Project1.rav,关闭 Rave Report 5.0 应用程序。2.设置 RvProject1的属性:RvProject1.Engine:= RvSystem1;RvProject1.ProjectFile:点击属性的浏 览按钮,将弹出一个对 话框,选择上一步保 存的 Project1.rav。3.设置 RvSystem1 的 属性:RvSystem1.DefaultDest:= rdPreview;/打印预览,如

47、果选择 rdPrinter,则直接输出到打印机。建议在调试标 签上各个字符 的相对位置时 选择预览方式 ,调试完成投入 使用时选择直接输出到打印 机方式能节省 时间。SystemSetups.ssAllowSetup:=False;/不做打印机设 置,如果为 True,则每次点击Button1执行打印命令 时将弹出打印 机设置对话框 ,建议在调试期 间选择 True,设置完毕后改 为 False以减小劳动强 度。在 Output Options 对话框的 Report Destination 组 合框中(图 2),选择 Printer,将输出到打印 机;选择 Preview,将显示打印预 览;

48、选择 File,将以 NDR 或 PRN 方式保 存文件。图 2点击 Setup 按钮后将弹 出标准打印机 设置对话框,这里不作阐述 。4.双击 RvProject1组件,打开 Rave Report 5.0。(1)找到 RaveProjectReport LibraryReport 1,并选择它(图 3)。然后在左边的 属性栏中找到 Parameters,并点击浏览按 钮。图 3(2)在弹出的对话 框中,设置 8 个参数 ,输入 A1A8。(3)在 Rave Report 5.0 软件开发环 境上方的组件 页中选择 Report 组件 页,在画布上放置 多个此组件页 的 DataTest 组

49、件,并利用 Alignment组件页的组件 把各个 DataTest排 版,对齐。(4)选中第一个 DataTest 组件,找到属性 DataField,并点击浏览按 钮,将弹出一个对 话框,点击 Project Parameters 下拉 列表框,选择 A1,然后点击“Insert Parameter”按钮,点击“OK”按钮退出。依次选择其余 的 DataTest 组件,做相同的操作 。(5)经过设置后,画布如图 4 所 示。图 4保存并退出 Rave Report 5.0。5.设计完标签后 ,回到 Delphi7.0 开发环境,在主窗体的 Button1中写打印代码 :procedure TForm1.Button1Click(Sender: TObject);beginRvProject1.Open;RvProject1.SelectReport(Report,true);RvProject1.SetParam(A1,edtProductCoilN

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 往来文书

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报