国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Excel、Access、VB的結(jié)合應(yīng)用

2019-11-18 17:49:15
字體:
供稿:網(wǎng)友
----微軟公司的Office系列辦公軟件相信已是眾所周知,其中Excel強(qiáng)大的統(tǒng)計(jì)制表功能、access功能完備的數(shù)據(jù)處理能力深受眾多用戶所喜愛。VisualBsaic更是微軟公司又一有力的產(chǎn)品,它簡單易學(xué),在Windows編程中的應(yīng)用十分廣泛。本文通過介紹數(shù)據(jù)處理及復(fù)雜表格的打印,來討論VB與Excel及Access的結(jié)合運(yùn)用。

----由于筆者所在的公司員工眾多,在進(jìn)行職工養(yǎng)老保險(xiǎn)繳費(fèi)的計(jì)算工作時(shí),若使用勞動(dòng)局編制的軟件(用Foxbase編寫),無論是在管理或維護(hù)方面均顯得力不從心。于是在公司領(lǐng)導(dǎo)的強(qiáng)烈要求下,決定由筆者構(gòu)思重新編制。基本思路是:1.將所有員工資料輸入Access進(jìn)行處理,以便于維護(hù)。2.在Excel中預(yù)先制成有表頭的空表(Access相對欠缺處理復(fù)雜表格的能力),對需要進(jìn)行金額匯總或其他運(yùn)算的單元格可直接輸入公式。3.在VB中編寫程序代碼,從Access中提取數(shù)據(jù)填入Excel對應(yīng)表格相應(yīng)的單元格,并輸出至打印機(jī)。

----部分窗體及源程序代碼如下:

----1.程序主模塊

----定義Excel、Access對象變量,顯示系統(tǒng)啟動(dòng)畫面,進(jìn)入系統(tǒng)主程序界面。強(qiáng)調(diào)一下,在編寫程序之前須加入對Excel及Access庫函數(shù)的引用,具體操作是:選擇菜單欄'工程'/'引用…',將'可使用的引用'列表框內(nèi)'MicrosoftAccess8.0ObjectLibrary'和'MicrosoftExcel8.0ObjectLibrary'兩項(xiàng)前的復(fù)選框標(biāo)為選中,按"確定"返回。

mdsMain.bas
'定義數(shù)據(jù)庫記錄集及Excel對象變量
PublicexAsNewExcel.application
PublicexwbookAsExcel.Workbook
PublicexsheetAsExcel.Worksheet
PublicmydatabaseAsDatabase
Publicmyrecordset1AsRecordset
[定義記錄集]
……
……
PublicOptAsInteger'報(bào)表選項(xiàng)
[Opt為frmSelreport.frm返回值]
PublicisYNAsBoolean
SubMain()
LoadfrmSplash
frmSplash.Show
frmSplash.Label2.Caption=
"系統(tǒng)正在加載Access數(shù)據(jù)庫..."
  Setmydatabase=OpenDatabase("c:/sbda/sbda.mdb")
Setmyrecordset1=mydatabase.OpenRecordset
("報(bào)表打印(一)")
[此處對記錄集賦值]
  ……
  ……
frmSplash.Label2.Caption=
"系統(tǒng)正在加載Excel電子表格..."
Setex=CreateObject("excel.application")
Setexwbook=ex.Workbooks.Open("c:/sbda/sbda.xls")
LoadFrmInput   '將數(shù)據(jù)輸入窗體加載到內(nèi)存中
UnloadfrmSplash
LoadFrmMain    '將主程序界面加載到內(nèi)存中
EndSub

----2.報(bào)表打印模塊
----其中ExcelDoForVB1()是一子程序,由    SelectCaSEOpt  '選擇需要打印的表格
      Case1
        nflag=1
        myrecordset1.MoveFirst
        myrecordset1.MovePrevious
        PageN=1
        DoWhilenflag=1
          CallExcelDoForVB1 
'數(shù)據(jù)填入Excel單元格打印
          PageN=PageN 1
        Loop
      Case2
      ……
      ……
    EndSelect
  Else
    IfFlag=2Then  '
當(dāng)打印對話框中選"頁"時(shí)
      IfEndPage-BeginPage=0Then
        ifNum=0
      Else
        IfEndPage-BeginPage>0Then
          ifNum=1
        Else
          ifNum=2
        EndIf
      EndIf
      SelectCaseifNum
        Case2
          ExitSub
        Case0
          SelectCaseOpt  '
選擇需要打印的表格
            Case1
myrecordset1.MoveFirst
n=(BeginPage-1)*
(49-4 1)-1
myrecordset1.Moven
PageN=BeginPage
CallExcelDoForVB1
 '數(shù)據(jù)填入Excel單元格并打印
            Case2
            ……
            ……
            EndSelect
        Case1
          SelectCaseOpt   
'選擇需要打印的表格
            Case1
myrecordset1.MoveFirst
n=(BeginPage-1)*
(49-4 1)-1
myrecordset1.Moven
PageN=BeginPage
FornBtoE=BeginPageToEndPage
  CallExcelDoForVB1 
'填入Excel單元格并打印
  PageN=PageN 1
NextnBtoE
            Case2
            ……
            ……
            EndSelect
      EndSelect
    EndIf
  EndIf
  FrmMain.Visible=True
  ExitSub
errhandle:
  FrmPrint.Visible=False
FrmMain.Visible=True
EndSub

----注意,下段僅通過ExcelDoForVB1()對"報(bào)表(一)"的處理,來說明數(shù)據(jù)填入Excel并打印的整個(gè)過程。

SubExcelDoForVB1()     '打印報(bào)表(一)
  FrmPrint.Visible=True
  Setexsheet=exwbook.Worksheets("sheet1")
  ex.Sheets("Sheet1").Select
  ex.Range("A4:U49").Select
  ex.Selection.ClearContents
  ex.Range("A4").Select
  bar1.Min=0      
  bar1.Max=45     
  FornRow=4To49
  bar1.Value=nRow-4  '進(jìn)度顯示欄進(jìn)程
    myrecordset1.MoveNext
    Ifmyrecordset1.EOFThen
      nflag=0
      ExitFor
    EndIf
    FornCol=1To21
      exsheet.Cells(nRow,nCol)=
myrecordset1.Fields(nCol-1)
    NextnCol
  NextnRow
  exsheet.Cells(52,21)="第" CStr(PageN) "頁"
  FrmPrint.Visible=False
  bar1.Value=0
ActiveWindow.SelectedSheets.PrintOutCopies:=NumCopies
EndSub

----雖然本文針對的是大多數(shù)已熟練掌握數(shù)據(jù)庫技術(shù),且精通編程之道的朋友們。但筆者認(rèn)為仍有必要提一提將數(shù)據(jù)輸入Access的過程,因?yàn)榫幊鰜淼能浖嗍敲嫦蚋黝惼胀ㄓ脩簦瑢λ麄儊碚f最要緊的是好用,而其間的一系列關(guān)聯(lián)并不想深究。所以設(shè)計(jì)一個(gè)好的輸入界面十分有必要,在設(shè)計(jì)時(shí)可以運(yùn)用VB提供的Data控件,當(dāng)然若是考慮性能的話還可以用代碼直接操縱數(shù)據(jù)。關(guān)于如何使用Data控件訪問數(shù)據(jù)庫,在VisualBasic的聯(lián)機(jī)手冊(Onlinebook)中有很詳細(xì)的說明,此處不再贅述。
----文中的所有程序在VisualBsaic5.0中文專業(yè)版及Office97中文版中調(diào)試通過。->


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 镶黄旗| 兴宁市| 从化市| 青神县| 墨玉县| 晋江市| 安化县| 沐川县| 遂平县| 昌都县| 南宁市| 同仁县| 南皮县| 新郑市| 余庆县| 新宾| 沂南县| 当涂县| 通辽市| 贵州省| 罗平县| 乳山市| 鄂托克旗| 隆子县| 顺平县| 平阴县| 灵台县| 德惠市| 清新县| 宁陕县| 云霄县| 钟山县| 德阳市| 日喀则市| 靖边县| 宜城市| 惠东县| 赫章县| 平泉县| 苏尼特左旗| 万载县|