項(xiàng)目4人力資源管理系統(tǒng)實(shí)用文檔_第1頁
項(xiàng)目4人力資源管理系統(tǒng)實(shí)用文檔_第2頁
項(xiàng)目4人力資源管理系統(tǒng)實(shí)用文檔_第3頁
項(xiàng)目4人力資源管理系統(tǒng)實(shí)用文檔_第4頁
項(xiàng)目4人力資源管理系統(tǒng)實(shí)用文檔_第5頁
已閱讀5頁,還剩117頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

項(xiàng)目4人力資源管理系統(tǒng)實(shí)用文檔(實(shí)用文檔,可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)

項(xiàng)目4——--人力資源管理系統(tǒng)項(xiàng)目4人力資源管理系統(tǒng)實(shí)用文檔(實(shí)用文檔,可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)項(xiàng)目來源:湖南科創(chuàng)信息技術(shù)股份隨著市場(chǎng)競(jìng)爭(zhēng)的日趨激烈,人才已成為實(shí)現(xiàn)企業(yè)自身戰(zhàn)略目標(biāo)的一個(gè)非常關(guān)鍵的因素.企業(yè)中人心向背和員工對(duì)工作的投入程度在很大程度上決定了該企業(yè)的興衰與成敗.如何能保持本企業(yè)對(duì)員工的工作責(zé)任感,激勵(lì)他們的工作熱情,減少人才的流失,已成為困擾企業(yè)主管和人力資源經(jīng)理的一個(gè)日益尖銳的問題,可以說企業(yè)管理從根本上來講就是對(duì)人的管理?,F(xiàn)在“公平、公正、合理”的企業(yè)管理原則已為不少企業(yè)所采納。但是要實(shí)現(xiàn)“公平、公正、合理”絕非易事,它不是僅靠規(guī)章制度和政策就可以解決的.通過建立透明、相容、一致、易查和全面的人力資源信息系統(tǒng),將與人相關(guān)的信息統(tǒng)一地管理起來,才有可能為“公平、公正、合理”原則的實(shí)現(xiàn),以及企業(yè)在運(yùn)作和勞資糾紛等方面的風(fēng)險(xiǎn)規(guī)避等建立一套科學(xué)的保障體系。本章將向讀者全面剖析人力資源管理的內(nèi)容,由此得出人力資源管理系統(tǒng)需求分析和數(shù)據(jù)建模,并最終演示如何利用VisualBasic。NET完成系統(tǒng)的制作。1人力資源管理的任務(wù)與作用1.1人力資源管理的任務(wù)人力資源管理工作的主要任務(wù)有:進(jìn)行人力資源規(guī)劃和分析貫徹平等就業(yè)機(jī)會(huì)原則聘任員工從事人力資源開發(fā)確定報(bào)酬和福利處理員工與勞資關(guān)系人力資源規(guī)劃和分析包括幾方面的任務(wù)。在進(jìn)行人力資源規(guī)劃的過程中,經(jīng)理人員將預(yù)計(jì)未來影響勞動(dòng)力供求的有關(guān)因素。人力資源分析要求具備各種相關(guān)的信息資料、通信系統(tǒng)和評(píng)價(jià)系統(tǒng),它們是從事協(xié)調(diào)人力資源工作所不可或缺的部分。政府在遵從平等就業(yè)機(jī)會(huì)法規(guī)方面的要求,無疑將對(duì)所有其他人力資源管理工作產(chǎn)生重大影響。例如,企業(yè)在進(jìn)行戰(zhàn)略性人力資源規(guī)劃時(shí),為貫徹在雇傭少數(shù)種族成員和婦女方面的贊助性行為的要求,就必須為雇傭各種各樣的雇員留有充分的余地。另外在招聘選拔和培訓(xùn)人員時(shí),所有經(jīng)理人員都必須遵守平等就業(yè)機(jī)會(huì)法規(guī)的要求。聘任員工指選擇適合標(biāo)準(zhǔn)要求的相應(yīng)數(shù)量的人員,來填補(bǔ)企業(yè)的崗位空缺.職務(wù)分析是聘任工作的基礎(chǔ).根據(jù)職務(wù)分析所得結(jié)論,就可以準(zhǔn)備工作說明書和職務(wù)要求細(xì)則,這兩項(xiàng)都是在招聘中所需使用的材料。在人員選拔過程中,應(yīng)特別注意選擇最符合要求的員工來填補(bǔ)企業(yè)的崗位空缺。員工培訓(xùn)與人力資源開發(fā)工作包括想新雇員介紹企業(yè)的各種情況、對(duì)現(xiàn)有員工進(jìn)行職業(yè)技能培訓(xùn)、鼓勵(lì)和幫助員工在多方面提高和發(fā)展等內(nèi)容.在職務(wù)不斷演化和改變的環(huán)境下,為了適應(yīng)技術(shù)的變化,企業(yè)就必須對(duì)員工進(jìn)行培訓(xùn)和再培訓(xùn)。此外,為迎接未來的挑戰(zhàn),還必須鼓勵(lì)各級(jí)負(fù)責(zé)人、管理者和所有員工不斷有所發(fā)展和提高。為此企業(yè)一般制定了員工職業(yè)發(fā)展計(jì)劃,這種計(jì)劃的目的,是為那些在企業(yè)內(nèi)尋求自我發(fā)展的員工設(shè)計(jì)出發(fā)展的路徑,并安排為此所需要的有關(guān)活動(dòng)。為了提高員工的工作成效,企業(yè)還應(yīng)對(duì)員工的工作表現(xiàn)進(jìn)行考核,以確定員工的本職工作究竟做的怎么樣.報(bào)酬就是通過薪金、獎(jiǎng)勵(lì)和福利等方式來報(bào)答為企業(yè)工作的員工。企業(yè)必須認(rèn)真設(shè)計(jì)和不斷完善基本工資和薪酬制度。除了工薪以外,越來越多的企業(yè)好指定了某些獎(jiǎng)勵(lì)計(jì)劃,例如利潤(rùn)分享和工作獎(jiǎng)勵(lì)等.但是另一方面,快速增長(zhǎng)的福利費(fèi)用,特別是扶搖直上的醫(yī)療的保健費(fèi)用,仍將繼續(xù)是一個(gè)值得思考和認(rèn)真對(duì)待的重大問題。如果員工和企業(yè)雙方都想聯(lián)手共創(chuàng)繁榮,那么管理著和員工就必須卓有成效地處理雙方的關(guān)系。不論員工是否由工會(huì)來代表,企業(yè)都必須重視與員工健康、人身安全和財(cái)物保障有關(guān)的各項(xiàng)工作。為促成企業(yè)與員工的良好關(guān)系,企業(yè)還必須保障員工的各種權(quán)利.另外為了使員工如同管理者那樣準(zhǔn)確地了解企業(yè)對(duì)員工的期望.企業(yè)還必須制定、傳達(dá)和不斷更新人力資源政策和規(guī)則。在有工會(huì)的企業(yè)中,企業(yè)還應(yīng)重視和處理好資方和工會(huì)的關(guān)系。1.2人力資源管理系統(tǒng)的作用人力資源管理系統(tǒng)是以先進(jìn)的軟件和高速、大容量的硬件為基礎(chǔ)的,新的人力資源管理模式,通過集中式的信息庫、自動(dòng)處理信息、員工自助服務(wù)、外協(xié)以及服務(wù)共享,達(dá)到降低成本、提高效率、改進(jìn)員工服務(wù)模式的目的。它通過與企業(yè)現(xiàn)有的網(wǎng)絡(luò)技術(shù)相聯(lián)系,保證人力資源與日新月異的技術(shù)環(huán)境同步發(fā)展。一般來說,可以分為四個(gè)部分來理解人力資源管理系統(tǒng)。管理人員角色和目標(biāo)的改變傳統(tǒng)的人力資源管理中,管理人員的絕大部分精力將耗費(fèi)在繁瑣的日常行政事務(wù)處理上,而作為企業(yè)管理層的參謀角色應(yīng)該做的咨詢和策略制定的工作相對(duì)缺乏.通過人力資源管理系統(tǒng)管理人員將決大部分精力放在管理層提供咨詢、建議上,而在行政事務(wù)上的工作可以由電子化系統(tǒng)完成,只需占用HR人員極少的精力和時(shí)間。提供更好的服務(wù)人力資源管理系統(tǒng)可以迅速、有效地收集各種信息,加強(qiáng)內(nèi)部的信息溝通。各種用戶可以直接從系統(tǒng)中獲得自己所需要的各種信息,并根據(jù)相關(guān)信息做出決策和相應(yīng)的行動(dòng)方案。3.降低成本人力資源管理系統(tǒng)通過減少人力資源管理工作的操作成本、降低員工流動(dòng)率、減少通訊費(fèi)用等途徑達(dá)到降低企業(yè)運(yùn)作成本的目的。4.革新管理理念人力資源管理系統(tǒng)的最終目的是達(dá)到革新企業(yè)的管理理念而不僅僅是改進(jìn)管理方式、優(yōu)化人力資源管理。先進(jìn)技術(shù)應(yīng)用與人力資源管理時(shí),并不僅僅是為了將現(xiàn)有的人力資源工作做的更好,更重要的是,做些對(duì)于企業(yè)來講更有效率的事情,成為管理層的決策支持者,為決策提供信息和解決方案.2功能分析與系統(tǒng)流程圖由于篇幅有限,本實(shí)例詳細(xì)介紹如圖1所示的功能開發(fā)過程,并簡(jiǎn)化其中各功能所包含的屬性,其他功能讀者完全可以參照這些功能的開發(fā)方法實(shí)現(xiàn)。人力資源管理系統(tǒng)人力資源管理系統(tǒng)圖1詳細(xì)介紹的功能模塊歷史工資歷史工資獎(jiǎng)勵(lì)記錄歷史工資懲罰記錄當(dāng)月工資管理修改明細(xì)并計(jì)算從歷史導(dǎo)入導(dǎo)入到歷史圖2系統(tǒng)流程圖3數(shù)據(jù)庫設(shè)計(jì)一個(gè)基本的人力資源管理系統(tǒng)數(shù)據(jù)庫中包括多張數(shù)據(jù)表,分別存放相應(yīng)子功能的數(shù)據(jù)信息,其中組織機(jī)構(gòu)編碼表和職員基本信息表是起關(guān)鍵作用的表,用于存放基礎(chǔ)的數(shù)據(jù)信息。其他涉及組織機(jī)構(gòu)信息和職員信息的數(shù)據(jù)表,都只記錄機(jī)構(gòu)或職員的編號(hào),根據(jù)作為外鍵的編號(hào)字段和組織機(jī)構(gòu)編碼表或職員基本信息表相對(duì)應(yīng).因此這2張表和其他數(shù)據(jù)表間的關(guān)系是1:N的關(guān)系.本程序共需8張表,用途分別如表1所示。表1系統(tǒng)數(shù)據(jù)表及其用途數(shù)據(jù)表名稱數(shù)據(jù)表用途用戶清單保存系統(tǒng)使用者的信息職員基本信息表用于保存企業(yè)組織機(jī)構(gòu)的詳細(xì)信息,包括機(jī)構(gòu)間的層次編碼等組織機(jī)構(gòu)編碼表用于保存企業(yè)員工的基本信息月工資統(tǒng)計(jì)表用于保存、計(jì)算當(dāng)月的員工工資個(gè)人所得稅表用于保存?zhèn)€人所得稅的稅率數(shù)據(jù)工資發(fā)放歷史表用于保存所有月份工資發(fā)放的歷史職員獎(jiǎng)勵(lì)表用于保存員工的獎(jiǎng)勵(lì)情況職員懲罰表用于保存員工的懲罰情況以下為數(shù)據(jù)表之間的關(guān)系圖圖3數(shù)據(jù)表關(guān)系圖3.1創(chuàng)建數(shù)據(jù)庫打開SQLServer企業(yè)管理器,新建一個(gè)數(shù)據(jù)庫,將其命名為hrmbook.后面幾小節(jié)我們將列出幾個(gè)重點(diǎn)的數(shù)據(jù)表的建庫腳本。3。2創(chuàng)建“組織機(jī)構(gòu)編碼表”CREATETABLE[dbo]。[組織機(jī)構(gòu)編碼表]( [內(nèi)部編號(hào)][int]IDENTITY(1,1)NOTNULL, [類別][varchar](100)NULL, [AbsIndex][int]NULL, [ItemIndex][int]NULL, [ItemLevel][int]NULL, [ParentIndex][int]NULL, [類別號(hào)][char](10)NULL, [單位編號(hào)][varchar](20)NOTNULLPRIMARYKEY, [單位名稱][varchar](100)NULL, [拼音編碼][varchar](50)NULL, [單位地址][varchar](100)NULL, [單位號(hào)碼][varchar](50)NULL, [開戶銀行][varchar](100)NULL, [帳號(hào)][varchar](50)NULL, [開戶全稱][varchar](100)NULL)ON[PRIMARY]GO3。3創(chuàng)建“職員基本信息表”CREATETABLE[dbo].[職員基本信息表]( [內(nèi)部編號(hào)][int]IDENTITY(1,1)NOTNULL, [職員編號(hào)][varchar](30)NOTNULLPRIMARYKEY, [姓名][varchar](20)NOTNULL, [姓名簡(jiǎn)碼][varchar](10)NULL, [性別][varchar](2)NULL, [出生日期][int]NULL, [年齡][int]NULL, [籍貫][varchar](50)NULL, [民族][varchar](20)NULL, [文化程度][char](50)NULL, [畢業(yè)學(xué)校][char](100)NULL, [健康狀況][varchar](50)NULL, [婚姻狀況][varchar](10)NULL, [身份證號(hào)碼][varchar](18)NULL, [家庭][varchar](50)NULL, [辦公][varchar](50)NULL, [][varchar](50)NULL,[電子郵件地址][varchar](50)NULL, [職工賬號(hào)][varchar](20)NULL, [單位編號(hào)][varchar](20)NULL, [備注][varchar](100)NULL)ON[PRIMARY]GO3。4創(chuàng)建其他數(shù)據(jù)表CREATETABLE[dbo].[用戶清單]( [用戶編號(hào)][char](6)NOTNULL, [部門][char](20)NOTNULL, [姓名][char](10)NOTNULL, [性別][char](2)NOTNULL, [密碼][char](10)NULL)ON[PRIMARY]GOCREATETABLE[dbo].[月工資統(tǒng)計(jì)表]( [日期][int]NULL, [職員編號(hào)][varchar](30)NotNULLPRIMARYKEY, [基本工資][float]NULLDEFAULT(0), [浮動(dòng)工資][decimal](26,2)NULLDEFAULT(0), [合同補(bǔ)][decimal](26,2)NULLDEFAULT(0), [糧副補(bǔ)][decimal](26,2)NULLDEFAULT(0), [房補(bǔ)][decimal](26,2)NULLDEFAULT(0), [臨時(shí)補(bǔ)][decimal](26,2)NULLDEFAULT(0), [職務(wù)工資][decimal](26,2)NULLDEFAULT(0), [工齡工資][decimal](26,2)NULLDEFAULT(0),[考核工資][decimal](26,2)NULLDEFAULT(0), [獎(jiǎng)金][decimal](26,2)NULLDEFAULT(0), [應(yīng)發(fā)金額合計(jì)][decimal](26,2)NULLDEFAULT(0), [房租][decimal](26,2)NULLDEFAULT(0), [水電費(fèi)][decimal](26,2)NULLDEFAULT(0), [請(qǐng)假扣除][decimal](26,2)NULLDEFAULT(0), [考勤扣除][decimal](26,2)NULLDEFAULT(0), [罰款][decimal](26,2)NULLDEFAULT(0), [住房公積金][decimal](26,2)NULLDEFAULT(0), [醫(yī)療保險(xiǎn)][decimal](26,2)NULLDEFAULT(0), [養(yǎng)老保險(xiǎn)][decimal](26,2)NULLDEFAULT(0), [失業(yè)保險(xiǎn)][decimal](26,2)NULLDEFAULT(0), [生育保險(xiǎn)][decimal](26,2)NULLDEFAULT(0), [工傷保險(xiǎn)][decimal](26,2)NULLDEFAULT(0), [應(yīng)扣金額合計(jì)][decimal](26,2)NULLDEFAULT(0), [工資合計(jì)][decimal](26,2)NULLDEFAULT(0), [個(gè)人所得稅][decimal](26,2)NULLDEFAULT(0), [實(shí)發(fā)金額][decimal](26,2)NULLDEFAULT(0), [發(fā)放否][char](10)NULL, [月份][int]NULL)ON[PRIMARY]GOCREATETABLE[dbo]。[個(gè)人所得稅表]( [編號(hào)][int]NOTNULLPRIMARYKEY, [級(jí)數(shù)][char](2)NOTNULL, [不計(jì)稅工資][decimal](26,2)NOTNULLDEFAULT(800), [工資下限][decimal](26,2)NOTNULLDEFAULT(0), [工資上限][decimal](26,2)NOTNULLDEFAULT(0), [個(gè)人所得稅率][decimal](26,2)NOTNULLDEFAULT(0), [速算扣除數(shù)][decimal](26,2)NOTNULLDEFAULT(0), [備注][varchar](50)NULL)ON[PRIMARY]GOCREATETABLE[dbo]。[工資發(fā)放歷史表]( [日期][int]NULL, [職員編號(hào)][varchar](30)NULL, [基本工資][float]NULL, [浮動(dòng)工資][decimal](26,2)NULL, [合同補(bǔ)][decimal](26,2)NULL, [糧副補(bǔ)][decimal](26,2)NULL, [房補(bǔ)][decimal](26,2)NULL, [臨時(shí)補(bǔ)][decimal](26,2)NULL, [職務(wù)工資][decimal](26,2)NULL, [工齡工資][decimal](26,2)NULL, [考核工資][decimal](26,2)NULL, [獎(jiǎng)金][decimal](26,2)NULL, [應(yīng)發(fā)金額合計(jì)][decimal](26,2)NULL, [房租][decimal](26,2)NULL, [水電費(fèi)][decimal](26,2)NULL, [請(qǐng)假扣除][decimal](26,2)NULL, [考勤扣除][decimal](26,2)NULL, [罰款][decimal](26,2)NULL, [住房公積金][decimal](26,2)NULL, [醫(yī)療保險(xiǎn)][decimal](26,2)NULL, [養(yǎng)老保險(xiǎn)][decimal](26,2)NULL, [失業(yè)保險(xiǎn)][decimal](26,2)NULL, [生育保險(xiǎn)][decimal](26,2)NULL, [工傷保險(xiǎn)][decimal](26,2)NULL, [應(yīng)扣金額合計(jì)][decimal](26,2)NULL, [工資合計(jì)][decimal](26,2)NULL, [個(gè)人所得稅][decimal](26,2)NULL, [實(shí)發(fā)金額][decimal](26,2)NULL, [發(fā)放否][char](10)NULL, [月份][int]NULL)ON[PRIMARY]GOCREATETABLE[dbo].[職員獎(jiǎng)勵(lì)表]( [序號(hào)][int]IDENTITY(1,1)NOTNULLPRIMARYKEY, [職員編號(hào)][varchar](30)NOTNULL, [獎(jiǎng)勵(lì)類型][varchar](20)NULL, [獎(jiǎng)勵(lì)金額][float]NULLDEFAULT(0), [是否計(jì)入工資][char](10)NULLDEFAULT(’否’), [獎(jiǎng)勵(lì)原因][varchar](50)NULL, [部門意見][varchar](100)NULL, [獎(jiǎng)勵(lì)日期][int]NULL)ON[PRIMARY]GOCREATETABLE[dbo].[職員懲罰表]( [序號(hào)][int]IDENTITY(1,1)NOTNULLPRIMARYKEY, [職員編號(hào)][varchar](30)NOTNULL, [懲罰類型][varchar](20)NULL, [懲罰金額][float]NULLDEFAULT(0), [是否計(jì)入工資][char](10)NULLDEFAULT('否’), [懲罰原因][varchar](50)NULL, [部門意見][varchar](100)NULL, [懲罰日期][int]NULL)ON[PRIMARY]GO3.5創(chuàng)建外部關(guān)鍵字ALTERTABLE[dbo].[月工資統(tǒng)計(jì)表]ADD CONSTRAINT[FK_月工資統(tǒng)計(jì)表_職員基本信息表]FOREIGNKEY ( [職員編號(hào)] )REFERENCES[dbo]。[職員基本信息表]( [職員編號(hào)] )GOALTERTABLE[dbo].[工資發(fā)放歷史表]ADD CONSTRAINT[FK_工資發(fā)放歷史表_職員基本信息表]FOREIGNKEY ( [職員編號(hào)] )REFERENCES[dbo]。[職員基本信息表]( [職員編號(hào)] )GOALTERTABLE[dbo]。[職員獎(jiǎng)勵(lì)表]ADD CONSTRAINT[FK_職員獎(jiǎng)勵(lì)表_職員基本信息表]FOREIGNKEY ( [職員編號(hào)] )REFERENCES[dbo].[職員基本信息表]( [職員編號(hào)] )GOALTERTABLE[dbo].[職員懲罰表]ADD CONSTRAINT[FK_職員懲罰表_職員基本信息表]FOREIGNKEY ( [職員編號(hào)] )REFERENCES[dbo].[職員基本信息表]( [職員編號(hào)] )GO3。6創(chuàng)建存儲(chǔ)過程系統(tǒng)使用了四個(gè)存儲(chǔ)過程,分別實(shí)現(xiàn)從歷史導(dǎo)入工資明細(xì)、計(jì)算當(dāng)月工資和工資發(fā)放的功能。這些存儲(chǔ)過程都在“當(dāng)月工資管理"模塊中使用,可以通過以下的腳本代碼創(chuàng)建。ifexists(select*fromdbo.sysobjectswhereid=object_id(N’[dbo].[sf_空數(shù)據(jù)置0]’)andOBJECTPROPERTY(id,N'IsProcedure')=1)dropprocedure[dbo].[sf_空數(shù)據(jù)置0]GOifexists(select*fromdbo。sysobjectswhereid=object_id(N'[dbo].[sf_形成月工資統(tǒng)計(jì)表]')andOBJECTPROPERTY(id,N'IsProcedure')=1)dropprocedure[dbo].[sf_形成月工資統(tǒng)計(jì)表]GOifexists(select*fromdbo。sysobjectswhereid=object_id(N'[dbo].[sf_當(dāng)月工資統(tǒng)計(jì)]’)andOBJECTPROPERTY(id,N’IsProcedure’)=1)dropprocedure[dbo]。[sf_當(dāng)月工資統(tǒng)計(jì)]GOifexists(select*fromdbo.sysobjectswhereid=object_id(N’[dbo]。[sf_當(dāng)月工資發(fā)放]')andOBJECTPROPERTY(id,N’IsProcedure’)=1)dropprocedure[dbo].[sf_當(dāng)月工資發(fā)放]GO------—-————-—--——-———-createproceduresf_空數(shù)據(jù)置0asbegintransaction update月工資統(tǒng)計(jì)表set基本工資=0where基本工資isnull update月工資統(tǒng)計(jì)表set職務(wù)工資=0where職務(wù)工資isnull update月工資統(tǒng)計(jì)表set工齡工資=0where工齡工資isnull update月工資統(tǒng)計(jì)表set考核工資=0where考核工資isnull update月工資統(tǒng)計(jì)表set獎(jiǎng)金=0where獎(jiǎng)金isnull update月工資統(tǒng)計(jì)表set應(yīng)發(fā)金額合計(jì)=0where應(yīng)發(fā)金額合計(jì)isnull update月工資統(tǒng)計(jì)表set房租=0where房租isnull update月工資統(tǒng)計(jì)表set水電費(fèi)=0where水電費(fèi)isnull update月工資統(tǒng)計(jì)表set請(qǐng)假扣除=0where請(qǐng)假扣除isnull update月工資統(tǒng)計(jì)表set罰款=0where罰款isnull update月工資統(tǒng)計(jì)表set考勤扣除=0where考勤扣除isnull update月工資統(tǒng)計(jì)表set住房公積金=0where住房公積金isnull update月工資統(tǒng)計(jì)表set醫(yī)療保險(xiǎn)=0where醫(yī)療保險(xiǎn)isnull update月工資統(tǒng)計(jì)表set養(yǎng)老保險(xiǎn)=0where養(yǎng)老保險(xiǎn)isnull update月工資統(tǒng)計(jì)表set應(yīng)扣金額合計(jì)=0where應(yīng)扣金額合計(jì)isnull update月工資統(tǒng)計(jì)表set失業(yè)保險(xiǎn)=0where失業(yè)保險(xiǎn)isnull update月工資統(tǒng)計(jì)表set個(gè)人所得稅=0where個(gè)人所得稅isnull update月工資統(tǒng)計(jì)表set工資合計(jì)=0where工資合計(jì)isnull update月工資統(tǒng)計(jì)表set實(shí)發(fā)金額=0where實(shí)發(fā)金額isnull update個(gè)人所得稅表set個(gè)人所得稅率=0where個(gè)人所得稅率isnullcommitGO-——----——--—----—-----—----———————--—createproceduresf_當(dāng)月工資統(tǒng)計(jì)asbegintransaction declare@monthint select@month=日期from月工資統(tǒng)計(jì)表 --計(jì)算獎(jiǎng)金 update月工資統(tǒng)計(jì)表set獎(jiǎng)金= (selectsum(獎(jiǎng)勵(lì)金額)from職員獎(jiǎng)勵(lì)表asiwherei.是否計(jì)入工資=’是'and i.獎(jiǎng)勵(lì)日期>@month*100andi。獎(jiǎng)勵(lì)日期<(@month+1)*100 groupbyi.職員編號(hào)havingi.職員編號(hào)=月工資統(tǒng)計(jì)表。職員編號(hào)) update月工資統(tǒng)計(jì)表set獎(jiǎng)金=0where獎(jiǎng)金isnull --計(jì)算懲罰 update月工資統(tǒng)計(jì)表set罰款= (selectsum(懲罰金額)from職員懲罰表asiwherei。是否計(jì)入工資=’是'and i。懲罰日期〉@month*100andi.懲罰日期<(@m(xù)onth+1)*100 groupbyi.職員編號(hào)havingi。職員編號(hào)=月工資統(tǒng)計(jì)表。職員編號(hào)) update月工資統(tǒng)計(jì)表set罰款=0where罰款isnull -—將空數(shù)據(jù)置0 execsf_空數(shù)據(jù)置0 --計(jì)算應(yīng)發(fā)/應(yīng)扣/工資合計(jì) update月工資統(tǒng)計(jì)表 set應(yīng)扣金額合計(jì)=房租+水電費(fèi)+請(qǐng)假扣除+罰款+考勤扣除+住房公積金+醫(yī)療保險(xiǎn) +養(yǎng)老保險(xiǎn)+失業(yè)保險(xiǎn) update月工資統(tǒng)計(jì)表 set應(yīng)發(fā)金額合計(jì)=基本工資+浮動(dòng)工資+合同補(bǔ)+糧副補(bǔ)+房補(bǔ)+臨時(shí)補(bǔ) +職務(wù)工資+工齡工資+考核工資+獎(jiǎng)金 update月工資統(tǒng)計(jì)表 set工資合計(jì)=應(yīng)發(fā)金額合計(jì)—應(yīng)扣金額合計(jì) —-計(jì)算個(gè)人所得稅 declare@gzhjnumeric(20,4),@zybhvarchar(20),@grsdsnumeric(20,4),@slfloat, @gzxxnumeric(20,4),@gzsxnumeric(20,4) declaremycurcursorforselect職員編號(hào),工資合計(jì)from月工資統(tǒng)計(jì)表 openmycur fetchnextfrommycurinto@zybh,@gzhj WHILE(@@FETCH_STATUS=0) BEGIN --扣除不計(jì)稅部分 select@gzhj=@gzhj—(selecttop1不計(jì)稅工資from個(gè)人所得稅表orderby級(jí)數(shù)) select@grsds=0 declaremycur1cursorforselect工資下限,工資上限,casewhen個(gè)人所得稅率>1then個(gè)人所得稅率/100else個(gè)人所得稅率end from個(gè)人所得稅表where工資上限<=@gzhjorderby工資上限 openmycur1 fetchnextfrommycur1into@gzxx,@gzsx,@sl WHILE(@@FETCH_STATUS=0) BEGIN select@grsds=@grsds+(@gzsx-@gzxx)*@sl fetchnextfrommycur1into@gzxx,@gzsx,@sl END closemycur1 deallocatemycur1 select@sl=casewhen個(gè)人所得稅率〉1then個(gè)人所得稅率/100else個(gè)人所得稅率end,@gzxx=工資下限from個(gè)人所得稅表 where工資下限=@gzsx select@grsds=@grsds+(@gzhj-@gzxx)*@sl update月工資統(tǒng)計(jì)表set個(gè)人所得稅=@grsdswherecurrentofmycur fetchnextfrommycurinto@zybh,@gzhj END closemycur deallocatemycur -—計(jì)算實(shí)發(fā)工資 update月工資統(tǒng)計(jì)表set實(shí)發(fā)金額=工資合計(jì)-個(gè)人所得稅commitGO————-——-—--——-——---——-—--——----—--———createproceduresf_形成月工資統(tǒng)計(jì)表@導(dǎo)入工資月份int,@統(tǒng)計(jì)工資月份intasbegintransaction deletefrom月工資統(tǒng)計(jì)表-—?jiǎng)h除已有數(shù)據(jù) ifexists(select*from工資發(fā)放歷史表where日期=@導(dǎo)入工資月份) begin ——從歷史倒入 insertinto月工資統(tǒng)計(jì)表 (日期,職員編號(hào),基本工資,浮動(dòng)工資,合同補(bǔ),糧副補(bǔ),房補(bǔ),臨時(shí)補(bǔ),職務(wù)工資,工齡工資,考核工資,獎(jiǎng)金,應(yīng)發(fā)金額合計(jì),房租,水電費(fèi),請(qǐng)假扣除,考勤扣除,罰款,住房公積金,醫(yī)療保險(xiǎn),養(yǎng)老保險(xiǎn),失業(yè)保險(xiǎn),生育保險(xiǎn),工傷保險(xiǎn),應(yīng)扣金額合計(jì),工資合計(jì),個(gè)人所得稅,實(shí)發(fā)金額,發(fā)放否,月份) select@統(tǒng)計(jì)工資月份,職員編號(hào),基本工資,浮動(dòng)工資,合同補(bǔ),糧副補(bǔ),房補(bǔ),臨時(shí)補(bǔ),職務(wù)工資,工齡工資,考核工資,獎(jiǎng)金,應(yīng)發(fā)金額合計(jì),房租,水電費(fèi),請(qǐng)假扣除,考勤扣除,罰款,住房公積金,醫(yī)療保險(xiǎn),養(yǎng)老保險(xiǎn),失業(yè)保險(xiǎn),生育保險(xiǎn),工傷保險(xiǎn),應(yīng)扣金額合計(jì),工資合計(jì),個(gè)人所得稅,實(shí)發(fā)金額,發(fā)放否,月份 from工資發(fā)放歷史表ashwhereh.日期=@導(dǎo)入工資月份 end --新的員工,歷史沒有記錄,生成記錄 insertinto月工資統(tǒng)計(jì)表 (職員編號(hào),日期)select職員編號(hào),@統(tǒng)計(jì)工資月份 from職員基本信息表ashwhereh.職員編號(hào)notin (select職員編號(hào)from月工資統(tǒng)計(jì)表) -—將空數(shù)據(jù)置0 execsf_空數(shù)據(jù)置0 -—自動(dòng)計(jì)算工資 execsf_當(dāng)月工資統(tǒng)計(jì)commitGO—-——-—--—-—-—-—-——-—-發(fā)放指定職員的工資createproceduresf_當(dāng)月工資發(fā)放@職員編號(hào)char(10)asbegintransaction update月工資統(tǒng)計(jì)表set發(fā)放否='是’from月工資統(tǒng)計(jì)表 where職員編號(hào)=@職員編號(hào) insertinto工資發(fā)放歷史表 select*from月工資統(tǒng)計(jì)表 where職員編號(hào)=@職員編號(hào) delete月工資統(tǒng)計(jì)表where職員編號(hào)=@職員編號(hào)commitGO4代碼與界面設(shè)計(jì)本系統(tǒng)采用多文檔窗體程序,每一功能對(duì)應(yīng)一個(gè)子窗體。4。1程序運(yùn)行結(jié)果本實(shí)例的運(yùn)行結(jié)果如圖4所示。選擇主菜單中的各菜單項(xiàng)即可進(jìn)入相應(yīng)的功能.例如可以選擇【薪資福利管理】|【當(dāng)月工資管理】菜單命令,調(diào)出如圖5所示的工資管理功能窗體,在其中輸入各個(gè)工資項(xiàng)明細(xì),單擊【計(jì)算當(dāng)月工資】按鈕可以計(jì)算出工資;其中的工資項(xiàng)明細(xì)也可以通過【導(dǎo)入工資歷史】按鈕從歷史數(shù)據(jù)中導(dǎo)入,從而減輕輸入工作的強(qiáng)度;單擊[工資發(fā)放]按鈕,可以發(fā)放選定職員的工資,打印出工資條并將工資發(fā)放的記錄放入歷史。圖4實(shí)例運(yùn)行結(jié)果圖5當(dāng)月工資管理功能窗體4。2創(chuàng)建工程啟動(dòng)MicrosoftVisualStudio。NET2003,在主菜單中選擇【文件】|【新建】|【項(xiàng)目】命令,彈出【新建項(xiàng)目】對(duì)話框沒,在【項(xiàng)目類型】列表框中選擇【VisualBasic項(xiàng)目】,然后在【模板】列表框中選擇【W(wǎng)indow應(yīng)用程序】。在【名稱】文本框中輸入一個(gè)合適的方案文件名,選取要存放的位置,然后單擊【確定】按鈕完成新項(xiàng)目的創(chuàng)建。6。3創(chuàng)建系統(tǒng)主窗體利用系統(tǒng)默認(rèn)生成的窗體作為主窗體,并將其對(duì)應(yīng)的文件改名為“frmMain.vb",為其添加主菜單控件以及StatusBar控件,布局如圖6所示.圖6系統(tǒng)主窗體(2)窗體的屬性設(shè)置如表2所示.表2主窗體屬性設(shè)置對(duì)象(控件)名屬性取值(說明)frmMainNamefrmMainfrmMainText人力資源管理系統(tǒng)frmMainIsMdiContainerTrueStatusBarText人力資源管理系統(tǒng)(3)窗體的主菜單屬性設(shè)置如表5所示.表3窗體主菜單屬性設(shè)置菜單欄菜單項(xiàng)屬性取值(說明)MenuItemDepText機(jī)構(gòu)編制管理MenuItemDepManageText機(jī)構(gòu)設(shè)置及編碼MenuItemDepInfoText機(jī)構(gòu)詳細(xì)信息MenuItemPeopleText職員信息管理MenuItemDepPeopleManageText職員信息維護(hù)MenuItemPeopleQueryText職員信息查詢MenuItemSalaryText薪資福利管理MenuItemPeopleSalaryManageText當(dāng)月工資計(jì)算MenuItemTaxInfoText個(gè)人所得稅率MenuItemPrizeText工資發(fā)放歷史MenuItemPunishText職員獎(jiǎng)勵(lì)管理MenuItemSalaryhisText職員懲罰管理(4)添加判斷子窗體實(shí)例狀態(tài)的函數(shù)GetInstanceState,此函數(shù)主要作用是用來實(shí)現(xiàn)單擊主窗體的某菜單項(xiàng),如【計(jì)算當(dāng)月工資】只是出現(xiàn)一個(gè)計(jì)算當(dāng)月工資窗體。PrivateFunctionGetInstanceState(ByValnameAsString)AsBoolean’獲得frmMain窗體的子窗體的數(shù)量DimiAsInteger=Me.MdiChildren.Length’循環(huán)判斷是否有名為name的子窗體實(shí)例Fori=0ToMe。MdiChildren。Length-1IfMe。MdiChildren(i)。Name=nameThen’存在名為name的子窗體,是子窗體獲得焦點(diǎn)并返回TrueMe。MdiChildren(i).Focus()ReturnTrueEndIfNext'不存在名為Name的子窗體FalseReturnFalseEndFunction(5)添加采單項(xiàng)MenuItemDepManage的Click事件響應(yīng)函數(shù).PrivateSubMenuItemDepManage_Click(ByValsenderAsObject,_ByValeAsSystem.EventArgs)HandlesMenuItemDepManage。Click'判斷機(jī)構(gòu)設(shè)置及編碼窗體是是否已經(jīng)創(chuàng)建IfGetInstanceState(”frmDepManage”)Then'機(jī)構(gòu)設(shè)置及編碼窗體已經(jīng)創(chuàng)建并返回ExitSubEndIf’創(chuàng)建并顯示商品資料維護(hù)窗體DimchildFrmAsfrmDepManage=NewfrmDepManagechildFrm.MdiParent=MechildFrm.Show()EndSub4.4創(chuàng)建數(shù)據(jù)訪問模塊因?yàn)楦鱾€(gè)窗體均需要對(duì)數(shù)據(jù)庫進(jìn)行訪問,可以把對(duì)數(shù)據(jù)庫的一些操作通過一個(gè)類來實(shí)現(xiàn),這樣可以使對(duì)數(shù)據(jù)庫的訪問更加簡(jiǎn)單.選擇【文件】|【添加新項(xiàng)】命令添加一個(gè)名為“DataBase.vb"的類文件。ImportsSystem。DataImportsSystem.Data。SqlClientImportsSystem。ComponentModelPublicClassDataBase’實(shí)現(xiàn)接口IDisposableImplementsIDisposable'數(shù)據(jù)庫連接對(duì)象PrivateSqlConnAsSqlConnectionPublicSharedsConnAsString="PersistSecurityInfo=False;IntegratedSecurity=SSPI;database=hrmbook;server=localhost;ConnectTimeout=30"PublicSubDispose()ImplementsSystem.IDisposable。DisposeDispose(True)GC.SuppressFinalize(True)EndSubProtectedSubDispose(ByValdisposingAsBoolean)Ifdisposing〈>TrueThenReturnEndIfIfSqlConnIsNothing=FalseThenSqlConn。Dispose()SqlConn=NothingEndIfEndSubPublicSubOpen()IfSqlConnIsNothing=TrueThen’建立數(shù)據(jù)庫連接對(duì)象SqlConn=NewSqlConnection(Me.sConn)’打開數(shù)據(jù)庫連接SqlConn。Open()EndIfEndSubPublicSubClose()’如果數(shù)據(jù)庫連接對(duì)象不為空則關(guān)閉數(shù)據(jù)庫連接IfSqlConnIsNothing=FalseThenSqlConn。Close()EndIfEndSubPublicFunctionRunSelectSQL(ByValsSQLStringAsSystem。String)AsDataViewMe.Open()DimSqlDSAsDataSet=NewDataSetDimSqlDAAsSqlDataAdapter=NewSqlDataAdapter(sSQLString,Me.SqlConn)SqlDA.Fill(SqlDS)ReturnSqlDS.Tables(0).DefaultViewEndFunctionPublicFunctionRunDelOrInsSQL(ByValsSQLStringAsSystem.String)Me。Open()DimSqlCommAsSqlCommand=NewSqlCommand(sSQLString,Me。SqlConn)SqlComm。ExecuteNonQuery()EndFunctionEndClass4.5實(shí)現(xiàn)機(jī)構(gòu)設(shè)置及編碼功能本節(jié)主要演示如何利用VisualBasic。NET實(shí)現(xiàn)機(jī)構(gòu)設(shè)置及編碼功能。機(jī)構(gòu)設(shè)置的編碼機(jī)構(gòu)設(shè)置及編碼功能主要用于實(shí)現(xiàn)設(shè)置機(jī)構(gòu)的層級(jí)關(guān)系。新建一個(gè)窗體,將其Name屬性設(shè)置為“frmDepManage"并為其添加如圖7所示的控件。圖7機(jī)構(gòu)設(shè)置及編碼窗體(2)部分控件的屬性設(shè)置如表4所示。表4機(jī)構(gòu)設(shè)置及編碼窗體控件屬性設(shè)置控件類型對(duì)象名屬性取值(說明)FormfrmDepManageText機(jī)構(gòu)設(shè)置及編碼TreeViewtrvListDockLeftSplitterSplitter1DockLeftPanelpanelRightDockFillTextBoxtxbNameTextTextBoxtxbLKindCodeTextTextBoxtxbDepCodeTextTextBoxtxbDepCodeReadOnlyTrueButtonbtnModifyText修改ButtonbtnAddBasText增加為第一級(jí)ButtonbtnAddEqlText增加為本級(jí)別ButtonbtnAddSubText增加為子級(jí)別ButtonbtnSaveText保存修改ButtonbtnDelText刪除為frmDepManage類添加如下兩個(gè)私有變量。PrivatedvListAsDataView'編碼位數(shù)PrivateiBitsAsInteger=12選擇【文件】|【添加新項(xiàng)】命令添加一個(gè)名為“TreNodeData.vb”的類文件,并將“TreNodeData.vb”中的內(nèi)容替換為以下內(nèi)容。'TreeNodeData類是用來保存與某個(gè)TreeView節(jié)點(diǎn)(TreeNode)相關(guān)的數(shù)據(jù)PublicClassTreeNodeData'以下是TreeNodeData六個(gè)共有變量PublicAbsIndexAsStringPublicItemIndexAsStringPublicItemLevelAsStringPublicParentIndexAsStringPublicKindCodeAsStringPublicDepCodeAsString'TreeNodeData類的構(gòu)造函數(shù)SubNew(ByValsAbsIndexAsString,_ByValsItemIndexAsString,_ByValsItemLevelAsString,_ByValsParentIndexAsString,_ByValsKindCodeAsString,_ByValsDepCodeAsString)AbsIndex=sAbsIndexItemIndex=sItemIndexItemLevel=sItemLevelParentIndex=sParentIndexKindCode=sKindCodeDepCode=sDepCodeEndSubEndClass為frmDepManage類添加私有函數(shù)InitTree。'InitTree是用遞歸方法初始化TreeView控件的節(jié)點(diǎn)PrivateSubInitTree(ByRefnodesAsTreeNodeCollection,_ByValsParentIndexAsString)TryDimtmpNodeAsTreeNodeDimabsIndexAsStringDimdvTempAsDataView=dvList。Table。DefaultView’選出數(shù)據(jù)源中ParentIndex為sParentIndex數(shù)據(jù)行DimdataRows()AsDataRow=_dvList。Table.Select("ParentIndex='"+sParentIndex+"'")’循環(huán)添加TreeNodeForEachdrAsDataRowIndataRows'獲得節(jié)點(diǎn)所需數(shù)據(jù)tmpNode=NewTreeNodetmpNode。Text=dr("類別”)’用TreeNode的Tag屬性保存與此節(jié)點(diǎn)相關(guān)的數(shù)據(jù)tmpNode.Tag=CType(NewTreeNodeData(dr("AbsIndex”),_dr(”ItemIndex”),dr(”ItemLevel”),_dr("ParentIndex”),dr("類別號(hào)”),dr("單位編號(hào)")),Object)absIndex=dr("AbsIndex")’添加節(jié)點(diǎn)nodes.Add(tmpNode)'遞歸調(diào)用InitTree(nodes(nodes。Count-1).Nodes,absIndex)NextCatchexAsExceptionMessageBox.Show("初始化TreeView失敗”)EndTryEndSub為窗體frmDepManage的Load事件添加事件響應(yīng)代碼.PrivateSubfrmDepManage_Load(ByValsenderAsObject,_ByValeAsSystem。EventArgs)HandlesMyBase。LoadDimdbAsDataBase=NewDataBaseDimstrSQLAsStringstrSQL="select*from組織機(jī)構(gòu)編碼表orderbyabsIndex"dvList=db.RunSelectSQL(strSQL)db。Dispose()'初始化TreeView控件的各個(gè)節(jié)點(diǎn)InitTree(trvList。Nodes,”—1")EndSub為按鈕btnModify的click事件添加事件響應(yīng)代碼.PrivateSubbtnModify_Click(ByValsenderAsSystem。Object,_ByValeAsSystem。EventArgs)HandlesbtnModify.Click'判斷修改條件IftxbLKindCode.Text.Trim().Length=0_OrtxbDepCode。Text.Trim。Length=0ThenExitSubEndIf’獲得當(dāng)前選中的節(jié)點(diǎn)DimtmpNodeAsTreeNode=trvList.SelectedNode’對(duì)編碼進(jìn)行驗(yàn)證DimsTmpAsString=txbLKindCode。Text。TrimtmpNode=tmpNode.ParentWhiletmpNodeIsNothing=FalsesTmp=CType(tmpNode。Tag,TreeNodeData).KindCode。Trim+sTmptmpNode=tmpNode。ParentEndWhileIfsTmp。Trim。Length>iBitsThen'編碼超長(zhǎng)刪除節(jié)點(diǎn)trvList。SelectedNode.Remove()MessageBox.Show(”編碼超長(zhǎng),已被刪除!")Else’編碼符合要求,修改相應(yīng)節(jié)點(diǎn)CType(trvList.SelectedNode。Tag,TreeNodeData).KindCode=_txbLKindCode。Text.Trim()CType(trvList。SelectedNode.Tag,TreeNodeData).DepCode=_sTmpMe.txbDepCode.Text=sTmpEndIfEndSub為按鈕btnAddBss的Click事件添加事件響應(yīng)代碼。PrivateSubbtnAddBas_Click(ByValsenderAsSystem。Object,_ByValeAsSystem.EventArgs)HandlesbtnAddBas。ClickIftxbLKindCode.Text.Trim().Length=0_OrtxbDepCode.Text。Trim.Length=0ThenExitSubEndIfDimtmpNodeAsTreeNodeIftxbLKindCode。Text.Trim.Length>iBitsThenMessageBox.Show(”編碼超長(zhǎng),已被刪除!")ElsetmpNode=NewTreeNode(Me.txbName。Text。Trim)trvList.Nodes.Add(tmpNode)'設(shè)置新增節(jié)點(diǎn)的相關(guān)數(shù)據(jù)tmpNode。Tag=_CType(NewTreeNodeData(”",tmpNode.Index。ToString,”0”,_”—1”,Me.txbLKindCode。Text。Trim,_Me。txbLKindCode。Text。Trim),Object)EndIfEndSub為按鈕btnAddEql的Click事件添加事件響應(yīng)代碼。PrivateSubbtnAddEql_Click(ByValsenderAsSystem.Object,_ByValeAsSystem。EventArgs)HandlesbtnAddEql。ClickIftxbLKindCode。Text。Trim().Length=0_OrtxbDepCode。Text.Trim.Length=0ThenExitSubEndIfDimtmpNodeAsTreeNode=trvList。SelectedNodeDimsTmpAsString=txbLKindCode。Text。TrimtmpNode=tmpNode。ParentWhiletmpNodeIsNothing=FalsesTmp=CType(tmpNode。Tag,TreeNodeData)。KindCode。Trim+sTmptmpNode=tmpNode。ParentEndWhileIfsTmp.Trim.Length〉iBitsThenMessageBox.Show(”編碼超長(zhǎng),已被刪除!")ElsetmpNode=NewTreeNode(Me。txbName。Text.Trim)trvList。SelectedNode。Parent.Nodes.Add(tmpNode)tmpNode.Tag=_CType(NewTreeNodeData(”",tmpNode。Index。ToString,”",_"",Me.txbLKindCode.Text.Trim,sTmp),Object)EndIfEndSub為按鈕btnAddSub的Click事件添加事件響應(yīng)代碼。PrivateSubbtnAddSub_Click(ByValsenderAsSystem.Object,_ByValeAsSystem.EventArgs)HandlesbtnAddSub。ClickIftxbLKindCode。Text。Trim()。Length=0_OrtxbDepCode。Text。Trim。Length=0ThenExitSubEndIfDimtmpNodeAsTreeNode=trvList.SelectedNodeDimsTmpAsStringsTmp=CType(tmpNode。Tag,TreeNodeData).KindCode.TrimsTmp+=txbLKindCode.Text。TrimtmpNode=tmpNode。ParentWhiletmpNodeIsNothing=FalsesTmp=CType(tmpNode。Tag,TreeNodeData).KindCode.Trim+sTmptmpNode=tmpNode。ParentEndWhileIfsTmp.Trim.Length>iBitsThenMessageBox.Show("編碼超長(zhǎng),已被刪除!”)ElsetmpNode=NewTreeNode(Me。txbName.Text。Trim)trvList。SelectedNode。Nodes。Add(tmpNode)tmpNode。Tag=_CType(NewTreeNodeData("”,tmpNode.Index.ToString,””,_”",Me.txbLKindCode。Text.Trim,sTmp),Object)EndIfEndSub為frmDepManage類添加私有函數(shù)SaveTreeView。'SaveTreeView是用遞歸方法保存TreeView控件的節(jié)點(diǎn)’要注意nodes,result,absIndex三個(gè)參數(shù)都是Byref而不是ByValPrivateSubSaveTreeView(ByRefnodesAsTreeNodeCollection,_ByRefresultAsString,ByRefabsIndexAsInteger)'判斷節(jié)點(diǎn)的Nodes集合是否為空Ifnodes。Count=0ThenReturnEndIfForEachtmpNodeAsTreeNodeInnodes'以下是要組合SQL語句result+=”insertinto組織機(jī)構(gòu)編碼表(類別,單位名稱,"result+=”AbsIndex,ItemIndex,ItemLevel,”result+=”ParentIndex,類別號(hào),"result+="單位編號(hào))values(’"+tmpNode.Text+”',’"result+=tmpNode。Text+"',"’AbsIndexabsIndex+=1'給treenode賦absIndexCType(tmpNode.Tag,TreeNodeData).AbsIndex=_absIndex.ToString.Trim()result+=absIndex.ToString.Trim+","’ItemIndexresult+=tmpNode。Index.ToString.Trim+","'ItemLevelIftmpNode.ParentIsNothingThenCType(tmpNode。Tag,TreeNodeData)。ItemLevel="0”result+=”0"Elseresult+=(CInt(CType(tmpNode。Parent。Tag,_TreeNodeData).ItemLevel)+1)。ToString.Trim'給treenode賦ItemLevelCType(tmpNode。Tag,TreeNodeData).ItemLevel=_CInt(CType(tmpNode。Parent.Tag,_TreeNodeData)。ItemLevel)+1EndIf'ParentIndexresult+=”,"IftmpNode.ParentIsNothingThenCType(tmpNode。Tag,TreeNodeData).ParentIndex=”-1"result+=”-1”Elseresult+=CType(tmpNode。Parent.Tag,_TreeNodeData)。AbsIndex.Trim'給treenode賦ParentIndexCType(tmpNode.Tag,TreeNodeData).ParentIndex=_CType(tmpNode。Parent.Tag,TreeNodeData)。AbsIndexEndIfresult+=”,’"result+=CType(tmpNode.Tag,_TreeNodeData)。KindCode。Trim+"',’"result+=CType(tmpNode。Tag,_TreeNodeData)。DepCode.Trim+"’)"’遞歸調(diào)用SaveTreeView(tmpNode.Nodes,result,absIndex)NextEndSub為按鈕btnSave的Click事件添加事件響應(yīng)代碼。PrivateSubbtnSave_Click(ByValsenderAsSystem。Object,_ByValeAsSystem。EventArgs)HandlesbtnSave.ClickDimresultAsString=””DimabsIndexAsInteger=-1DimdbAsDataBase=NewDataBase’執(zhí)行保存TreeView的SQL語句DimstrSQLAsString=”begintran"TrystrSQL+=”select*intozzjgtempfrom組織機(jī)構(gòu)編碼表"strSQL+=”go"strSQL+=”deletefrom組織機(jī)構(gòu)編碼表"db.RunDelOrInsSQL(strSQL)SaveTreeView(Me.trvList.Nodes,result,absIndex)db。RunDelOrInsSQL(result)strSQL=”update組織機(jī)構(gòu)編碼表set拼音編碼=b.拼音編碼,"strSQL+="單位地址=b.單位地址,單位號(hào)碼=b.單位號(hào)碼,”strSQL+="開戶銀行=b。開戶銀行,帳號(hào)=b。帳號(hào),開戶全稱=b。開戶全稱"strSQL+="from組織機(jī)構(gòu)編碼表asa,zzjgtempasb"strSQL+=”wherea.單位編號(hào)=b.單位編號(hào)"strSQL+=”droptablezzjgtemp"strSQL+=”commit"db.RunDelOrInsSQL(strSQL)CatchexAsExceptionMessageBox.Show("保存失敗,編碼重復(fù)或位數(shù)超長(zhǎng)!”)db。RunDelOrInsSQL(”rollback")EndTrydb.Dispose()EndSub為按鈕btnDel的Click事件添加事件響應(yīng)代碼.PrivateSubbtnDel_Click(ByValsenderAsSystem.Object,_ByValeAsSystem。EventArgs)HandlesbtnDel。ClickMe。trvList.SelectedNode.Remove()EndSub到此就完成了機(jī)構(gòu)設(shè)置及編碼的功能。46實(shí)現(xiàn)機(jī)構(gòu)詳細(xì)信息功能前面建立了機(jī)構(gòu)設(shè)置及編碼功能,用于設(shè)置機(jī)構(gòu)的層級(jí)關(guān)系,但該功能并沒有實(shí)現(xiàn)結(jié)構(gòu)其他信息的維護(hù)功能,如聯(lián)系、地址等。通過機(jī)構(gòu)詳細(xì)功能,可以維護(hù)組織機(jī)構(gòu)的其他信息。新建一個(gè)窗體,將其Name屬性改為“frmDepInfo”,并為其添加如圖8所示的控件。圖8機(jī)構(gòu)詳細(xì)信息窗體部分控件的屬性設(shè)置如表5所示。表5機(jī)構(gòu)詳細(xì)信息窗體控件屬性設(shè)置控件類型對(duì)象名屬性取值(說明)FromfrmDepInfoText機(jī)構(gòu)詳細(xì)信息DataGriddgdDepInfoDockFillDataGriddgdDepInfoCaptionVisiableFalseImageListImageList1Images請(qǐng)參考圖ToolBarToolBar1Buttons請(qǐng)參考圖ToolBarToolBar1ImagelistImagelist1從工具箱中拖動(dòng)一個(gè)SalDatadapter對(duì)象到窗體上,新建到hrmhook數(shù)據(jù)庫的連接.添加組織機(jī)構(gòu)編碼表并選擇組織機(jī)構(gòu)編碼表的字段:類別、拼音編碼、單位地址、單位號(hào)碼、開戶銀行、帳號(hào)、開戶全稱、單位編號(hào)。在SqlDataAdapter1對(duì)象的右邊,在彈出的快捷菜單中選擇【生成數(shù)據(jù)集】命令,在彈出的【生成數(shù)據(jù)集】對(duì)話框中單擊[確定]按鈕.為窗體frmDepInfo的Load事件添加事件響應(yīng)代碼。PrivateSubfrmDepInfo_Load(ByValsenderAsObject,_ByValeAsSystem。EventArgs)HandlesMyBase.LoadDimdtAsDataTabledt=DataSet11.Tables(”組織機(jī)構(gòu)編碼表")'定義一個(gè)DataGrid表樣式DimtsAsNewDataGridTableStyleDimaColumnTextColumnAsDataGridTextBoxColumnDimnumColsAsInteger=dt。Columns。CountDimiAsIntegerFori=0TonumCols-2aColumnTextColumn=NewDataGridTextBoxColumnaColumnTextColumn。MappingName=_dt。Columns(i)。ColumnNameIfi=0ThenaColumnTextColumn.HeaderText=”單位名稱"ElseaColumnTextColumn.HeaderText=_dt.Columns(i).ColumnNameEndIfaColumnTextColumn。NullText=”"ts。GridColumnStyles.Add(aColumnTextColumn)Nextts。AlternatingBackColor=Color.LightGrayts.AllowSorting=FalsedgdDepInfo。TableStyles。Add(ts)SqlConnection1.ConnectionString=DataBase.sConnSqlDataAdapter1.Fill(DataSet11,"組織機(jī)構(gòu)編碼表")'設(shè)置dgdDepInfo的數(shù)據(jù)源ts.MappingName=dt。TableNamedt。DefaultView。AllowDelete=Falsedt。DefaultView。AllowNew=FalsedgdDepInfo。DataSource=dt.DefaultViewEndSub為工具欄ToolBar的Click事件添加事件響應(yīng)代碼。PrivateSubToolBar1_ButtonClick(ByValsenderAsSystem。Object,_ByValeAsToolBarButtonClickEventArgs)_HandlesToolBar1。ButtonClickDimrowAsIntegerrow=dgdDepInfo。CurrentCell.RowNumberdgdDepInfo。CurrentCell=NewDataGridCell(row+1,0)Try'判斷DataSet11的數(shù)據(jù)是否有變化’即DataGrid控件上是否有數(shù)據(jù)更改IfDataSet11。HasChangesThen'通過SqlDataAdapter1更新數(shù)據(jù)庫數(shù)據(jù)SqlDataAdapter1.Update(DataSet11)DataSet11。Tables("組織機(jī)構(gòu)編碼表”)._DefaultView。RowFilter=””MessageBox。Show(”數(shù)據(jù)修改成功!")ElseMessageBox.Show(”無修改的數(shù)據(jù)!")EndIfCatchexAsEx

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論