版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、By 院長信息查詢系統(tǒng)歐青目 錄 TOC o 1-5 h z 【論文摘要】 1【關鍵字】 1 HYPERLINK l bookmark4 o Current Document .選題背景 1 HYPERLINK l bookmark6 o Current Document 課題背景、意義和來源以及系統(tǒng)工具介紹 1課題背景及意義 1課題的來源 2系統(tǒng)工具介紹 2 HYPERLINK l bookmark8 o Current Document 國內外發(fā)展概況 2 HYPERLINK l bookmark10 o Current Document 研究內容及須解決的關鍵問題 2研究內容 2需要解決
2、的關鍵問題 3.圖書館管理信息系統(tǒng)解決方案 3方案內容 3方案的選擇 3方案的技術實現(xiàn) 錯誤!未定義書簽。 HYPERLINK l bookmark14 o Current Document .系統(tǒng)總體設計 4 HYPERLINK l bookmark16 o Current Document 系統(tǒng)總體設計 4 HYPERLINK l bookmark18 o Current Document 系統(tǒng)總體功能圖 4 HYPERLINK l bookmark20 o Current Document 數(shù)據(jù)庫設計 6數(shù)據(jù)庫白選擇 7數(shù)據(jù)庫設計 7數(shù)據(jù)庫關系圖 錯誤!未定義書簽。 HYPERLINK
3、l bookmark22 o Current Document .圖書館管理信息系統(tǒng)的實現(xiàn)過程 8系統(tǒng)結構 8 HYPERLINK l bookmark24 o Current Document 登錄系統(tǒng)界面的設計 10信息服務子系統(tǒng)的設計 13管理和維護子系統(tǒng)的設計 17 HYPERLINK l bookmark34 o Current Document .開發(fā)過程遇到的問題及解決方法 28.結束語 28參考文獻 29【論文摘要】 目前,我國第三代HIS尚處于發(fā)展階段,再加上臨床醫(yī)務人 員對HIS所知很少,導致對原始醫(yī)療數(shù)據(jù)的再利用更少。因此,如何才能更有 效、合理地利用HIS數(shù)據(jù),是今后H
4、IS的發(fā)展方向之一。醫(yī)院信息綜合應用系 統(tǒng)以此為目的,旨在開發(fā)出一個全面、實用和科學的軟件系統(tǒng) ,為醫(yī)院領導和 醫(yī)療工作者服務。實現(xiàn)對醫(yī)院人事、財務、醫(yī)療、科研教育、設備物質和藥品 等信息的查詢、更新和應用。讓院長以及各主要領導更清楚的了解整個醫(yī)院的 運行情況,為決策提供依據(jù)。實現(xiàn)醫(yī)院資源的合理配置,提高醫(yī)院的運行效率, 最總獲得利益的最大化,對于醫(yī)院的信息化管理,可謂是意義重大?!娟P鍵字】 院長、管理員、信息系統(tǒng)、數(shù)據(jù)庫、 sql sever.選題背景課題背景、意義和來源以及系統(tǒng)工具介紹課題背景及意義今天,隨著信息技術的發(fā)展,在醫(yī)院信息管理中運用傳統(tǒng)的手工操作方式 在現(xiàn)在這個數(shù)字化的時代已顯
5、得極不適應,因此,工作人員和讀者對于運用計 算機來輔助協(xié)調和管理自身工作的需求正在逐步提高。隨著我國現(xiàn)代化技術的 不斷提高和普及,醫(yī)院也在不斷的提高它的各個部門的管理質量,對醫(yī)院人事、財務、醫(yī)療、科研教育、設備物質和藥品等信息的查詢、更新和應用。讓院長 以及各主要領導更清楚的了解整個醫(yī)院的運行情況,為決策提供依據(jù)。實現(xiàn)醫(yī) 院資源的合理配置,提高醫(yī)院的運行效率,最總獲得利益的最大化,對于醫(yī)院 的信息化管理,可謂是意義重大。自從信息系統(tǒng)這一新興的管理方法引入我國,在我國企業(yè)管理中已有20多年的時間?,F(xiàn)在,信息系統(tǒng)已經(jīng)廣泛應用于各行各業(yè)。 因此在這樣的前提下,我選擇了 “院長信息查詢系統(tǒng)”這樣一個較
6、為普遍,同時又較為典型的課題。 在當今這樣一個科技高速發(fā)展的社會里,僅有理論知識是顯然不行的,所以, 我希望通過開發(fā)這個系統(tǒng),能更好地把理論與實際結合起來,充分將自己所學 的專業(yè)知識應用于實踐之中,并在實踐中不斷充實自己,提高自己的專業(yè)技能 水平,以獲取更多的教益課題的來源本課題由本人和輔導老師提出,基于 及SQLServer 2005數(shù)據(jù)庫平 臺開發(fā)院長信息查詢系統(tǒng),用于解決院長對信息的查詢,把握醫(yī)院的運行狀況, 實現(xiàn)資源的優(yōu)化配置。系統(tǒng)工具介紹本系統(tǒng)的開發(fā)工具是用面向對象的 進行設計的。Visual Basic.NET 是基于微軟.NET Framework之上的面向對象的編程語言。其在調
7、試時是以解釋 型語言方式運作,而輸出為EXE序是是以編譯型語言方式運作??梢钥醋魇?Visual Basic 在.Net Framework平臺上的升級版本,增強了 對面向對象的支持。大多的 VB.Net程序員使用 Visual Studio .Net 作為IDE (integrated development environment).SharpDevelop是另種可用的開源的 IDE。國內外發(fā)展概況目前,國際上大多數(shù)發(fā)達國家的醫(yī)院信息查詢基本上實現(xiàn)了電腦管理,尤 其是那些較大型的醫(yī)院還采用了大型數(shù)據(jù)庫開發(fā)的軟件,部分大型醫(yī)院信息查 詢也使用Foxpro、SQLServer等。而基于Acce
8、ss數(shù)據(jù)庫的多數(shù)是中小型醫(yī)院。 但在大多數(shù)不發(fā)達國家,基于cache數(shù)據(jù)庫的醫(yī)院信息應用得很廣泛。而在中 國,許多中小型醫(yī)院信息用的還是手工醫(yī)院信息管理,大多數(shù)醫(yī)院信息對計算 機管理信息還沒有一定的認識,雖然cache數(shù)據(jù)庫是發(fā)達國家主流的醫(yī)院信息 數(shù)據(jù)庫,但基于SQLServer數(shù)據(jù)庫具有使用方便、學習簡單、易學易用的特點, 在發(fā)展中國發(fā)展較為成熟,所以基于SQLServer數(shù)據(jù)庫做的信息系統(tǒng)較為普遍。研究內容及須解決的關鍵問題研究內容課題研究的內容是關于院長信息查詢系統(tǒng)的流通部子系統(tǒng),是院長信息查 詢系統(tǒng)運用計算機管理和實際運用的具體體現(xiàn),可以讓大量的醫(yī)院信息得到合理的安排。該系統(tǒng)使用的是
9、 2005 ,以SQL Server 2005數(shù)據(jù)庫平臺進行 開發(fā)。需要解決的關鍵問題用戶需求分析系統(tǒng)整體規(guī)劃方案及設定功能模塊的劃分及設定利用SQL select實現(xiàn)數(shù)據(jù)的連接實現(xiàn)最終系統(tǒng)代碼的設計.院長信息查詢系統(tǒng)解決方案方案內容我們可以用兩層體系結構作為院長信息查詢系統(tǒng)軟件解決方案的核心,它 的基本思想是將院長操作的界面同管理人員的操作界面分離,把信息系統(tǒng)按功 能劃分為用戶管理和維護、信息服務和信息查詢三大塊,分別放置在相同或不 同的硬件平臺上。之后從需求出發(fā)構造數(shù)據(jù)庫表,然后再由數(shù)據(jù)庫表結合需求 劃分系統(tǒng)功能模塊。這樣,就把一個大的系統(tǒng)分解成了幾個小系統(tǒng)。系統(tǒng)劃分 了子系統(tǒng)后,下一步的
10、工作是繼續(xù)劃分子系統(tǒng)的小模塊。先考慮在進入子系統(tǒng) 時應該做什么,進入系統(tǒng)之后又應該做什么,提供哪些服務等。 。方案論證方案的選擇兩層客戶機/服務器技術在結構、開發(fā)環(huán)境、應用平臺的開發(fā)方式上已經(jīng)非 常成熟。請求另一計算機為之服務的計算機稱為客戶機(Client ).而處理數(shù)據(jù)庫的計算機稱為服務器(Server)??蛻魴C/服務器是將處理工作分散到工作站 和服務器上去處理,服務器不僅負責存取數(shù)據(jù),還要對數(shù)據(jù)作一定的處理工作, 這樣在數(shù)據(jù)發(fā)送給工作站之前即取得查詢結果集,從而在大部分情況下可大大 減少網(wǎng)絡傳輸?shù)拈_銷,因此,也減輕了工作處理負擔,用戶只需關心界面的處 理工作即可。客戶機/服務器系統(tǒng)的成功
11、與否在很大程度上依賴于服務器。用戶 越多,服務器的處理負擔越重,相應服務器硬件性能也要跟得上,否則就會導 致影響時間比本地型數(shù)據(jù)庫還要差的結果。客戶機運行數(shù)據(jù)請求程序,并將這些請求傳送到服務器。由客戶機執(zhí)行的 計算稱為前端處理。前端處理具有所有與提供、操作和顯示數(shù)據(jù)相關的功能。 C/S數(shù)據(jù)庫應用程序中客戶端的主要功能:從用戶接收數(shù)據(jù)處理應用邏輯生成數(shù)據(jù)庫請求向服務器發(fā)送數(shù)據(jù)庫請求從服務器接收結果并顯示結果在服務器上執(zhí)行的計算稱為后端處理。后端處理設備是一臺管理數(shù)據(jù)資源并執(zhí)行數(shù)據(jù)庫引擎功能(如存儲、操作和保護數(shù)據(jù))的計算機。C/S數(shù)據(jù)庫應用程序中服務器端的主要功能:從客戶機接收數(shù)據(jù)庫請求處理數(shù)據(jù)
12、庫請求傳送結果給客戶機執(zhí)行完整性檢查提供并行訪問控制事務處理失敗后,執(zhí)行事務恢復優(yōu)化查詢和更新處理.系統(tǒng)總體設計系統(tǒng)總體設計對于醫(yī)院信息查詢系統(tǒng)主要負責提供的功能是指從醫(yī)院收集信息,并將信息錄入數(shù)據(jù)庫中,實現(xiàn)院長能方便快速的找到自己想要的信息。(1)信息收集:從醫(yī)院的各個部門、科室收集所需的信息。(2)信息錄入:將收集來的信息整合、分類錄入sql數(shù)據(jù)庫中。(3)用戶管理:管理員實現(xiàn)對用戶的注冊、修改、刪除。(4)用戶查詢信息:用戶通過平臺窗口查詢高效的查詢醫(yī)院的各方面 的信息,并可以將信息打印輸出。系統(tǒng)總體功能圖院長綜合查詢信息系統(tǒng)藥品信息更改登陸密碼更改注jm密碼設置用戶權刪 除 新 用 戶
13、圖3-1總體功能圖3.3數(shù)據(jù)流程圖:數(shù)據(jù)庫設計數(shù)據(jù)庫的選擇院長綜合查詢信息系統(tǒng)是一個小型的數(shù)據(jù)庫系統(tǒng)。在這里我們選擇SQLServer數(shù)據(jù)庫進行開發(fā)。Microsoft SQL Server是一種關系型數(shù)據(jù)庫管理系統(tǒng)。關系模型是當前最受歡迎的數(shù)據(jù)存儲和數(shù)據(jù)檢索模型。所有的數(shù)據(jù)處理都 涉及存儲和檢索數(shù)據(jù)的操作,Microsoft SQL Server是作為一個組織內部的全 部數(shù)據(jù)的中心存儲器來設計的。組織中數(shù)據(jù)的關鍵特征強調了這一方法的重要 性。在客戶機/服務器框架內,服務器數(shù)據(jù)庫也要求與服務器的通信組件集成, 以便和客戶系統(tǒng)連接。Microsoft SQLServer的客戶機/服務器使用 Wi
14、ndowsNT 的內置網(wǎng)絡組件。Microsoft SQL Server還在其網(wǎng)絡組件的頂部添加了服務特 有的中介組件:開放式數(shù)據(jù)庫連接( OpenDatabase Connectivity,ODBC )能使 不同客戶機進行相互連接,而不要求變更服務器及其他現(xiàn)存客戶應用程序。數(shù)據(jù)庫設計表名屬性說明表TestZhanghu,mima表Book主要存儲 關于用戶的信息,7表Test2Glyonghu,glmima表test2主要存儲 關于管理員的信息,(其他由于醫(yī)院信息表過于繁多就不一一列舉)圖3-1數(shù)據(jù)庫表對象.圖書館管理信息系統(tǒng)的實現(xiàn)過程系統(tǒng)結構我們用兩層體系結構作為院長綜合查詢信息系統(tǒng)軟件解
15、決方案的核心,把 信息系統(tǒng)按功能劃分為管理和維護、信息服務和信息查詢三大塊,分別放置在 相同或不同的硬件平臺上,并將系統(tǒng)的操作人員劃分為兩類:管理員,用戶。管理員表刪除管理員修改管理員密碼管理員注冊用戶表刪除用戶修改用戶密碼用戶注冊登錄系統(tǒng)界面的設計.從列表框里選擇用戶,此列表框內的用戶直接與數(shù)據(jù)庫里工作人員的表 相關聯(lián)。.輸入密碼。判斷該密碼與工作人員表中定義的密碼是否相符 。.如果不正確,提示輸入正確的信息。.如果正確,用戶登錄對于登陸界面的代碼如下:10Dim sqlConnectionl As SqlClient.SqlConnectionDim sqlConnect As Strin
16、g =Server=DELL-PCSQLEXPRESS;database=his;uid=ouqing;pwd=123; server=計算機名;database= 數(shù)據(jù)庫名;uid=登錄數(shù)據(jù)庫用戶名萬卬=登錄數(shù)據(jù)庫密碼”sqlConnection1 = NewSystem.Data.SqlClient.SqlConnection(sqlConnect) sqlConnection1.Open()Dim rs As NewADODB.RecordsetClassIf TextBox1.Text = Or Len(TextBox1.Text) 10 ThenDim z As Stringz =
17、MsgBox(請輸入用戶名,不能超過個字符!, vbOKCancel + vbInformation, 提示)TextBox1.Text =Exit Sub End IfIf TextBox2.Text = Or Len(TextBox2.Text) 10 ThenDim b As Stringb = MsgBox(請輸入密碼,不能超過個字符!, vbOKCancel + vbInformation, 提示)TextBox2.Text =Exit Sub End IfIf InStr( MeTextBox2.Text, ) Or InStr( MeTextBox1.Text, ) Then 如
18、果文本框或者里面含有,這個符號提示非法字符MsgBox(密碼中存在非法字符,請重新輸入。,MsgBoxStyle.Information,提示!)MeTextBox1.Text =MeTextBox2.Text =Exit SubEnd IfsqlConnection1.Close()sqlConnection1.Open()Dim sqlcom As NewSqlCommand這里,你用這個方法來取表的數(shù)據(jù)。如果用戶故意輸入一個你的sql語句就會出錯。sqlcom.CommandText = select * from test where zhanghu= & MeTextBox1.Tex
19、t & andmima= & MeTextBox2.Text &11sqlcom.Connection = sqlConnectionlDim myds As NewDataSetDim myadapter As NewSqlDataAdaptermyadapter.SelectCommand = sqlcommyadapter.Fill(myds,test)Dim cm As NewSqlCommandselect count(*) from test where zhanghu = & TextBox1.Text & , sqlConnection1)Dim count As Intege
20、r = cm.ExecuteScalarIf count 0 ThenIf myds.Tables( test ).Rows.Count = 0 ThenMsgBox(密碼錯誤,請重新輸入。,MsgBoxStyle.Information, 提示)MeTextBox2.Text =sqlConnection1.Close()Exit SubEnd IfForm4.Show()MeHide()ElseMsgBox(賬號不存在,請重新輸入!)MeTextBox1.Text =MeTextBox2.Text =Exit SubEnd If連接數(shù)據(jù)庫End Sub124.3.管理員界面的設計13ByV
21、al e As System.EventArgs)Handles關于修改用戶密碼界面的設計代碼如下: Private Sub Button1_Click( ByVal sender As System.Object, Button1.ClickDim rs As NewADODB.RecordsetClassIf TextBox1.Text = Or Len(TextBox1.Text) 10ThenDim z As Stringz = MsgBox(請輸入用戶名,不能超過個字符!,vbOKCancel + vbInformation,提示)TextBoxl.Text =Exit SubEnd
22、 IfIf TextBox2.Text =Or Len(TextBox2.Text) 10ThenDim b As Stringb = MsgBox(請輸入原密碼,不能超過個字符!,vbOKCancel + vbInformation,提示)TextBox2.Text =Exit SubEnd IfIf TextBox3.Text =Or Len(TextBox3.Text) 10ThenDim c As Stringc = MsgBox(請輸入新密碼,不能超過個字符!,vbOKCancel + vbInformation,提示)TextBox3.Text =Exit SubEnd IfIf
23、TextBox4.Text =Or Len(TextBox3.Text) 10ThenDim c As Stringc = MsgBox(請輸入新密碼,不能超過個字符!,vbOKCancel + vbInformation,提示)TextBox4.Text =Exit SubEnd IfThenIf TextBox3.Text TextBox4.TextDim d As Stringd = MsgBox(對不起,兩次輸入的密碼不一致!,vbOKCancel + vbInformation,提示14)TextBox3.Text =TextBox4.Text =End IfDim sqlConne
24、ctionlAs SqlClient.SqlConnectionDim sqlConnect As String =Server=DELL-PCSQLEXPRESS;database=his;uid=ouqing;pwd=123; server=計算機名;database= 數(shù)據(jù)庫名;uid=登錄數(shù)據(jù)庫用戶名萬卬=登錄數(shù)據(jù)庫密碼”sqlConnection1 = NewSystem.Data.SqlClient.SqlConnection(sqlConnect)sqlConnection1.Open()If InStr( MeTextBox2.Text, ,) Or InStr( MeText
25、Box3.Text,, ) Then 如果文本框或者里面含有,這個符號提示非法字符MsgBox(密碼中存在非法字符,請重新輸入。,MsgBoxStyle.Information, 提示!)MeTextBox1.Text =MeTextBox2.Text =Exit SubEnd IfsqlConnection1.Close()sqlConnection1.Open()Dim sqlcom As NewSqlCommand這里,你用這個方法來取表的數(shù)據(jù)。如果用戶故意輸入一個你的sql語句就會出錯。sqlcom.CommandText = select * from test where zhan
26、ghu= & MeTextBox1.Text & andmima= & MeTextBox2.Text &sqlcom.Connection = sqlConnection1Dim myds As NewDataSetDim myadapter As NewSqlDataAdaptermyadapter.SelectCommand = sqlcommyadapter.Fill(myds,test)Dim cm As NewSqlCommandselect count(*) from test where zhanghu = & TextBox1.Text & , sqlConnection1)
27、Dim count As Integer = cm.ExecuteScalarDim result = NewDialogResult()result = MessageBox.Show(你確定要修改您的密碼嗎?,修改賬號提醒,MessageBoxButtons.YesNo, MessageBoxIcon.Question)If result = Windows.Forms.DialogResult.Yes ThenIf count 0 Then15If myds.Tables( test ).Rows.Count = 0 ThenMsgBox(原始密碼錯誤,請重新輸入。,MsgBoxStyl
28、e.Information,提示)MeTextBox2.Text =sqlConnection1.Close()Exit SubEnd IfDim Opendlg As NewOpenFileDialogDim sqlcomm As NewSqlCommandsqlcomm.CommandText =Update test set mima=mima where zhanghu=MeTextBox1.Text &sqlcomm.Connection = sqlConnection1Dim prm1 As NewSqlParameter( mima; MeTextBox3.Text)sqlcom
29、m.Parameters.Add(prm1)Trysqlcomm.ExecuteNonQuery()執(zhí)行插入語句sqlConnection1.Close()Catch ex As ExceptionsqlConnection1.Close()MsgBox(ex.Message)Exit SubMsgBox(End Try密碼修改成功!,MsgBoxStyle.Information,提示)ElseMsgBox(MeTextBox2.Text =MeTextBox3.Text =MeTextBox4.Text =賬號不存在,請重新輸入!)MeTextBox2.Text =MeTextBox3.T
30、ext =MeTextBox4.Text =Exit SubEndIfElseMeTextBox2.Text =MeTextBox3.Text =MeTextBox4.Text =Exit SubEnd If16End Sub4.4.用戶查詢界面的設計17口.人索Hg圣石關于表名查詢的代碼如下:Dim strConnection As String = Server=DELL-PCSQLEXPRESS;database=renshi;uid=ouqing;pwd=123;Dim sqlConnection1 As NewSqlConnection(strConnection)Dim dataA
31、dapter As NewSqlDataAdapterDim dst As NewDataSetDim dt As NewDataTablesqlConnection1.Open()打開數(shù)據(jù)庫If CheckBox1.Checked = True And TextBox1.Text = ThenDim sql As String = select name from sys.tables order by modify_date descDim cmd As SqlCommand = NewSqlCommand(sql, sqlConnection1)dataAdapter.SelectCom
32、mand = cmddataAdapter.Fill(dst,name)dt = dst.Tables(name)sqlConnection1.Close()關閉數(shù)據(jù)庫DataGridView1.AutoGenerateColumns =True 自動創(chuàng)建列DataGridView1.DataSource = dtDataGridView1.Refresh()ElseDim sql As String = select nameFrom sys.tables where namelike % & TextBox1.Text& %18Dim cmd As SqlCommand = NewSqlC
33、ommand(sql, sqlConnectionl)dataAdapter.SelectCommand = cmddataAdapter.Fill(dst,name)dt = dst.Tables(name)sqlConnection1.Close()關閉數(shù)據(jù)庫DataGridView1.AutoGenerateColumns =True 自動創(chuàng)建列DataGridView1.DataSource = dtEnd If關于實現(xiàn)查詢表內容的代碼如下:shadow = DataGridView1.SelectedRows(0).Cells(0).ValueIf DataGridView1.Sel
34、ectedRows.Count 0 ThenDim name = DataGridView1.SelectedRows(0).Cells(0).ValueDim strConnection As String = Server=DELL-PCSQLEXPRESS;database=renshi;uid=ouqing;pwd=123;Dim sqlConnection1 As NewSqlConnection(strConnection)Dim dataAdapter As NewSqlDataAdapterDim dst As NewDataSetDim dt As NewDataTables
35、qlConnection1.Open()打開數(shù)據(jù)庫Dim objSqlCommand As SqlCommandDim sql As Stringsql =select * from & name & objSqlCommand = NewSqlCommand(sql, sqlConnection1)Dim objSqlDataAdapter As SqlDataAdapter objSqlDataAdapter =NewSqlDataAdapter(objSqlCommand)Dim objDataSet As DataSet objDataSet =NewDataSet()庫存表)objS
36、qlDataAdapter.Fill(objDataSet,19庫存表)DataGridView2.DataSource = objDataSet.Tables(DataGridView2.Refresh()sqlConnection1.Close()關閉數(shù)據(jù)庫Else MsgBox(沒有選著修改項)End If 關于實現(xiàn)關鍵字查詢的代碼如下: If TextBox2.Text = ThenDim z As String z = MsgBox(請輸入姓名、編號關鍵字! , vbOKCancel + vbInformation,提示)Exit Sub ElseDim strConnection
37、As String = Server=DELL-PCSQLEXPRESS;database=renshi;uid=ouqing;pwd=123;”Dim sqlConnectionl As NewSqlConnection(strConnection)Dim dataAdapter As NewSqlDataAdapterDim dst As NewDataSet Dim dt As NewDataTablesqlConnection1.Open()打開數(shù)據(jù)庫Dim objSqlCommand As SqlCommandDim sql As String sql =select * from
38、& shadow & where 編號 like %& TextBox2.Text &% or姓名like %& TextBox2.Text &%根據(jù)所有表具有的 共同字段 查詢objSqlCommand = NewSqlCommand(sql, sqlConnectionl)Dim objSqlDataAdapter As SqlDataAdapter objSqlDataAdapter =NewSqlDataAdapter(objSqlCommand)Dim objDataSet As DataSet objDataSet =NewDataSet()objSqlDataAdapter.Fi
39、ll(objDataSet,庫存表)DataGridView2.DataSource = objDataSet.Tables(庫存表)DataGridView2.Refresh()20sqlConnection1.Close(),關閉數(shù)據(jù)庫End IfEnd Sub關于實現(xiàn)表的打印代碼如下:1、首先創(chuàng)建一個類:Imports System.Collections.GenericImports System.Windows.FormsImports System.DrawingImports System.CollectionsImports System.DataImports System.
40、TextNamespaceDgPrint Public Class PrintServicePrivate StrFormat As StringFormat 單元格內容Private RowPos As Integer 當前打印行Private NewPage As Boolean 判斷是否為新頁Private PageNo As Integer 打印頁數(shù)Private CellHeight As Integer 打印的單元格高度Private RowsPerPage As Integer 每頁的行數(shù)Private printDoc As NewSystem.Drawing.Printing
41、.PrintDocument() 用于打印的 PrintDocument ObjectPrivate ColumnLefts As NewArrayList() 列的左坐標Private ColumnWidths As NewArrayList() 列的寬度Private PrintTitle As String =標題Private AvailableColumns As NewList( Of String )() datagridview 中可見的列Private HeaderHeight As Integer = 0Private grid As DataGridView打印Publi
42、c Sub Print( ByVal grid As DataGridView, ByVal Title As String )21Dim ppvw As PrintPreviewDialogTryMegrid = grid 獲取要打印的 datagridview AvailableColumns.Clear()獲取中所有可見的列標題For Each c As DataGridViewColumn In grid.Columns If c.Visible = True ThenAvailableColumns.Add(c.HeaderText) End If Next ,顯示打印屬性窗體 Pr
43、intTitle = Title RowsPerPage = 0 printDoc.DocumentName =Dim dia As NewPrintDialog() dia.PrintToFile =Falsedia.Document = printDoc dia.UseEXDialog =TrueIf dia.ShowDialog() DialogResult.OK Then Return End Ifppvw =NewPrintPreviewDialog()ppvw.WindowState = FormWindowState.Maximized ppvw.Document = print
44、Doc,顯示打印預覽AddHandler printDoc.BeginPrint, NewSystem.Drawing.Printing.PrintEventHandler( AddressOf PrintGridDoc_BeginPrint) AddHandler printDoc.PrintPage, NewSystem.Drawing.Printing.PrintPageEventHandler(AddressOf PrintGridDoc_PrintPage)If ppvw.ShowDialog() DialogResult.OK ThenRemoveHandler printDoc.
45、BeginPrint, NewSystem.Drawing.Printing.PrintEventHandler( AddressOf PrintGridDoc_BeginPrint)RemoveHandler printDoc.PrintPage, NewSystem.Drawing.Printing.PrintPageEventHandler( AddressOf PrintGridDoc_PrintPage)22ReturnEnd If,打印文件printDoc.Print()RemoveHandler printDoc.BeginPrint, NewSystem.Drawing.Pri
46、nting.PrintEventHandler( AddressOf PrintGridDoc_BeginPrint)RemoveHandler printDoc.PrintPage, NewSystem.Drawing.Printing.PrintPageEventHandler( AddressOf PrintGridDoc_PrintPage)Catch ex As ExceptionEnd TryEnd SubPrivate Sub PrintGridDoc_BeginPrint( ByVal sender As Object , ByVal e AsSystem.Drawing.Pr
47、inting.PrintEventArgs)TryStrFormat =NewStringFormat()StrFormat.Alignment = StringAlignment.Center居中StrFormat.LineAlignment = StringAlignment.CenterStrFormat.Trimming = StringTrimming.EllipsisCharacterColumnLefts.Clear()ColumnWidths.Clear()CellHeight = 0RowsPerPage = 0PageNo = 1NewPage =TrueRowPos =
48、023Catch ex As ExceptionEnd TryEnd SubPrivate Sub PrintGridDoc_PrintPage(ByVal sender As Object , ByVal e AsSystem.Drawing.Printing.PrintPageEventArgs)Dim tmpWidth As Integer , i As IntegerDim tmpTop As Integer = e.MarginBounds.TopDim tmpLeft As Integer = e.MarginBounds.LeftDim font As NewFont(宋體,9)
49、Dim font_BT As NewFont(宋體,18)Dim font_C As NewFont(宋體,12)TryIf PageNo = 1 ThenFor Each GridCol As DataGridViewColumn In grid.ColumnsIf GridCol.Visible Then獲取列的寬度及高度tmpWidth = GridCol.WidthHeaderHeight = 33獲取列的寬度、高度及類型ColumnLefts.Add(tmpLeft)ColumnWidths.Add(tmpWidth)tmpLeft += tmpWidthEnd If24NextEn
50、d If逐行打印當前頁While RowPos = e.MarginBounds.Height + e.MarginBounds.Top Then ,不能DrawGridFooter(e, RowsPerPage)NewPage =TruePageNo += 1e.HasMorePages =TrueReturn ElseIf NewPage Then ,打印標題e.Graphics.DrawString(PrintTitle,NewFont(font_BT,FontStyle.Bold), Brushes.Black, e.MarginBounds.Width - e.Graphics.Me
51、asureString(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)Dim s As String = DateTime.Now.ToLongDateString() & &DateTime.Now.ToShortDateS
52、tring()e.Graphics.DrawString(s& 統(tǒng)計,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,
53、 FontStyle.Bold), FontStyle.Bold),e.MarginBounds.Width).Height - 13),打印列 tmpTop = e.MarginBounds.Top i = 0For Each GridCol As DataGridViewColumn In grid.Columns If GridCol.Visible = True Then25Newe.Graphics.FillRectangle(SolidBrush(Color.LightGray), NewRectangle( CInt (ColumnLefts(i), tmpTop, CInt (
54、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), New RectangleF( CInt (ColumnLefts(i), tmpTop, CInt (ColumnWidths(i), HeaderHeight), StrFormat) i += 1End IfNextNewPage =FalsetmpTop += HeaderHeightEnd If打印各列內容 i = 0For Each Cel As DataGridViewCell In GridRow.Cells If grid.Co
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024正式的地區(qū)代理合同范文
- 工程合同功能解析
- 水利工程維修貸款合同
- 2024醫(yī)院藥品供銷合同
- 農(nóng)業(yè)領域合作協(xié)議范本
- 2024年咨詢顧問合作簡單協(xié)議書
- 彩色鋼板工程承包協(xié)議書
- 集裝箱海運合同范本
- 2024建筑業(yè)合同范本范文
- 2024個人房產(chǎn)轉讓合同
- 剪映:手機短視頻制作-配套課件
- 西氣東輸二線25標段山嶺隧道內管道安裝技術
- 小學綜合實踐活動-綠色出行教學課件設計
- 防校園欺凌-課件(共28張PPT)
- 第6章 智能網(wǎng)聯(lián)汽車測評技術
- 單向板結構設計
- 普通高等學校學生轉學申請表
- 房租、水、電費(專用)收據(jù)Excel模板
- 習近平總書記關于教育的重要論述研究學習通章節(jié)答案期末考試題庫2023年
- 重癥急性胰腺炎ppt恢復課件
- 2022江蘇省沿海開發(fā)集團限公司招聘23人上岸筆試歷年難、易錯點考題附帶參考答案與詳解
評論
0/150
提交評論