院长信息查询系统分析与设计_第1页
院长信息查询系统分析与设计_第2页
院长信息查询系统分析与设计_第3页
院长信息查询系统分析与设计_第4页
院长信息查询系统分析与设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

/院长信息查询系统欧青目录【论文摘要】 1【关键字】 11.选题背景 31.1.课题背景、意义和来源以及系统工具介绍 31.1.1.课题背景及意义 3.课题的来源 3.系统工具介绍 31.2.国内外发展概况 41.3.探讨内容及须解决的关键问题 41.3.1.探讨内容 41.3.2.须要解决的关键问题 42.图书馆管理信息系统解决方案 52.1.方案内容 52.2.1.方案的选择 52.2.2.方案的技术实现 63.系统总体设计 73.1.系统总体设计 73.2.系统总体功能图 83.3.数据库设计 83.3.1.数据库的选择 83.3.2.数据库设计 93.3.4.数据库关系图 104.图书馆管理信息系统的实现过程 114.1.系统结构 114.2.登录系统界面的设计 124.3.信息服务子系统的设计 124.4.管理和维护子系统的设计 155.开发过程遇到的问题及解决方法 206.结束语 21参考文献 21【论文摘要】目前,我国第三代HIS尚处于发展阶段,再加上临床医务人员对HIS所知很少,导致对原始医疗数据的再利用更少。因此,如何才能更有效、合理地利用HIS数据,是今后HIS的发展方向之一。医院信息综合应用系统以此为目的,旨在开发出一个全面、好用和科学的软件系统,为医院领导和医疗工作者服务。实现对医院人事、财务、医疗、科研教化、设备物质和药品等信息的查询、更新和应用。让院长以及各主要领导更清楚的了解整个医院的运行状况,为决策供应依据。实现医院资源的合理配置,提高医院的运行效率,最总获得利益的最大化,对于医院的信息化管理,可谓是意义重大。【关键字】院长、管理员、信息系统、数据库、、sqlsever1.选题背景1.1.课题背景、意义和来源以及系统工具介绍1.1.1.课题背景及意义今日,随着信息技术的发展,在医院信息管理中运用传统的手工操作方式在现在这个数字化的时代已显得极不适应,因此,工作人员和读者对于运用计算机来帮助协调和管理自身工作的需求正在逐步提高。随着我国现代化技术的不断提高和普及,医院也在不断的提高它的各个部门的管理质量,对医院人事、财务、医疗、科研教化、设备物质和药品等信息的查询、更新和应用。让院长以及各主要领导更清楚的了解整个医院的运行状况,为决策供应依据。实现医院资源的合理配置,提高医院的运行效率,最总获得利益的最大化,对于医院的信息化管理,可谓是意义重大。自从信息系统这一新兴的管理方法引入我国,在我国企业管理中已有20多年的时间。现在,信息系统已经广泛应用于各行各业。因此在这样的前提下,我选择了“院长信息查询系统”这样一个较为普遍,同时又较为典型的课题。在当今这样一个科技高速发展的社会里,仅有理论学问是明显不行的,所以,我希望通过开发这个系统,能更好地把理论和实际结合起来,充分将自己所学的专业学问应用于实践之中,并在实践中不断充溢自己,提高自己的专业技能水平,以获得更多的教益课题的来源本课题由本人和辅导老师提出,基于及SQLServer2005数据库平台开发院长信息查询系统,用于解决院长对信息的查询,把握医院的运行状况,实现资源的优化配置。.系统工具介绍本系统的开发工具是用面对对象的进行设计的。VisualBasic.NET是基于微软.NETFramework之上的面对对象的编程语言。其在调试时是以说明型语言方式运作,而输出为EXE程序是是以编译型语言方式运作。可以看作是VisualBasic在.NetFramework平台上的升级版本,增加了对面对对象的支持。大多的VB.Net程序员运用VisualStudio.Net作为IDE(integrateddevelopmentenvironment).SharpDevelop是另一种可用的开源的IDE。1.2.国内外发展概况目前,国际上大多数发达国家的医院信息查询基本上实现了电脑管理,尤其是那些较大型的医院还接受了大型数据库开发的软件,部分大型医院信息查询也运用Foxpro、SQLServer等。而基于Access数据库的多数是中小型医院。但在大多数不发达国家,基于cache数据库的医院信息应用得很广泛。而在中国,许多中小型医院信息用的还是手工医院信息管理,大多数医院信息对计算机管理信息还没有确定的相识,虽然cache数据库是发达国家主流的医院信息数据库,但基于SQLServer数据库具有运用便利、学习简洁、易学易用的特点,在发展中国发展较为成熟,所以基于SQLServer数据库做的信息系统较为普遍。1.3.探讨内容及须解决的关键问题1.3.1.探讨内容课题探讨的内容是关于院长信息查询系统的流通部子系统,是院长信息查询系统运用计算机管理和实际运用的具体体现,可以让大量的医院信息得到合理的支配。该系统运用的是2005,以SQLServer2005数据库平台进行开发。1.3.2.须要解决的关键问题*用户需求分析*系统整体规划方案及设定*功能模块的划分及设定*利用SQLselect实现数据的连接*实现最终系统代码的设计2.院长信息查询系统解决方案2.1.方案内容我们可以用两层体系结构作为院长信息查询系统软件解决方案的核心,它的基本思想是将院长操作的界面同管理人员的操作界面分别,把信息系统按功能划分为用户管理和维护、信息服务和信息查询三大块,分别放置在相同或不同的硬件平台上。之后从需求动身构造数据库表,然后再由数据库表结合需求划分系统功能模块。这样,就把一个大的系统分解成了几个小系统。系统划分了子系统后,下一步的工作是接着划分子系统的小模块。先考虑在进入子系统时应当做什么,进入系统之后又应当做什么,供应哪些服务等。。2.2.方案论证2.2.1.方案的选择两层客户机/服务器技术在结构、开发环境、应用平台的开发方式上已经特殊成熟。请求另一计算机为之服务的计算机称为客户机(Client).而处理数据库的计算机称为服务器(Server)。客户机/服务器是将处理工作分散到工作站和服务器上去处理,服务器不仅负责存取数据,还要对数据作确定的处理工作,这样在数据发送给工作站之前即取得查询结果集,从而在大部分状况下可大大削减网络传输的开销,因此,也减轻了工作处理负担,用户只需关切界面的处理工作即可。客户机/服务器系统的成功和否在很大程度上依靠于服务器。用户越多,服务器的处理负担越重,相应服务器硬件性能也要跟得上,否则就会导致影响时间比本地型数据库还要差的结果。客户机运行数据请求程序,并将这些请求传送到服务器。由客户机执行的计算称为前端处理。前端处理具有全部和供应、操作和显示数据相关的功能。C/S[1]数据库应用程序中客户端的主要功能:●从用户接收数据●处理应用逻辑●生成数据库请求●向服务器发送数据库请求●从服务器接收结果并显示结果在服务器上执行的计算称为后端处理。后端处理设备是一台管理数据资源并执行数据库引擎功能(如存储、操作和爱惜数据)的计算机。C/S数据库应用程序中服务器端的主要功能:●从客户机接收数据库请求●处理数据库请求●传送结果给客户机●执行完整性检查●供应并行访问限制●事务处理失败后,执行事务复原●优化查询和更新处理3.系统总体设计3.1.系统总体设计对于医院信息查询系统主要负责供应的功能是指从医院收集信息,并将信息录入数据库中,实现院长能便利快速的找到自己想要的信息。信息收集:从医院的各个部门、科室收集所需的信息。信息录入:将收集来的信息整合、分类录入sql数据库中。用户管理:管理员实现对用户的注册、修改、删除。用户查询信息:用户通过平台窗口查询高效的查询医院的各方面的信息,并可以将信息打印输出。3.2.系统总体功能图院长综合查询信息系统删除新用户设置用户权限更改注册密码更改登陆密码药品信息科教信息医疗信息人事信息删除信息设置查询院长综合查询信息系统删除新用户设置用户权限更改注册密码更改登陆密码药品信息科教信息医疗信息人事信息删除信息设置查询管理员管理员注册新用户财务信息增加信息注册新用户财务信息增加信息图3-1总体功能图3.3数据流程图:管理员管理员添加、删除信息医疗财务人事科教药品设置更改密码更改用户权限更改密码注册新用户删除用户用户信息数据库退出退出打印、复制、剪切输出信息综合数据库查询院长退出打印、复制、剪切输出信息综合数据库查询院长3.3.数据库设计3.3.1.数据库的选择院长综合查询信息系统是一个小型的数据库系统。在这里我们选择SQLServer数据库进行开发。MicrosoftSQLServer是一种关系型数据库管理系统。关系模型是当前最受欢迎的数据存储和数据检索模型。全部的数据处理都涉及存储和检索数据的操作,MicrosoftSQLServer是作为一个组织内部的全部数据的中心存储器来设计的。组织中数据的关键特征强调了这一方法的重要性。在客户机/服务器框架内,服务器数据库也要求和服务器的通信组件集成,以便和客户系统连接。MicrosoftSQLServer的客户机/服务器运用WindowsNT的内置网络组件。MicrosoftSQLServer还在其网络组件的顶部添加了服务特有的中介组件:开放式数据库连接(OpenDatabaseConnectivity,ODBC)能使不同客户机进行相互连接,而不要求变更服务器及其他现存客户应用程序。3.3.2.数据库设计表名属性说明表TestZhanghu,mima表Book主要存储关于用户的信息,表Test2Glyonghu,glmima表test2主要存储关于管理员的信息,(其他由于医院信息表过于繁多就不一一列举)图3-1数据库表对象4.图书馆管理信息系统的实现过程4.1.系统结构我们用两层体系结构作为院长综合查询信息系统软件解决方案的核心,把信息系统按功能划分为管理和维护、信息服务和信息查询三大块,分别放置在相同或不同的硬件平台上,并将系统的操作人员划分为两类:管理员,用户。登陆登陆用户登陆管理员登陆用户登陆管理员登陆否否用户、密码是否正确用户、密码是否正确否否用户、密码是否正确用户、密码是否正确是是是是进入查询界面进入管理员界面进入查询界面进入管理员界面管理员管理用户管理管理员管理用户管理查询信息查询信息打印信息打印信息管理员注册修改用户密码删除用户用户表管理员表修改管理员密码删除管理员用户注册管理员注册修改用户密码删除用户用户表管理员表修改管理员密码删除管理员用户注册退出退出4.2.登录系统界面的设计从列表框里选择用户,此列表框内的用户干脆和数据库里工作人员的表相关联。输入密码。推断该密码和工作人员表中定义的密码是否相符。假如不正确,提示输入正确的信息。假如正确,用户登录对于登陆界面的代码如下:DimsqlConnection1AsSqlClient.SqlConnectionDimsqlConnectAsString="Server=DELL-PC\SQLEXPRESS;database=his;uid=ouqing;pwd=123;"'“server=计算机名;database=数据库名;uid=登录数据库用户名;pwd=登录数据库密码”sqlConnection1=NewSystem.Data.SqlClient.SqlConnection(sqlConnect)sqlConnection1.Open()DimrsAsNewADODB.RecordsetClassIfTextBox1.Text=""OrLen(TextBox1.Text)>10ThenDimzAsStringz=MsgBox("请输入用户名,不能超过个字符!",vbOKCancel+vbInformation,"提示")TextBox1.Text=""ExitSubEndIfIfTextBox2.Text=""OrLen(TextBox2.Text)>10ThenDimbAsStringb=MsgBox("请输入密码,不能超过个字符!",vbOKCancel+vbInformation,"提示")TextBox2.Text=""ExitSubEndIfIfInStr(Me.TextBox2.Text,"'")OrInStr(Me.TextBox1.Text,"'")Then'假如文本框或者里面含有‘这个符号提示非法字符MsgBox("密码中存在非法字符,请重新输入。",MsgBoxStyle.Information,"提示!")Me.TextBox1.Text=""Me.TextBox2.Text=""ExitSubEndIfsqlConnection1.Close()sqlConnection1.Open()DimsqlcomAsNewSqlCommand'这里,你用这个方法来取表的数据。假如用户有意输入一个'你的sql语句就会出错。sqlcom.CommandText="select*fromtestwherezhanghu='"&Me.TextBox1.Text&"'andmima='"&Me.TextBox2.Text&"'"sqlcom.Connection=sqlConnection1DimmydsAsNewDataSetDimmyadapterAsNewSqlDataAdaptermyadapter.SelectCommand=sqlcommyadapter.Fill(myds,"test")DimcmAsNewSqlCommand("selectcount(*)fromtestwherezhanghu='"&TextBox1.Text&"'",sqlConnection1)DimcountAsInteger=cm.ExecuteScalarIfcount>0ThenIfmyds.Tables("test").Rows.Count=0ThenMsgBox("密码错误,请重新输入。",MsgBoxStyle.Information,"提示")Me.TextBox2.Text=""sqlConnection1.Close()ExitSubEndIfForm4.Show()Me.Hide()ElseMsgBox("账号不存在,请重新输入!")Me.TextBox1.Text=""Me.TextBox2.Text=""ExitSubEndIf'连接数据库EndSub管理员界面的设计关于修改用户密码界面的设计代码如下:PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickDimrsAsNewADODB.RecordsetClassIfTextBox1.Text=""OrLen(TextBox1.Text)>10ThenDimzAsStringz=MsgBox("请输入用户名,不能超过个字符!",vbOKCancel+vbInformation,"提示")TextBox1.Text=""ExitSubEndIfIfTextBox2.Text=""OrLen(TextBox2.Text)>10ThenDimbAsStringb=MsgBox("请输入原密码,不能超过个字符!",vbOKCancel+vbInformation,"提示")TextBox2.Text=""ExitSubEndIfIfTextBox3.Text=""OrLen(TextBox3.Text)>10ThenDimcAsStringc=MsgBox("请输入新密码,不能超过个字符!",vbOKCancel+vbInformation,"提示")TextBox3.Text=""ExitSubEndIfIfTextBox4.Text=""OrLen(TextBox3.Text)>10ThenDimcAsStringc=MsgBox("请输入新密码,不能超过个字符!",vbOKCancel+vbInformation,"提示")TextBox4.Text=""ExitSubEndIfIfTextBox3.Text<>TextBox4.TextThenDimdAsStringd=MsgBox("对不起,两次输入的密码不一样!",vbOKCancel+vbInformation,"提示")TextBox3.Text=""TextBox4.Text=""EndIfDimsqlConnection1AsSqlClient.SqlConnectionDimsqlConnectAsString="Server=DELL-PC\SQLEXPRESS;database=his;uid=ouqing;pwd=123;"'“server=计算机名;database=数据库名;uid=登录数据库用户名;pwd=登录数据库密码”sqlConnection1=NewSystem.Data.SqlClient.SqlConnection(sqlConnect)sqlConnection1.Open()IfInStr(Me.TextBox2.Text,"'")OrInStr(Me.TextBox3.Text,"'")Then'假如文本框或者里面含有‘这个符号提示非法字符MsgBox("密码中存在非法字符,请重新输入。",MsgBoxStyle.Information,"提示!")Me.TextBox1.Text=""Me.TextBox2.Text=""ExitSubEndIfsqlConnection1.Close()sqlConnection1.Open()DimsqlcomAsNewSqlCommand'这里,你用这个方法来取表的数据。假如用户有意输入一个'你的sql语句就会出错。sqlcom.CommandText="select*fromtestwherezhanghu='"&Me.TextBox1.Text&"'andmima='"&Me.TextBox2.Text&"'"sqlcom.Connection=sqlConnection1DimmydsAsNewDataSetDimmyadapterAsNewSqlDataAdaptermyadapter.SelectCommand=sqlcommyadapter.Fill(myds,"test")DimcmAsNewSqlCommand("selectcount(*)fromtestwherezhanghu='"&TextBox1.Text&"'",sqlConnection1)DimcountAsInteger=cm.ExecuteScalarDimresult=NewDialogResult()result=MessageBox.Show("你确定要修改您的密码吗?","修改账号提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question)Ifresult=Windows.Forms.DialogResult.YesThenIfcount>0ThenIfmyds.Tables("test").Rows.Count=0ThenMsgBox("原始密码错误,请重新输入。",MsgBoxStyle.Information,"提示")Me.TextBox2.Text=""sqlConnection1.Close()ExitSubEndIfDimOpendlgAsNewOpenFileDialogDimsqlcommAsNewSqlCommandsqlcomm.CommandText="Updatetestsetmima=@mimawherezhanghu='"&Me.TextBox1.Text&"'"sqlcomm.Connection=sqlConnection1Dimprm1AsNewSqlParameter("@mima",Me.TextBox3.Text)sqlcomm.Parameters.Add(prm1)Trysqlcomm.ExecuteNonQuery()'执行插入语句sqlConnection1.Close()CatchexAsExceptionsqlConnection1.Close()MsgBox(ex.Message)ExitSubEndTryMsgBox("密码修改成功!",MsgBoxStyle.Information,"提示")Me.TextBox2.Text=""Me.TextBox3.Text=""Me.TextBox4.Text=""ElseMsgBox("账号不存在,请重新输入!")Me.TextBox2.Text=""Me.TextBox3.Text=""Me.TextBox4.Text=""ExitSubEndIfElseMe.TextBox2.Text=""Me.TextBox3.Text=""Me.TextBox4.Text=""ExitSubEndIfEndSub用户查询界面的设计关于表名查询的代码如下:DimstrConnectionAsString="Server=DELL-PC\SQLEXPRESS;database=renshi;uid=ouqing;pwd=123;"DimsqlConnection1AsNewSqlConnection(strConnection)DimdataAdapterAsNewSqlDataAdapterDimdstAsNewDataSetDimdtAsNewDataTablesqlConnection1.Open()'打开数据库IfCheckBox1.Checked=TrueAndTextBox1.Text=""ThenDimsqlAsString="selectnamefromsys.tablesorderbymodify_datedesc"DimcmdAsSqlCommand=NewSqlCommand(sql,sqlConnection1)dataAdapter.SelectCommand=cmddataAdapter.Fill(dst,"name")dt=dst.Tables("name")sqlConnection1.Close()'关闭数据库DataGridView1.AutoGenerateColumns=True'自动创建列DataGridView1.DataSource=dtDataGridView1.Refresh()ElseDimsqlAsString="selectnameFromsys.tableswherenamelike'%"&TextBox1.Text&"%'"DimcmdAsSqlCommand=NewSqlCommand(sql,sqlConnection1)dataAdapter.SelectCommand=cmddataAdapter.Fill(dst,"name")dt=dst.Tables("name")sqlConnection1.Close()'关闭数据库DataGridView1.AutoGenerateColumns=True'自动创建列DataGridView1.DataSource=dtEndIf关于实现查询表内容的代码如下:shadow=DataGridView1.SelectedRows(0).Cells(0).ValueIfDataGridView1.SelectedRows.Count>0ThenDimname=DataGridView1.SelectedRows(0).Cells(0).ValueDimstrConnectionAsString="Server=DELL-PC\SQLEXPRESS;database=renshi;uid=ouqing;pwd=123;"DimsqlConnection1AsNewSqlConnection(strConnection)DimdataAdapterAsNewSqlDataAdapterDimdstAsNewDataSetDimdtAsNewDataTablesqlConnection1.Open()'打开数据库DimobjSqlCommandAsSqlCommandDimsqlAsStringsql="select*from"&name&""objSqlCommand=NewSqlCommand(sql,sqlConnection1)DimobjSqlDataAdapterAsSqlDataAdapterobjSqlDataAdapter=NewSqlDataAdapter(objSqlCommand)DimobjDataSetAsDataSetobjDataSet=NewDataSet()objSqlDataAdapter.Fill(objDataSet,"库存表")DataGridView2.DataSource=objDataSet.Tables("库存表")DataGridView2.Refresh()sqlConnection1.Close()'关闭数据库ElseMsgBox("没有选着修改项")EndIf关于实现关键字查询的代码如下:IfTextBox2.Text=""ThenDimzAsStringz=MsgBox("请输入姓名、编号关键字!",vbOKCancel+vbInformation,"提示")ExitSubElseDimstrConnectionAsString="Server=DELL-PC\SQLEXPRESS;database=renshi;uid=ouqing;pwd=123;"DimsqlConnection1AsNewSqlConnection(strConnection)DimdataAdapterAsNewSqlDataAdapterDimdstAsNewDataSetDimdtAsNewDataTablesqlConnection1.Open()'打开数据库DimobjSqlCommandAsSqlCommandDimsqlAsStringsql="select*from"&shadow&"where编号like'%"&TextBox2.Text&"%'or姓名like'%"&TextBox2.Text&"%'"依据全部表具有的共同字段查询objSqlCommand=NewSqlCommand(sql,sqlConnection1)DimobjSqlDataAdapterAsSqlDataAdapterobjSqlDataAdapter=NewSqlDataAdapter(objSqlCommand)DimobjDataSetAsDataSetobjDataSet=NewDataSet()objSqlDataAdapter.Fill(objDataSet,"库存表")DataGridView2.DataSource=objDataSet.Tables("库存表")DataGridView2.Refresh()sqlConnection1.Close()'关闭数据库EndIfEndSub关于实现表的打印代码如下:首先创建一个类:ImportsImportsImportsSystem.DrawingImportsSystem.CollectionsImportsSystem.DataImportsSystem.TextNamespaceDgPrintPublicClassPrintServicePrivateStrFormatAsStringFormat'单元格内容PrivateRowPosAsInteger'当前打印行PrivateNewPageAsBoolean'推断是否为新页PrivatePageNoAsInteger'打印页数PrivateCellHeightAsInteger'打印的单元格高度PrivateRowsPerPageAsInteger'每页的行数PrivateprintDocAsNewSystem.Drawing.Printing.PrintDocument()'用于打印的PrintDocumentObjectPrivateColumnLeftsAsNewArrayList()'列的左坐标PrivateColumnWidthsAsNewArrayList()'列的宽度PrivatePrintTitleAsString=""'标题PrivateAvailableColumnsAsNewList(OfString)()'datagridview中可见的列PrivateHeaderHeightAsInteger=0PrivategridAsDataGridView'打印PublicSubPrint(ByValgridAsDataGridView,ByValTitleAsString)DimppvwAsPrintPreviewDialogTryMe.grid=grid'获得要打印的datagridviewAvailableColumns.Clear()'获得中全部可见的列标题ForEachcAsDataGridViewColumnIngrid.ColumnsIfc.Visible=TrueThenAvailableColumns.Add(c.HeaderText)EndIfNext'显示打印属性窗体PrintTitle=TitleRowsPerPage=0printDoc.DocumentName=""DimdiaAsNewPrintDialog()dia.PrintToFile=Falsedia.Document=printDocdia.UseEXDialog=TrueIfdia.ShowDialog()<>DialogResult.OKThenReturnEndIfppvw=NewPrintPreviewDialog()ppvw.WindowState=FormWindowState.Maximizedppvw.Document=printDoc'显示打印预览AddHandlerprintDoc.BeginPrint,NewSystem.Drawing.Printing.PrintEventHandler(AddressOfPrintGridDoc_BeginPrint)AddHandlerprintDoc.PrintPage,NewSystem.Drawing.Printing.PrintPageEventHandler(AddressOfPrintGridDoc_PrintPage)Ifppvw.ShowDialog()<>DialogResult.OKThenRemoveHandlerprintDoc.BeginPrint,NewSystem.Drawing.Printing.PrintEventHandler(AddressOfPrintGridDoc_BeginPrint)RemoveHandlerprintDoc.PrintPage,NewSystem.Drawing.Printing.PrintPageEventHandler(AddressOfPrintGridDoc_PrintPage)ReturnEndIf'打印文件printDoc.Print()RemoveHandlerprintDoc.BeginPrint,NewSystem.Drawing.Printing.PrintEventHandler(AddressOfPrintGridDoc_BeginPrint)RemoveHandlerprintDoc.PrintPage,NewSystem.Drawing.Printing.PrintPageEventHandler(AddressOfPrintGridDoc_PrintPage)CatchexAsExceptionEndTryEndSubPrivateSubPrintGridDoc_BeginPrint(ByValsenderAsObject,ByValeAsSystem.Drawing.Printing.PrintEventArgs)TryStrFormat=NewStringFormat()StrFormat.Alignment=StringAlignment.Center'居中StrFormat.LineAlignment=StringAlignment.CenterStrFormat.Trimming=StringTrimming.EllipsisCharacterColumnLefts.Clear()ColumnWidths.Clear()CellHeight=0RowsPerPage=0PageNo=1NewPage=TrueRowPos=0CatchexAsExceptionEndTryEndSubPrivateSubPrintGridDoc_PrintPage(ByValsenderAsObject,ByValeAsSystem.Drawing.Printing.PrintPageEventArgs)DimtmpWidthAsInteger,iAsIntegerDimtmpTopAsIntegerDimtmpLeftAsIntegerDimfontAsNewFont("宋体",9)Dimfont_BTAsNewFont("宋体",18)Dimfont_CAsNewFont("宋体",12)TryIfPageNo=1ThenForEachGridColAsDataGridViewColumnIngrid.ColumnsIfGridCol.VisibleThen'获得列的宽度及高度tmpWidth=GridCol.WidthHeaderHeight=33'获得列的宽度、高度及类型ColumnLefts.Add(tmpLeft)ColumnWidths.Add(tmpWidth)tmpLeft+=tmpWidthEndIfNextEndIf'逐行打印当前页WhileRowPos<grid.Rows.Count-1DimGridRowAsDataGridViewRow=grid.Rows(RowPos)CellHeight=22'当前页能否打印完剩余行?IftmpTop+CellHeight>=e.MarginBounds.Height+e.MarginBounds.TopThen'不能DrawGridFooter(e,RowsPerPage)NewPage=TruePageNo+=1e.HasMorePages=TrueReturnElseIfNewPageThen'打印标题e.Graphics.DrawString(PrintTitle,NewFont(font_BT,FontStyle.Bold),Brushes.Black,e.MarginBounds.Width-e.Graphics.MeasureString(PrintTitle,NewFont(font_BT,FontStyle.Bold),e.MarginBounds.Width).Width,e.MarginBounds.Top-e.Graphics.MeasureString(PrintTitle,NewFont(font_BT,FontStyle.Bold),e.MarginBounds.Width).Height-13,StrFormat)DimsAsString=DateTime.Now.ToLongDateString()&""&DateTime.Now.ToShortDateString()e.Graphics.DrawString(s&"统计",NewFont(font,FontStyle.Bold),Brushes.Black,e.MarginBounds.Left+(e.MarginBounds.Width-1.5*e.Graphics.MeasureString(s,NewFont(font,FontStyle.Bold),e.MarginBounds.Width).Width),e.MarginBounds.Top-e.Graphics.MeasureString(PrintTitle,NewFont(NewFont(font,FontStyle.Bold),FontStyle.Bold),e.MarginBounds.Width).Height-13)'打印列i=0ForEachGridColAsDataGridViewColumnIngrid.ColumnsIfGridCol.Visible=TrueThene.Graphics.FillRectangle(NewSolidBrush(Color.LightGray),NewRectangle(CInt(ColumnLefts(i)),tmpTop,CInt(ColumnWidths(i)),HeaderHeight))e.Graphics.DrawRectangle(Pens.Black,NewRectangle(CInt(ColumnLefts(i)),tmpTop,CInt(ColumnWidths(i)),HeaderHeight))e.Graphics.DrawString(GridCol.HeaderText,NewFont(font_C,FontStyle.Bold),NewSolidBrush(Color.Black),NewRectangleF(CInt(ColumnLefts(i)),tmpTop,CInt(ColumnWidths(i)),HeaderHeight),StrFormat)i+=1EndIfNextNewPage=FalsetmpTop+=HeaderHeightEndIf

温馨提示

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

评论

0/150

提交评论