铝电解计算机控制系统_第1页
铝电解计算机控制系统_第2页
铝电解计算机控制系统_第3页
铝电解计算机控制系统_第4页
铝电解计算机控制系统_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一节铝电解计算机控制系统的简介一般的工业生产过程都是连续进行的,而相对办公室而言,铝电解的车间环境现场的条件相对恶劣得多,因此,工业过程控制计算机系统必定是具备实时控制功能的高可靠性系统,并且,作为控制系统的核心部件一一工业控制机,理所当然地应能适应特殊应用场合的环境要求。铝电解计算机上位机管理系统主要是完成对历史数据的管理、实时数据的采集、故障的处理、数据图表显示;实现实时查询、历史查询、故障查询、数据报表的打印以及对各槽的数据记录进行总体浏览,从而体现出管理软件真正的价值所在。本次毕业设计采用结构化软件设计的方法,控制软件大体上可分为三个层次,主控模块、功能模块和子程序模/■、主控模块,,>,V数屏故,,>,V数屏故打控退据幕障处显处印制出理示理模模模模模模块块块块块块1模开数拟关量量据数数据据滤采采集集波11.V粘越阳热八、、病系极列连限效应槽槽电故模模块故故流攵异障块意障障常常规控制出铝函数控制阳极转接函数控制块,(如上图4-1所示)为铝电解计算机控制系统控制软件功能框图。由于铝电解过程控制比较复杂,再加上计算机控制系统所检测和控制的点很多,对控制的要求比较高。所以在设计控制软件时采用结构化程序设计方法。其原则是:自上而下,逐步细化,模块化,结构化编程。软件设计从上层即主模块开始向下逐步细化,每层都由若十个模块组成,程序采用结构化编程。第一层是主模块层,是控制程序的主体部分,它根据铝电解过程不同的工作状态调用相应字模块,是软件的核心部分。第二层是子模块层,是程序的主体部分,主要完成各部分细化模块的调用或直接实现子模块功能。其中主要包括故障处理模块,数据处理模块,屏幕显示模块,控制模块和打印模块。第三层是细化子模块,在最低层,主要完成程序的具体功能。在模块的划分中,将同性质的功能模块归类,每个功能构成一个模块使模块的“耦合程度”尽量小,“内聚程度”尽量大。这样,在修改某一个模块是不涉及到其他模块,增强了模块的相对独立性。铝电解控制软件采用VisualBasic6.0-程序设计语言开发设计,整个软件设计采用结构化,模块化设计方法,如图4-2所示为主程序流程图。图4-2主程序流程图由上图可知,主程序主要由5大功能模块组成,屏幕显示模块主要是实时显示电解槽工作电压,系列电流,故障信息以及系统的工作状态:数据处理模块包括模拟量数据采集,数字量数据采集和数字滤波。由于铝电解现场受电场,磁场,热场交互干扰,所以采集到的现场数据要经过数字滤波处理;故障处理模块包括:阳极效应处理模块,继电器触点粘连处理模块,热槽故障处理模块,病槽故障处理模块和系列电流异常处理模块,各模块都相互独立,控制模块包括:常规控制模块,出铝函数控制模块,阳极转接模块控制。由于出铝和阳极转接后的状态发生很大变化,所以,不能采用常规的控制方法,而采用特需函数控制,这样才能使铝电解过程达到较理想的控制效果。打印模块主要完成打印报表功能。包括实时数据打印和历史数据打印,以及对系列电流、系列电压、槽电压等曲线的打印,工作状态实时打印;对历史数据根据查询的结果进行打印。第二节管理软件开发语言4.2.1VisualBasic6.0简介VisualBasic是一种可视化的、面向对象和采用事件驱动方式的结构化高级设计语言,面向对象是一种全新的程序设计方法,它从根本上改变了传统的程序设计模式。其基本思想是:通过建立与具体实际应用相对应的对象,并通过这些对象的组合来创建具体的应用程序。这种设计方法给程序设计带来了许多良好的特性,如模块性、封装性、继承性、可靠性、可扩充性等总的来看,VisualBasic有以下主要特点:㈠可视化编程VisualBasic提供了可视化设计工具,把Windows界面设计的复杂性"封装起来”。开发人员不必为界面设计而编写大量程序代码,只需要按设计要求的屏幕布局,用系统提供的工具,在屏幕上画出各种“部件”,即图形对象,并设置这些图形对象的属性。㈡面向对象的程序设计VisualBasic是应用面向对象的程序设计方法(OOP),把程序和数据封装起来作为一个对象,并为每个对象赋予应有的属性,使对象成为实在的东西。㈢结构化程序设计语言VisualBasic是解释型语言,在输入代码的同时,解释系统将高级语言分解翻译成计算机可以识别的机器指令,并判断每个语句的语法错误。㈣事件驱动编程机制VisualBasic通过事件来执行对象的操作。一个对象可能会产生多个事件,每个事件都可以通过一段程序来响应,当事件产生时将执行一段指令,来实现指定的操作。㈤访问数据库VisualBasic系统具有很强的数据库管理功能。利用数据控件和数据库管理窗口,可以直接建立或处理MicrosoftAccess格式的数据库,并提供强大的数据存储和检索功能。同时,VisualBasic还能直接编辑和访问其他外部数据库。除了这些特性外,VisualBasic还提供了其它一些功能,包括:动态数据交换(DDE)、对象的链接与嵌入(OLE)、动态链接库(DLL)、Internet组件下载、ActiveX控件的建立等等。在系统默认下,VisualBasic6.0的集成开发环境为传统的WindowsMDI(多文档界面)方式;此外,也可以用SDI(单文档界面)方式启动VisualBasic。本次毕业设计我采用多文档界面操作方式,这样便于操作数据记录,也习惯于我们平常的操作习惯。4.2.2API函数在VisualBasic6.0中应用API是“应用程序编程接口”的简称,这是一系列很复杂的函数。编程人员可以用不同的编程语言调用API函数,编写出在Windows操作系统中运行的应用程序。API函数有成百上千个,这些函数有的可以单独在程序中使用,有的需要几个API函数配合使用。我在本次设计中,采用了几个API函数,包括:GetSystemMenu、RemoveMenu(使关闭按钮失效);FindWindow、SetWindowPos(显示和隐藏任务栏);SndPlaySound(播放音乐);ShellAbout(显示版本信息)。使用API函数可以在很大程度上扩展VisualBasic的功能。如果遇到使用VisualBasic本身提供的语句、函数和控件不便甚至无法实现的操作时,可以考虑使用API函数。在使用上很方便,程序中只要事先对API进行了声明,就可以同使用VisualBasic自身的函数一样,在程序中使用这些函数。第三节管理软件界面设计软件功能是通过模块实现的,因此,在确定软件模块组成时,软件的功能划分成为了首先需要考虑的因素,如表4-1所示。“模块”是结构化设计方法的产物,并在面向对象设计方法中依靠“类、对象”得到了更进一步的加强。按照结构化设计思想,一个具有优良特性的模块应该具有独立性,也就是说要达到低耦合、高内聚的要求。但是,模块的独立性是相对的,它们之间总是存在一定的关系,其中最基本的关系是上级模块对下级模块的功能调用关系,这时上级模块起控制作用,而下级模块则用来完成具体任务。在VisualBasic中,模块还具有一定的多层次特征。图4-3所反映的只是文件级外层模块,以及它们之间的调用关系;而文件内则是由过程、函数组成的内层模块。在创建软件之前,过程、函数组成、调用关系,以及其内部算法等等问题,都应事先确定下来。它们都是软件设计时必须完成的任务。模块名类别说明Modulel标准模块启动系统、设置环境FrmStart窗体模块软件前幕FrmLogin窗体模块铝电解管理软件登录窗体FrmMainMDI窗体模块主窗体FrmCLL窗体模块出铝量数据显示FrmCXXCL窗体模块槽信息处理数据显示FrmCZT窗体模块槽状态数据显示FrmGZJL窗体模块故障记录数据显示FrmSJB窗体模块数据表数据显示FrmSelect窗体模块出铝量、数据表、故障记录三表数据查询FrmMSChart窗体模块图表显示数据FrmTreeSkim窗体模块各槽数据浏览DELDJSuHua设计器数据环境DRCLXX数据报表出铝量数据报表DRCXXCL数据报表槽信息处理数据报表DRCZT数据报表槽状态数据报表DRGZJL数据报表故障记录数据报表DRSJB数据报表数据表数据报表工程管理窗工程-工程1frmCMCL佃DI槽电反-、窗体自frmCLL伽口工系列电蒲采-甜工程1(毕业设计一守顷)6,,,罚frmCZT(JW工槽工作状忘frmGZJL佣口1事怦记录ifrmLogin堕录界面.fifrmMaiR(mdi置体.frm:fEmMSChart(JW1操作帽frmS^lect®DI事件类;frmSJB(W工出铝信息殖frmS-tart(}1叮噪作员管£rmTreeStint隆■摺数提+••口模块-'设计器gEELDJSuHiia(JEUJSuKn@DRcm(出铝信息报表,饵ERCXKCL皤信息处理指@BRCZT潴状态报表一以]@D瞰JL做隙记录报表.艮DRSJT箱数据报表一以】图4-3铝电解管理软件中模块之间的调用关系4.3.1登录窗体(frmLogin)进入管理软件主界面时,必须先验证用户信息,当用户名和密码都正确时才允许进入图4-3登录窗体设计图主界面,如下表4-2为登录窗体的控件列表,其设计窗体如下图4-4图4-3登录窗体设计图控件名称属性名属性值作用FrameNameCaptionFrame1Frame1作为容器CommandButtonNameCaptioncmdExit退出命令按钮CommandButtonNameCaptioncmdOk确定命令按钮TextBoxNamePasswordChartxtPassword*输入密码ComboBoxNamecboUser选择用户LabelNameCaptionLabel1用户LabelNameCaptionLabel2密码表4-2登录窗体所有控件4.3.2主窗体模块(frmMain)主窗体设计视图如图4-4所示,在本实列中,主窗体是控制中心,它通过建立在该窗体上的菜单而实现对各功能窗体的调用控制,其中一些常用功能调用还可以通过工具栏上的图标按钮完成。系统标题栏

系统标题栏图4-4主窗体设计视图主窗体是MID窗体,因此在其内可以打开多个子窗体。另外,公共对话框控件(CommonDialog)放置于主窗体上,这是由于该控件将要被诸多操作应用;在本实列中,“打开文件”对话框、“文件的备份”对话框、“文件导入”对话框都需要提供它获得,下表4-3列出了主创体中菜单的设置情况。表4-3菜单控件属性设置标题名称快捷键铝电解槽信息(&F)Menu_LDJCXX---槽信息处理Menu_CXXCLCtrl+A---出铝量Menu_CLLCtrl+S---数据表Menu_SJBCtrl+ZMenu_Underline1---槽状态Menu_CZTCtrl+X---故障记录Menu_GZJLCtrl+CMenu_Underline2---退出MenuExitDel查询(&S)MenuSelect---数据备份…Menu_SJBF---数据导入...Menu_SJDR---槽数据浏览…Menu_CSJLLMenu_Underline4---查询数据Menu_CSSJ——出铝量查询Menu_SelectCLLCtrl+B------槽数据查询Menu_SelectCSJCtrl+N故障记录查询Menu_SelectGZJLCtrl+VMenu_Underline3

---重排窗口Menu_CTBJ层叠方式MenuVbCascade水平方式MenuVbTileHorizontal垂直方式MenuVbTileVertical------最小化窗体重排MenuVbArrangeIcons帮助(&H)MenuHelp---关于...MenuAboutCtrl+M---内容MenuContentF1另外,两个工具栏的设置情况如下两表4-4和4-5所示。索引标题关键字样式文本对齐1槽处理槽信息处理0—tbrDefault1—tbrTextAlignRight2出铝量出铝量3数据表数据表4槽状态槽状态5故障表故障记录6退出退出5—tbrDropDown表4-4工具栏属性设置(1)索引标题关键字样式文本对齐1出铝查询出铝量查询0—tbrDefault1-tbrTextAlignRight2数据查询槽数据查询3故障查询故障记录查询44—tbrSeparator5层叠方式层叠方式0—tbrDefault6垂直方式垂直方式5—tbrDropDown表4-5工具栏属性设置(2)4.3.3数据显示窗(共包括五个子窗体)如下图4-5所示,列出了在主窗体中显示的窗体。1口»1铝电E通昼£后唾宙彦近宅逢迓:胯.江萱:艾坦导党师L手养露1口»1铝电E通昼£后唾宙彦近宅逢迓:胯.江萱:艾坦导党师L手养露—诣出▼芯出£目查询斐数据查询曜故障查询建层叠方式酩垂直方式-铝电藤控制系统上位机毕地宙厂|04-6-14|21:2S图4-5子窗体在主窗体中显示以下将详细介绍这五个子窗体:槽信息处理窗体(frmCXXCL)这个窗体主要的功能是记载各槽数据的逻辑值如是否打印、是否换槽等等。这个以后的历史数据查询的时候有依据可查,下图4-6所示槽信息处理运行界面图。图4-6槽信息处理运行界面图下表4-6为控件属性设置值控件名称属性名属性值作用.AdodcNameCaptionAdodc1Adodc1获取记录集,实现数据绑定SSTabNameTabsPerRowSSTab12浏览,切换FrameNameCaptionFrame1Frame1容器DataGridNameDataGrid1数据绑定,获取记录集CommandButtonNameCaptionCmdExit退出命令按钮CommandButtonNameCaptionCmdUpdate刷新CommandButtonNameCaptionCmdDelete删除CommandButtonNameCaptionCmdAddNew增加CommandButtonNameCaptionCmdMoveLast末记录CommandButtonNameCaptionCmdMoveNext下一条CommandButtonNameCaptionCmdMovePrevious上一条CommandButtonNameCaptionCmdMoveFirst首记录

CheckBoxNameCaptionDataFieldCheck3修改设定值修改设定值TimerNameEnabledIntervalTimer1False100时间触发器TextBoxNameDataFieldDataSourcetxt_CBH槽编号Adodc1数据绑定TextBoxNameDataFieldDataSourcetxt_CZRQ操作日期Adodc1CheckBoxNameCaptionDataFieldDataSourceCheck1是否打印是否打印Adodc1CheckBoxNameDataFieldDataSourceCheck2是否换槽Adodc1表4-6槽信息处理窗体控件属性设置值出铝量窗体(frmCLL)此窗体主要用来记录各槽的出铝情况,包括出铝量、开始时间、完成时间、出铝用时。此表记录的数据量大,维护起来比较费时费力,合理的安排表的结构以及数据记录的采集,是系统正常运行的保证。下表4-7和图4-7分别列出了窗体控件的属性值和界面运行图。控件名称属性名属性值作用DataGridNameCaptionDataGrid1铝电解各槽出铝量显示记录AdodcNameAdodc1CommonDialogNameCommonDialog1TextBoxNameDataFieldDataSourceText1槽编号Adodc1表4-7出铝量窗体控件属性值

图4-7出铝量窗体界面运行图数据表窗体(frmSJB)此窗体主要用来记录各槽的电流、电压数据,包括:槽电压、系列电压、系列电流。各槽正常工作时,电流电压应该保持稳定,随着时间的推移,铝条与槽底的距离不断的变化着,而电压与距离有关,所以应随时跟踪数据的变化以调整变化的电压,使之动态的达到稳定。下表4-8和图4-8表示窗体控件的属性设置值和窗体运行效果。控件类型控件名控件值作用AdodcNameAdodc1获取记录集,绑定数据.DataGridNameDataGrid1FrameNameFrame1FrameNameFrame2CommandButtonNameCommand1命令按钮Command8TextBoxNameDataSourceText1绑定数据Text4Adodc1CommonDialogNameCommonDialog1公共对话框.LabeNameLabelLabel7表4-8数据表窗体控件列表

图4-8数据表窗体运行图槽状态窗体(frmCZT)此窗体主要用来记录各槽的状态值,包括:是否出铝、是否加料、是否粘连、是否转接。此窗体主要记录着各槽数据的逻辑值,易于维护,操作简单,工作量不大等优点。下表4-9和图4-9是窗体控件列表和窗体运行效果。控件类型控件名属性值作用.DataGridNameAdodcSourceDataGrid1Adodc1显示数据记录AdodcNameAdodc1数据绑定,获取记录集.CommonDialogNameCommonDialog1公共对话框表4-9槽状态窗体控件列表HI檀编号是否出铝是否加料是否粘连是否转二►1-1-1-1-150-1-1a6-1□-1-170-1□a80□-1-i卜iM[J总记录条数;1口当前记录为;1〔T代表_►1►ij图4-9槽状态窗体运行图故障记录窗体(frmGZJL)此窗体主要用来记录槽的故障发生情况,包括:各槽故障的类型、故障原因、发生时间、处理情况。铝电解槽的故障类型主要分这么几类:病槽、热槽、冷槽、停槽、阳极效应。此表维护起来工作量也很大,必须实时观察各槽的工作情况,出了毛病的槽要及时进

行修理以免影响系统的正常工作。下表4-10和图4-10分别是窗体控件列表和运行图。表4-10故障记录窗体控件列表控件类型控件属性控件值作用AdodcNameAdodc1获取记录集,实现数据绑定FrameNameFrame1容器Frame4CommandButtonNameCommand1命令按钮Command8CommonDialogNameCommonDialog1公共对话框TextBox.NameText1Text5数据显示,数据绑定LabelNameLabel1Label6图4-10故障记录运行图4.3.4窗体查询界面一个完整的应用软件,除了有数据的显示,增加,删除等操作外,如果没有数据的查询,那么多少有点不完善,下面我将讲述出铝量查询窗体、数据表查询窗体、故障记录查询窗体的操作。出铝量查询下图4-11所示为出铝量查询界面图功能简单阐述一下,本窗体可查询各槽的出铝量,也可以按出铝量查询,例如查询一号槽的出铝情况,在槽编号文本框中输入数字“1”然后单击“确定”按钮,查询条件将会出现在“查询条件显示”框里出现,以核对查询条件是否正确,当确认无误后,单击“查14询”按钮,稍等片刻,查询结果将显示在“查询”结果里;当要以“出铝量”为查询条件的话,可以这样操作,选择“出铝量”的查询条件,包含%、<、<=、>=、=”五种情况,查询:.查询条件槽澈1蓝表查疽、逮薄记录查询'1查询条件显示』查询结果〕查询:.查询条件槽澈1蓝表查疽、逮薄记录查询'1查询条件显示』查询结果〕吨hHLKh唐端号=~231出铝堂查御组舍查询:算L查EE1£CT*FEOfil图4-11出铝量查询界面图任选其一,然后输入要查询吨位的范围,如,我想查询出铝量小于并且等于3吨的槽号,可以在查询组合框中选择“<二”条件,然后输入数字三,单击“确定”按钮,确认条件无误后,单击“查询”按钮,查询结果将显示在下面的表格里;如果想进行组合查询,也可以按上述步骤,不过进行组合查询时要注意一个问题,就是输入槽编号后,不要忘了选后面的组合条件。另外,此窗体还可以进行三向特需操作,想把查询结果保存下来,一是以报表形式保存,二是以图表形式显示,三是以Excel文件格式保存。槽数据查询运行界面如下图4-12所示查询条查询结果查询条件显示7查询条查询结果查询条件显示7如[卉Wn.FCT一*FROM数旭表WIERE敷编号=1图4-12槽数据查询界面槽数据表查询主要以电压查询为主,当查询结果显示的电压不符合正常电压时,可以5Q设计网15及时修正,具有查询和修改双向功能。查询步骤如下:先查询想要查询的槽的电压情况,输入槽号,然后单击“确定”按钮,“查询条件显示”文本框将显示查询条件以核对之用,单击“查询”按钮稍等片刻,查询结果将显示在下面的表格里;查询电压时,将列出符合条件的槽号,显示在表格里,此窗体也提供三种存储查询数据的方式,如:报表、图表、Excel三种形式。在“槽电压”文本框中输入查询条件,也包括五种条件,如选择“<=”条件,然后输入你想查询电压的范围,如输入数字“4”,单击“确定”按钮,显示查询条件,单击“查询”按钮,查询结果将显示在表格里;当进行组合查询时,可遵照“出铝量查询”操作步骤进行。故障记录查询运行界面如下图4-13所示04-S-15SELECT*FROM故障记录WHERE炭生时间Between#00-5-16#And#04-6-15#,已tween|ao-5-16曰期匠SQL查询语句^5故障类型查询日期槽编号障类型敌I璋原因04-S-15SELECT*FROM故障记录WHERE炭生时间Between#00-5-16#And#04-6-15#,已tween|ao-5-16曰期匠SQL查询语句^5故障类型查询日期槽编号障类型敌I璋原因11.6病;11七J温度太1■氐"Tin—热槽1扃■度rSi确定生成报表..-生成ExcwL..查询|查伺结果:查询条件显示单击“DTPicker”控件,将出现上图式样,选择好日期,单击“确定”按钮,显示查询条件,确认无误后,单击“查询”按钮,稍等片亥L查询结果将显示在“DataGrid”控件里。保存查询结果,这里只提供两种方式,即报表方式和转换成Excel这两种方式;当需

图4-13DTPicker控件图图4-13DTPicker控件图第四节各槽数据总体浏览在设计完一个应用程序后,当数据库里的数据不太多时,想查看每一条具体的记录是可以实现的,但当数据库里的数据大得惊人时,想一条一条去查找,那是不可实现一件事情,就如本次毕业设计一一铝电解上位机管理系统,数据一天一记,而且还必须几时几分一记,一个月下来,一年下来,那数据将是非常可观的,如果想查看具体某一个槽出铝情况,就必须打开上面的“出铝量”查询窗体,虽然经过一段时间查询,能查到你所想要的数据,但是毕竟不是好的方法。如果想在Windows资源浏览器里一样浏览数据,那想必是一件轻松的事情,我按照上述想法,设计了一个树状浏览器,方便浏览各槽数据,效果显示图见下图4-14和表4-11所示。树状浏览器靠铝电解各槽数据说]故膜记录皆摺状态数据表出铝量画此录|表节点°¥铝电解控制理■与A"树状浏览器靠铝电解各槽数据说]故膜记录皆摺状态数据表出铝量画此录|表节点°¥铝电解控制理■与A"表所有信息槽编号出铝量Ub开蛇时间完H▲►1Q0-4-L叶一451/9B-2-L052.31/98-2-1598-;626「98-2-398-;72.398-2-1明-;82.697-5-6953.297-6-397-(102.6□0-6-3oo-t112.5□0-3-100-:123.2□0-3-B00-:1-!W公…rin-.-1-Q「|「|_;11H®记录数总共为7^当前记录为第1条1小1DataGrid数据表Adodc数据控件图4-14数据浏览器控件类型属性名属性值作用TreeViewNameImageListTreeView1ImageList1数据浏览DataGridNameAdodcSourceDataGrid1Adodc1o一、,J表4-11数据显示数据]浏览窗体控oO件列表>AdodcNameAdodc1记录集,实现数据绑定^ImageListNameImageList1获取图象控件见上表4-11控件列表中,使用了四个控件:TreeView、DataGrid、Adodc、ImageList,其中TreeView控件是主要控件,它在窗体初始化过程中,通过数据链接,查找数据库每一个表,把每个表的标题作为父节点,把每个表里的槽号作为子节点放到TreeView控件中里,这样在浏览数据时,一般先选中父节点,就代表要浏览那个表里的数据,当选中子节点时,说明要浏览具体那个槽,这样就可以把每个表里的每一个槽的数据记录显示出来,TreeView控件支持鼠标和四个方向键。进行数据显示的过程可以有以下描述:进行数据浏览时,打开窗体,用鼠标和方向键都可以,原理大致就是上面所说的,当你点击子节点时(点击父节点不会有任何反应,但这也是不可缺少的一步),将激发TreeView1控件的NodeClick事件,在那里面编写代码,根据点击的槽号进行判断,以及所处的父节点的位置,经过一个循环,就可以得知要查询的槽号,编译成SQL语句,把它赋值个Adodc1控件的RecordSource属性,然后Adodc1控件进行刷新,与它相连的DataGrid1控件显示查询数据,虽然表面上说是数据的浏览,其实质还是数据的查询。第五章铝电解计算机管理软件程序代码第一节启动模块代码本毕业设计中,启动模块用于设置软件运行时的公共数据环境和顺序调用frmLogin(登录窗)、frmMain(主窗体)等下级模块,由此进入管理软件运行环境。Module1源程序如下:OptionBase1PublicfMainAsfrmMainPublicCQXAsStringPublicConStringAsStringPublicps_sqlCommonAsStringPublicps_ChartTitleCommonAsStringPublicpa_ArrValueCommon()PublicDeclareFunctionsndPlaySoundLib"winmm.dll"Alias"sndPlaySoundA"(ByVallpszSoundNameAsString,ByValuFlagsAsLong)AsLongPublicDeclareFunctionShellAboutLib"shell32.dll"Alias"ShellAboutA"(ByValhwndAsLong,ByValszAppAsString,ByValszOtherStuffAsString,ByValhIconAsLong)AsLongPublicDeclareFunctionGetSystemMenuLib"user32"(ByValhwndAsLong,ByValbRevertAsLong)AsLongPublicDeclareFunctionRemoveMenuLib"user32"(ByValhMenuAsLong,ByValnPositionAsLong,ByValwFlagsAsLong)AsLongSubmain()OnErrorResumeNextConString="Provider二Microsoft.Jet.OLEDB.4.0;"&"DataSource="&App.Path&"\ALElecCompSystAdmi.mdb;"&"PersistSecurityInfo=False"DimfLoginAsNewfrmLoginDimfStartAsNewfrmStart,fStart.ShowvbModalfLogin.ShowvbModalEndSubSubClose_ClosedButton(a,B)'使关闭按钮失效DimhMenuhMenu=GetSystemMenu(a,0)RemoveMenuhMenu,&HF060,&H1000'************************此段为使关闭按钮失效EndSub第二节登录窗体模块代码用户登录窗(frmLogin)用于当进入铝电解管理软件时,对用户口令的验证,这样有效的防止非法用户进行操作。frmLogin模块运行效果图5-1所示。厂登录窗体V运行图厂登录窗体V运行图图5-1登录窗体DimTIMAsIntegerDimmydbAsDatabaseDimmyrsAsRecordsetDimsqlAsStringPrivateSubForm_Load()DimaAsStringDimBAsIntegera=Me.hwndB=0Close_ClosedButtona,BX=sndPlaySound(App.Path&"\Welcom98.wav",&H1)EndSubPrivateSubForm_Activate()Setmydb=Workspaces(0).OpenDatabase(App.Path&"\GraduateDesign.mdb")'打开数据库sql="select操作员fromRegisterPerson"Setmyrs=mydb.OpenRecordset(sql)',dbOpenDynaset)Ifmyrs.EOF=FalseThenmyrs.MoveLastIfmyrs.BOF=FalseThenmyrs.MoveFirstForI=0Tomyrs.RecordCount-1cboUser.AddItem(myrs.Fields(0))myrs.MoveNextNextIIfcboUser.ListCount>0ThencboUser.ListIndex=0myrs.Closemydb.ClosecboUser.SetFocusEndSubPrivateSubcboUser_Click()Staticli_iAsIntegertxtPassword.SetFocusIfli_i>0ThenX=sndPlaySound(App.Path&〃、水底世界菜单命令.wav",&H1)EndIflii=lii+1EndSubPrivateSubcboUser_DropDown()X=sndPlaySound(App.Path&〃、水底世界菜单弹出.wav",&H1)EndSubPrivateSubcmdOk_Click()'确认操作员和密码DimMESSAGEAsStringIfcboUser.Text<>""ThenSetmydb=Workspaces(0).OpenDatabase(App.Path&"\GraduateDesign.mdb")Setmyrs=mydb.OpenRecordset("RegisterPerson",dbOpenDynaset)myrs.FindFirst"操作员="+Chr(34)+cboUser.Text+Chr(34)+""'查找操作员"Ifmyrs.NoMatchThen'没查到记录MsgBox("无此操作员!")ElseIftxtPassword.Text=myrs.Fields("密码")Then'确认密码myrs.Closemydb.CloseUnloadMeSetfrmLogin=NothingfrmMain.ShowX=sndPlaySound(App.Path&"、水底世界放到最大.wav",&H1)5Q设计网20ElseIfTIM=3ThenMESSAGE=MsgBox("密码输入错误,请向系统管理员查询!〃,vbOKOnly,〃〃)EndEndIfX=sndPlaySound(App.Path&"\Reminder.wav",&H1)MsgBox(〃密码错误,请重新输入密码!")TIM=TIM+1'密码输入错误次数txtPassword.SetFocustxtPassword.SelStart=0txtPassword.SelLength=Len(txtPassword.Text)EndIfEndIfEndIfEndSubPrivateSubcboUser_KeyDown(KeyCodeAsInteger,ShiftAsInteger)'回车换彳亍IfKeyCode=vbKeyDownThentxtPassword.SetFocusEndIfEndSubPrivateSubtxtPassword_KeyDown(KeyCodeAsInteger,ShiftAsInteger)IfKeyCode=vbKeyDownThencmdOk.SetFocusEndIfIfKeyCode=vbKeyUpThencboUser.SetFocusEndIfEndSubPrivateSubcmdExit_Click()DimmsgAsIntegermsg=MsgBox(〃确实要退出铝电解毕业设计程序吗?〃,vbYesNoOrvbDefaultButton2,〃苏华程序设计〃)Ifmsg=6ThenX=sndPlaySound(App.Path&〃、电脑探密启动.wav〃,&H1)EndEndIfEndSub第三节主窗体模块代码第三节主窗体模块代码主窗体(frmMain)运行图5-2所示。在本实列中,主窗体时控制中心,它通过建立在该窗体上的菜单而实现对各功能窗体的调用控制,其中一些常用功能调用还可以通过工具栏上的图标按钮完成。

辱铝电解上位机控制系藐毕业设计,设计者;苏华,指导君.一指电解槽信息查询q铝电解上位机控制系场毕业设计,设计者:苏再主窗体工具栏I心情姓理箪出铝量等数据表卷槽状态gjj敌圜表宅退出申2。查询主窗体工具栏2。铝电解控制系统上位机毕业设计04-6-165:02主窗体运行界面图5-2主窗体运行图frmMain模块源程序如下:PrivateSubMenu_CLL_Click()frmCLL.ShowEndSubPrivateSubMenu_CDY_Click()Form2.ShowEndSubPrivateSubMenu_CSJLL_Click()frmTreeSkim.ShowEndSubPrivateSubMenu_CXXCL_Click()frmCXXCL.ShowEndSubPrivateSubMenu_CZT_Click()frmCZT.ShowEndSubPrivateSubMenu_GZJL_Click()frmGZJL.ShowEndSubPrivateSubMenu_SelectCLL_Click()frmSelect.ShowEndSubPrivateSubMenu_SelectCSJ_Click()frmSelect.ShowEndSubPrivateSubMenu_SelectGZJL_Click()frmSelect.ShowEndSubPrivateSubMenu_SJB_Click()frmSJB.ShowEndSubPrivateSubMenu_SJBF_Click()Dimfs1AsNewFileSystemObjectConstvbOFNOverwritePrompt=&H2&ConstvbOFNPathMustExist=&H800&Me.dlgCommonDialog.FileNameMe.dlgCommonDialog.DialogTitle=〃数据备份(苏华设计)"Me.dlgCommonDialog.DefaultExt=〃*.mdb〃Me.dlgCommonDialog.Filter=〃数据库(*.MDB)|*.mdb|所有文件(*.*)|*.*〃Me.dlgCommonDialog.Flags=vbOFNOverwritePromptOrvbOFNPathMustExistOnErrorGoToHandllMe.dlgCommonDialog.ShowSaveIfMe.dlgCommonDialog.FileName<>""Then"\ALElecCompSystAdmi.mdb",fsl.CopyFileApp.Path&Me.dlgCommonDialog.FileName,TrueMsgBox〃数据库信息备份成功。",vbOKOnly,〃苏华程序设计〃"\ALElecCompSystAdmi.mdb",ElseMsgBox〃没有备份任何数据〃,vbOKOnly,〃苏华程序设计〃EndIfExitSubHandll:MsgBoxErr.Description,vbOKOnly,〃苏华程序设计〃EndSubPrivateSubMenu_SJDR_Click()DimfsAsNewFileSystemObjectConstvbOFNFileMustExit=&H800&Me.dlgCommonDialog.DialogTitle=〃数据导入(苏华设计)〃Me.dlgCommonDialog.Filter=〃数据库(*.mdb)|*.mdb|所有文件(*.*)|*.*"Me.dlgCommonDialog.Flags=vbOFNFileMustExitOnErrorGoToHandllMe.dlgCommonDialog.ShowOpenIfMe.dlgCommonDialog.FileName<>""Thenfs.CopyFileMe.dlgCommonDialog.FileName,App.Path&〃、数据库备份\ALElecCompSystAdmi.mdb",TrueMsgBox〃数据库信息成功导入。",vbOKOnly,〃苏华程序设计〃ElseMsgBox〃没有导入任何数据〃,vbOKOnly,〃苏华程序设计〃EndIfExitSubHandll:MsgBoxErr.Description,vbOKOnly,〃苏华程序设计〃EndSubPrivateSubMenuAbout_Click()ShellAboutMe.hwnd,"“关于”铝电解控制系统〃,"指导老师:李界家,"&Chr(13)&〃设计者:苏华〃&Chr(13)&Mid(Str(Now),1,8),ByVal0&EndSubPrivateSubMenuContent_Click()Me.dlgCommonDialog.HelpFile=App.Path&"\Winabc.hlp"Me.dlgCommonDialog.ShowHelpEndSubPrivateSubMenuExit_Click()DimmsgAsIntegermsg=MsgBox("确实要退出铝电解毕业设计程序吗?〃,vbYesNoOrvbDefaultButton2,〃苏华程序设计〃)Ifmsg=6ThenUnloadfrmMainEndEndIfEndSubPrivateSubMenuVbArrangeIcons_Click()Me.ArrangevbArrangeIconsEndSubPrivateSubMenuVbCascade_Click()Me.ArrangevbCascadeEndSubPrivateSubMenuVbTileHorizontal_Click()Me.ArrangevbTileHorizontalEndSubPrivateSubMenuVbTileVertical_Click()Me.ArrangevbTileVerticalEndSubPrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)SelectCaseButton.KeyCase〃槽信息处理〃Menu_CXXCL_ClickCase〃出铝量〃Menu_CLL_ClickCase〃数据表〃Menu_SJB_ClickCase〃槽状态〃Menu_CZT_ClickCase〃故障记录〃Menu_GZJL_ClickCase〃退出〃MenuExit_ClickEndSelectEndSubPrivateSubToolbar2_ButtonClick(ByValButtonAsMSComctlLib.Button)SelectCaseButton.KeyCase〃出铝量查询〃Menu_SelectCLL_ClickCase〃槽数据查询〃Menu_SelectCSJ_ClickCase〃故障记录查询〃Menu_SelectGZJL_ClickCase〃层叠方式〃MenuVbCascade_ClickCase〃垂直方式〃MenuVbTileVertical_ClickEndSelectEndSubPrivateSubMDIForm_Unload(CancelAsInteger)SetfrmMain=NothingEndSub第四节数据显示窗体模块代码数据显示窗共包括五个子窗体,运行图见第四章的图4-5所示,下面讲述它们的模块代码:5.4.1槽信息处理窗体(frmCXXCL)模块源程序如下:DimdbAsNewADODB.ConnectionDimrsAsNewADODB.RecordsetDimnewxlsAsExcel.ApplicationDimnewbookAsExcel.WorkbookDimnewsheetAsExcel.WorksheetPrivateSubForm_Load()Me.Adodc1.ConnectionString=ConStringMe.Adodc1.RecordSource="select*from槽信息处理〃Me.Adodc1.RefreshLabel4.Caption="2004届铝电解上位机控制系统毕业设计,指导老师:李界家,设计者:苏华;一一槽信息处理〃Label4.Left=Me.WidthSSTab1_Click1EndSubPrivateSubAdodc1_MoveComplete(ByValadReasonAsADODB.EventReasonEnum,ByValpErrorAsADODB.Error,adStatusAsADODB.EventStatusEnum,ByValpRecordsetAsADODB.Recordset)Me.Adodc1.Caption=〃总记录条数:"&(Me.Adodc1.Recordset.RecordCount)&Space(2)&"当前记录为:"&(Me.Adodc1.Recordset.AbsolutePosition)&Space(2)&〃设计人:苏华〃EndSubPrivateSubMenu_SCBBWJ_Click()DimsqlAsStringOnErrorGoToHandllIfdb.Mode=16Thenrs.Closedb.Closedb.Mode=0EndIfdb.ConnectionString=ConStringdb.Opensql="select*from槽信息处理〃rs.Opensql,db,adOpenStatic,adLockReadOnlySetDRCXXCL.DataSource=rsDRCXXCL.Show

ExitSubHandll:MsgBoxErr.Description,vbOKOnly,〃内部错误〃&Err.Number&"苏华设计"Ifdb.Mode=16ThenEndEndSubPrivatedb.Closedb.Mode=0EndEndSubPrivateDimls_strAsStringConstvbOFNOverwritePrompt=&H2&Me.CommonDialog1.FileName=〃〃Me.CommonDialogl.Filter=〃所有文件(*.*)|*.*|Excel文件(*.xls)|*.xls〃Me.CommonDialogl.FilterIndex=2Me.CommonDialogl.DialogTitle=〃将“槽信息处理"表转换成Excel文件〃Me.CommonDialogl.Flags=vbOFNOverwritePromptOnErrorGoToHandllMe.CommonDialogl.ShowSaveIfMe.CommonDialogl.FileName<>""ThenIfdb.Mode=l6Thenrs.Closedb.Closedb.Mode=0EndIfdb.ConnectionString=ConStringdb.Opensql="select*from槽信息处理〃rs.Opensql,db,adOpenStatic,adLockReadOnlySetnewxls=CreateObject("Excel.Application")Setnewbook=newxls.Workbooks.AddSetnewsheet=newbook.Worksheets(l)newsheet.Range(〃Al:El〃).Value=Array(〃槽编号〃,〃是否打印〃,〃是否换槽",〃修改设定值〃,〃操作日期〃)newsheet.Range(〃A2〃).CopyFromRecordsetrsls_str=CommonDialogl.FileNamenewbook.SaveAsls_strnewxls.Quitrs.Closedb.Closedb.Mode=0MsgBox〃数据转换成功。",vbOKOnly,〃苏华程序设计〃ElseMsgBox〃此次操作已取消〃,vbOKOnly,〃苏华程序设计〃EndIfExitSubHandll:MsgBoxErr.Description,vbOKOnly,"苏华程序设计"Ifdb.Mode=16Thenrs.Closedb.Closedb.Mode=0EndIfEndSubPrivateSubMenuAbout_Click()ShellAboutMe.hwnd,〃铝电解槽信息处理数据表〃,〃指导老师:李界家〃&Chr(13)&_〃设计者:苏华〃&Chr(13)&〃演示时间:〃&Date,Me.IconEndSubPrivateSubMenuExit_Click()UnloadfrmCXXCLEndSubPrivateSubSSTab1_Click(PreviousTabAsInteger)IfPreviousTab=1ThenAdodc1.Visible=FalseLabel4.Visible=TrueTimer1.Enabled=TrueEndIfIfPreviousTab=0ThenAdodc1.Visible=TrueLabel4.Visible=FalseTimer1.Enabled=FalseEndIfEndSubPrivateSubcmdMoveFirst_Click()Adodc1.Recordset.MoveFirstcmdMovePrevious.Enabled=TruecmdMoveNext.Enabled=TrueEndSubPrivateSubcmdMovePrevious_Click()cmdMoveNext.Enabled=TrueIfNotAdodc1.Recordset.BOFThenAdodc1.Recordset.MovePreviousIfAdodc1.Recordset.BOFThencmdMovePrevious.Enabled=FalseAdodc1.Recordset.MoveNextEndIfEndSubPrivateSubcmdMoveNext_Click()cmdMovePrevious.Enabled=TrueIfNotAdodc1.Recordset.EOFThenAdodc1.Recordset.MoveNextIfAdodc1.Recordset.EOFThencmdMoveNext.Enabled=FalseAdodc1.Recordset.MovePreviousEndIfEndSubPrivateSubcmdMoveLast_Click()Adodcl.Recordset.MoveLastcmdMovePrevious.Enabled=TruecmdMoveNext.Enabled=TrueEndSubPrivateSubcmdAddNew_Click()Adodc1.Recordset.AddNewtxt_CZRQ.Text=Datetxt_CBH.SetFocusEndSubPrivateSubcmdDelete_Click()Dimli_msgAsIntegerli_msg=MsgBox("记录将被永久删除,是否继续?",vbYesNoOrvbDefaultButton2,〃苏华程序设计〃)Ifli_msg=6ThenIfNotAdodc1.Recordset.EOFThenAdodc1.Recordset.DeleteAdodc1.Recordset.MoveNextEndIfIfAdodc1.Recordset.EOFAndAdodc1.Recordset.BOF=FalseThenAdodc1.Recordset.MovePreviousEndIfEndIfEndSubPrivateSubcmdUpdate_Click()Adodc1.Recordset.UpdateAdodc1.RefreshAdodc1.Recordset.MoveFirstcmdMovePrevious.Enabled=TruecmdMoveNext.Enabled=TrueEndSubPrivateSubcmdExit_Click()UnloadfrmCXXCLEndSubPrivateSubTimer1_Timer()IfLabel4.Left+Label4.Width>0ThenLabel4.Left=Label4.Left—200ElseLabel4.Left=Me.WidthEndIfEndSubPrivateSubForm_Unload(CancelAsInteger)OnErrorGoToHandllIfdb.Mode=16Thenrs.Closedb.Closedb.Mode=05Q设计网28EndIfSetfrmCXXCL=NothingExitSubHandll:MsgBoxErr.Description,vbOKOnly,〃内部错误〃&Err.Number&"苏华设计〃Ifdb.Mode=16Thendb.Closedb.Mode=0EndIfEndSub5.4.2出铝量窗体(frmCLL)模块源程序如下:DimdbAsNewADODB.ConnectionDimrsAsNewADODB.RecordsetDimnewxlsAsExcel.ApplicationDimnewbookAsExcel.WorkbookDimnewsheetAsExcel.WorksheetPrivateSubAdodc1_MoveComplete(ByValadReasonAsADODB.EventReasonEnum,ByValpErrorAsADODB.Error,adStatusAsADODB.EventStatusEnum,ByValpRecordsetAsADODB.Recordset)OnErrorResumeNextMe.Adodcl.Caption=〃总记录条数:〃&(Me.Adodcl.Recordset.RecordCount)&Space(2)&〃当前记录为:〃&(Me.Adodcl.Recordset.AbsolutePosition)EndSubPrivateSubForm_Load()Me.Adodc1.ConnectionString=ConStringMe.Adodcl.RecordSource="select*from出铝信息〃Me.Adodc1.RefreshAdodcl.Left=0Adodcl.Width=Me.Width-150DataGridl.Left=0DataGridl.Top=0DataGridl.Width=Me.Width-l50DataGridl.Height=Adodcl.TopEndSubPrivateSubForm_Resize()IfMe.Width>l50AndMe.Height>Adodcl.Height*2-l00ThenDataGridl.Width=Me.Width-l50DataGridl.Height=Me.Height-Adodcl.Height*2-l00Adodcl.Width=Me.Width-l50Adodcl.Top=DataGridl.HeightEndIfEndSubPrivateSubMenu_SCBBWJ_Click()DimsqlAsStringOnErrorGoToHandllIfdb.Mode=l6Thenrs.Close

5Q设计网29db.Closedb.Mode=0EndIfdb.ConnectionString=ConStringdb.Opensql="select*from出铝信息〃rs.Opensql,db,adOpenStatic,adLockReadOnlySetDRCLXX.DataSource=rsDRCLXX.ShowExitSubHandll:MsgBoxErr.Description,vbOKOnly,"内部错误"&Err.Number&"苏华设计〃Ifdb.Mode=16ThenEndEndSubPrivatedb.Closedb.Mode=0IfSubMenu_SJZH_Click()Dimls_strAsStringConstvbOFNOverwritePrompt=&H2&Me.CommonDialogl.FileName=""Me.CommonDialogl.Filter=〃所有文件(*.*)|*.*|Excel文件(*.xls)|*.xls〃Me.CommonDialogl.FilterIndex=2Me.CommonDialogl.DialogTitle=〃将“出铝信息"表转换成Excel文件〃Me.CommonDialogl.Flags=vbOFNOverwritePromptOnErrorGoToHandllMe.CommonDialogl.ShowSaveIfMe.CommonDialogl.FileName<>""ThenIfdb.Mode=l6Thendb.Closedb.Mode=0EndIfdb.ConnectionString=ConStringdb.Opensql="select*from出铝信息〃rs.Opensql,db,adOpenStatic,adLockReadOnlySetnewxls=CreateObject("Excel.Application")Setnewbook=newxls.Workbooks.AddSetnewsheet=newbook.Worksheets(l)newsheet.Range("Al:El").Value=Array(〃槽编号〃,〃出铝量(吨)",〃开始时间〃,〃完成时间〃,〃出铝用时(秒)")newsheet.Range("A2").CopyFromRecordsetrsls_str=CommonDialogl.FileNamenewbook.SaveAsls_strEndEndSubPrivatedb.Mode=0'0代表数据连接已经断开MsgBox〃数据转换成功。",vbOKOnly,〃苏华程序设计〃ElseMsgBox"此次操作已取消",vbOKOnly,"苏华程序设计"EndIfExitSubHandll:MsgBoxErr.Description,vbOKOnly,"苏华程序设计"Ifdb.Mode=16Thenrs.Closedb.Closedb.Mode=0EndIfEndSubPrivateSubMenuAbout_Click()ShellAboutMe.hwnd,"铝电解出铝信息数据表","指导老师:李界家"&Chr(13)&"设计者:苏华"&Chr(13)&"演示时间:"&Date,Me.IconEndSubPrivateSubMenuExit_Click()UnloadfrmCLLEndSubPrivateSubMenuMoveFirst_Click()Adodc1.Recordset.MoveFirstMenuMovePrevious.Enabled=TrueMenuMoveNext.Enabled=TrueEndSubPrivateSubMenuMoveLast_Click()Adodc1.Recordset.MoveLastMenuMovePrevious.Enabled=TrueMenuMoveNext.Enabled=TrueEndSubPrivateSubMenuMoveNext_Click()MenuMovePrevious.Enabled=TrueIfNotAdodc1.Recordset.EOFThenAdodc1.Recordset.MoveNextIfAdodc1.Recordset.EOFThenMenuMoveNext.Enabled=FalseAdodc1.Recordset.MovePreviousEndIfEndSubPrivateSubMenuMovePrevious_Click()MenuMoveNext.Enabled=TrueIfNotAdodc1.Recordset.BOFThenAdodc1.Recordset.MovePreviousIfAdodc1.Recordset.BOFThenMenuMovePrevious.Enabled=FalseAdodc1.Recordset.MoveNextEndIfEndSubPrivateSubForm_Unload(CancelAsInteger)Ifdb.Mode=16Thenrs.Closedb.Closedb.Mode=0EndIfSetfrmCLL=NothingEndSub5.4.3数据表窗体(frmSJB)模块源程序如下:DimdbAsNewADODB.ConnectionDimrsAsNewADODB.RecordsetDimnewxlsAsExcel.ApplicationDimnewbookAsExcel.WorkbookDimnewsheetAsExcel.WorksheetPrivateSubAdodc1_MoveComplete(ByValadReasonAsADODB.EventReasonEnum,ByValpErrorAsADODB.Error,adStatusAsADODB.EventStatusEnum,ByValpRecordsetAsADODB.Recordset)Me.Adodc1.Caption=〃总记录条数:〃&(Me.Adodc1.Recordset.RecordCount)&"当前记录为:〃&(Me.Adodc1.Recordset.AbsolutePosition)EndSubPrivateSubCommand1_Click()Adodc1.Recordset.MoveFirstCommand2.Enabled=TrueCommand3.Enabled=TrueEndSubPrivateSubCommand2_Click()Command3.Enabled=TrueIfNotAdodc1.Recordset.BOFThenAdodc1.Recordset.MovePreviousIfAdodc1.Recordset.BOFThenCommand2.Enabled=FalseAdodc1.Recordset.MoveNextEndIfEndSubPrivateSubCommand3_Click()Command2.Enabled=TrueIfNotAdodc1.Recordset.EOFThenAdodc1.Recordset.MoveNextIfAdodc1.Recordset.EOFThenCommand3.Enabled=FalseAdodc1.Recordset.MovePreviousEndIfEndSubPrivateSubCommand4_Click()Adodc1.Recordset.MoveLastCommand2.Enabled=TrueCommand3.Enabled=TrueEndSubPrivateSubCommand5_Click()Adodcl.Recordset.AddNewText1.SetFocusEndSubPrivateSubCommand6_Click()DimmsgAsIntegerOnErrorGoToHandllmsg=MsgBox("记录将被永久删除,是否继续?",vbYesNo,〃苏华程序设计〃)Ifli_msg=6ThenIfNotAdodc1.Recordset.EOFThenAdodc1.Recordset.DeleteAdodc1.Recordset.MoveNextEndIfIfAdodc1.Recordset.EOFAndAdodc1.Recordset.BOF=FalseThenAdodc1.Recordset.MovePreviousEndIfEndIfExitSubHandll:MsgBoxErr.Description,vbOKOnly,"内部错误"&Err.Number&"苏华设计〃EndSubPrivateSubCommand7_Click()OnErrorGoToHandllAdodcl.Recordset.UpdateAdodcl.RefreshAdodcl.Recordset.MoveFirstExitSubHandll:MsgBoxErr.Description,vbOKOnly,〃内部错误〃&Err.Number&"苏华设计〃EndSubPrivateSubCommand8_Click()UnloadfrmSJBEndSubPrivateSubForm_Load()Me.Adodcl.ConnectionString=ConStringMe.Adodcl.RecordSource="select*from数据表〃Me.Adodcl.RefreshEndSubPrivateSubMenu_SCSJBB_Click()DimsqlAsStringOnErrorGoToHandllIfdb.Mode=l6Thenrs.Closedb.Closedb.Mode=0EndIfdb.ConnectionString=ConString

db.Opensql="select*from数据表〃rs.Opensql,db,adOpenStatic,adLockReadOnlySetDRSJB.DataSource=rsDRSJB.ShowExitSubHandll:MsgBoxErr.Description,vbOKOnly,"内部错误"&Err.Number&"苏华设计〃EndEndSubPrivateIfdb.Mode=16Thendb.Closedb.Mode=0IfSubMenu_SJZH_Click()Dimls_strAsStringConstvbOFNOverwritePrompt=&H2&Me.CommonDialogl.FileName=""Me.CommonDialogl.Filter=〃所有文件(*.*)|*.*|Excel文件(*.xls)|*.xls"Me.CommonDialogl.FilterIndex=2Me.CommonDialogl.DialogTitle=〃将“数据表"表转换成Excel文件〃Me.CommonDialogl.Flags=vbOFNOverwritePromptOnErrorGoToHandllMe.CommonDialogl.ShowSaveIfMe.CommonDialogl.FileName<>""ThenIfdb.Mode=l6Thendb.Closedb.Mode=0EndIfdb.ConnectionString=ConStringdb.Opensql="select*from数据表〃rs.Opensql,db,adOpenStatic,adLockReadOnlySetnewxls=CreateObject("Excel.Application")Setnewbook=newxls.Workbooks.AddSetnewsheet=newbook.Worksheets(l)newsheet.Range("Al:Dl").Value=Array("槽EndEndSubPrivatenewsheet.Range("A2").CopyFromRecordsetrsls_str=CommonDialogl.FileNamenewbook.SaveAsls_strnewxls.Quitrs.Closedb.Closedb.Mode=0MsgBox〃数据转换成功。",vbOKOnly

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论