亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

VB通用數據表格輸出程序的設計

2019-11-18 17:46:54
字體:
來源:轉載
供稿:網友
----做為一種簡捷、系統的Windows應用程序開發工具,VisualBasic5具有強大的數據處理能力,提供了多種數據訪問方法,可以方便地存取MicrosoftSQLServer、Oracle、XBase等多種數據庫,被廣泛應用于建立各種信息管理系統。但是,VB缺乏足夠的、符合中文習慣的數據表格輸出功能。雖然使用CrystalReport控件及CrystalReports程序可以輸出報表,但操作很麻煩,中文處理能力也不理想,特別是不能夠用來制作不確定內容的表格。筆者在用VB開發淮北市醫療保險信息管理系統時,需要對任意的查詢結果進行表格輸出,為此,編制了一個通用的數據表格輸出控件,能夠根據查詢的結果自動生成二維中文表格,并打印輸出,在此介紹給大家,共同探討。

一.VB5中的結果集
----VB5提供的數據訪問方法有數據詢問對象(DAO)、Data控件、遠程數據對象(RDO)、RemoteData控件(RDC)、ODBCAPI、VBSQL等,其中ODBCAPI比較復雜,開發、調試和支持非常困難;VBSQL是針對MicrosoftSQLServer的,這兩種方法使用的比較少,這里不做討論。比較常用的方法是DAO、Data控件、RDO、RDC,其中DAO和Data控件使用的結果集(又叫紀錄集)包含在Recordset對象中,RDO和RDC使用的結果集包含在rdoResultset對象中。通用表格輸出的實現方法就是根據任意的Recordset對象或rdoResultset對象自動生成表格并輸出。
二.表格的自動生成
----1.Recordset對象
----下面以Data控件為例,介紹Recordset對象的表格自動生成方法。

----假設有Data控件名稱為MyData,首先說明相關的內容及用法:

----(1)Data控件的結果集包含在它的Recordset對象中,引用方法為:MyData.Recordset。

----(2)Recordset對象的RecordCount屬性為結果集的行數,它決定了表格的長度,該屬性引用方法為:MyData.Recordset.RecordCount。

----(3)Recordset對象包含一個Fields集合,通過Fields集合的Count屬性可以得到結果集中字段的個數,用做表格的列數,該屬性引用方法為:MyData.Recordset.Fields.Count。

----(4)Fields集合包括結果集合全部Field對象,這些Field對象引用方法為:MyData.Recordset.Fields(i),其中i是該Field對象在中的位置序號,從0開始計數。

----(5)Field對象的Name屬性是該字段的名稱,用做表格對應列的名稱,引用方法為:MyData.Recordset.Fields(i).Name。

----(6)Field對象的Size屬性是該字段數據的最大尺寸,引用方法為:MyData.Recordset.Fields(i).Size。

----(7)Field對象的Type屬性是該字段數據的類型,引用方法為:MyData.Recordset.Fields(i).Type。

----用Field對象的Size和Type屬性可以計算出表格對應列的寬度。

----(8)Field對象的Value屬性是該字段的值,這是表格對應列的內容,引用方法為:MyData.Recordset.Fields(i).Value。

----以上引用在VB中都可有多種引用方法,這里使用的是比較明了的一種,便于說明問題。

----表格的自動生成可分為兩個步驟:

----第一步,根據結果集中各字段的Size和Type屬性,生成表格各對應列的寬度,用Format函數使用的格式字符串表示。

----下面的FunctiongetFmt()用來生成表格各列的格式字符串,調用時把Field對象的Type和Size屬性值分別賦給形式參數intType和logSize。

 實際上即是strDy()的元素個數

 PrivateSubDy()
 WithMyData.Recordset
 .MoveLast
 ReDimstrDy(.RecordCount 8) 
'需存放標題、表框等,所以加8
 ReDimFmt(.Fields.Count)
 Fori=0To.RecordCount 7
  strDy(i)=""    '初始置空
 Next
 Fori=0To.Fields.Count-1
Fmt(i)=getFmt(.Fields(i).Type,.Fields(i).Size)
'生成表格各列的格式字符串
  j=Len(.Fields(i).Name)
  Ifj >Len(Fmt(i))Then
   Fmt(i)=String$(Int((j/2) 0.5)*2,"@")
'標題(字段名)字多則增大列寬
  EndIf
Next
  str="┃"
  str0="┏"
  str1="┠"
str2="┗"  '設定表格為粗框細線,
可根據需要改變
 Fori=0To.Fields.Count-1
  Forj=1ToLen(Fmt(i))/2
   str0=str0&"━"
   str1=str1&"─"
   str2=str2&"━"
  Next
  If(i=.Fields.Count-1)Then
   str=str&Format(.Fields(i).Name,Fmt(i))&"┃"
  Else
   str=str&Format(.Fields(i).Name,Fmt(i))&"│"
  EndIf
  If(i=.Fields.Count-1)Then
   str0=str0&"┓"
   str1=str1&"┨"
   str2=str2&"┛"
  Else
   str0=str0&"┯"
   str1=str1&"┼"
   str2=str2&"┷"
  EndIf
 Next
 strDy(0)="表格標題"
 '通過在標題前增加空格可使標題居中
 strDy(1)=""
 strDy(2)=Format(Now,"打印日期:
yyyy年m月d日")
 strDy(3)=str0
 strDy(4)=str
 strDy(5)=str1
 intDc=6
 .MoveFirst
 DoWhileNot.EOF
 str="┃"
 Fori=0To.Fields.Count-1
   IfIsNull(.Fields(i).Value)Then  
'處理Null值
    Ifi=.Fields.Count-1Then
     str=str&Format("",Fmt(i))&"┃"
    Else
     str=str&Format("",Fmt(i))&"│"
    EndIf
   Else
    Ifi=.Fields.Count-1Then
     str=str&Format(Left$(.Fields(i).
Value,Len(Fmt(i))),Fmt(i))&"┃"
    Else
     str=str&Format(Left$(.Fields(i).
Value,Len(Fmt(i))),Fmt(i))&"│"
    EndIf
   EndIf
  Next
  strDy(intDc)=strDy(intDc)&str
  intDc=intDc 1
  .MoveNext
 Loop
 strDy(intDc)=str2
 EndWith
EndSub

----在實際編程中還要排除二進制數據字段,全角與半角字符的匹配調整,處理數據中出現的換行符、回車符、制表符,等等,限于篇幅,這里不于介紹。
----2.rdoResultset對象

----rdoResultset對象的表格自動生成方法與Recordset對象的方法相似,在處理過程中把Recordset對象的RecordCount屬性用rdoResultset對象的RowCount屬性替換,Fields集合用rdoColumns替換,Field對象用rdoColumn替換,其余相同。例如:

----引用Data控件MyData結果集中第三個字段的名稱用:MyData.Recordset.Fields(3).Name。

----引用RDC控件MyRDC相應字段的名稱用:MyRDC.Resultset.rdoColumns(3).Name。

三.表格的輸出
----表格的輸出包括二個部分,一是屏幕預覽,二是打印機輸出。屏幕預覽是把存放在數組中的表格通過在PictureBox控件上調用Print方法顯示出來而實現的。打印輸出是把同樣的內容通過Printer對象的Print方法實現的。下面例示打印機輸出的實現方法:
 Printer.Font.Name="黑體" 
   '設置標題

----屏幕預覽程序與打印機的輸出相同,只要把Printer對象換成PictureBox控件對象并使用相應的對象屬性及方法,同時,在編程中還要處理
分頁、紙張、打印設置、字體、出錯等等,限于篇幅,這里不一一介紹。在控件中實現了字體及其大小的設置、紙張的設置、自動分頁、自動順序號,任選列的匯總、選擇打印、多份打印等功能,感興趣的朋友可與本人聯系。
----該控件在中文Windows95、VB5下運行通過。->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一本一本久久a久久精品综合小说| 日韩av在线不卡| 国产精品久久一| 美女999久久久精品视频| 97免费中文视频在线观看| 一区二区三区久久精品| 成人久久久久久| 亚洲区一区二区| 另类图片亚洲另类| 中文字幕不卡在线视频极品| 亚洲免费精彩视频| 欧美刺激性大交免费视频| 日本中文字幕不卡免费| 精品久久久久久中文字幕大豆网| 国产精品免费久久久久久| 国产97色在线| 久久av红桃一区二区小说| 国产精品观看在线亚洲人成网| 成人免费自拍视频| 成人精品一区二区三区电影黑人| 国产精品主播视频| 中文字幕国内精品| 久久久成人av| 亚洲精品aⅴ中文字幕乱码| 亚洲欧美日韩图片| 91免费视频国产| 欧美成人精品激情在线观看| www.99久久热国产日韩欧美.com| 欧美精品激情blacked18| 日韩欧美国产一区二区| 亚洲精品国产成人| 国产精品中文在线| 91精品国产色综合| 国内精品一区二区三区| 欧美理论在线观看| 国产成人精品免费久久久久| www.亚洲男人天堂| 日韩中文字幕在线观看| 91精品国产自产在线观看永久| 91a在线视频| 国产精品一区二区三区在线播放| 精品国产一区av| 欧美在线观看网址综合| 国产91成人在在线播放| 亚洲综合视频1区| 91大神在线播放精品| 国产美女主播一区| 国产亚洲精品va在线观看| www.欧美精品一二三区| 欧美日韩在线视频一区| 欧美一级黄色网| 影音先锋欧美在线资源| 日韩二区三区在线| 亚洲精品美女久久久| 日韩av在线影视| 亚洲电影第1页| 国产精品电影网| 欧美亚洲视频一区二区| 久久精品国产96久久久香蕉| 久久精视频免费在线久久完整在线看| 色偷偷av一区二区三区乱| 成人精品福利视频| 精品久久久久久久久久久| 亚洲自拍高清视频网站| 2019亚洲男人天堂| 日韩精品中文字幕有码专区| 亚洲第一精品自拍| 日韩美女主播视频| 欧美精品久久久久| 91精品国产沙发| 亚洲最大av网站| 国产精品狠色婷| 一区二区三区四区在线观看视频| 亚洲一区二区三区四区在线播放| 精品一区二区三区四区| 日本精品中文字幕| 日韩二区三区在线| 日韩av中文字幕在线免费观看| 九九久久国产精品| 国产69精品久久久久9999| 国产精品极品尤物在线观看| 成人字幕网zmw| 亚洲三级免费看| 亚洲精品美女在线| 欧美成人精品影院| 中文日韩在线视频| 日韩亚洲成人av在线| 国产精品免费久久久久影院| 性欧美激情精品| 日韩电影中文字幕在线观看| 欧美xxxx18性欧美| 欧美高跟鞋交xxxxhd| 亚洲第一福利网站| 欧美大片va欧美在线播放| 在线国产精品视频| 亚洲第一福利视频| 日本精品中文字幕| 美女黄色丝袜一区| 亚洲欧美日韩视频一区| 国产在线观看精品| 在线中文字幕日韩| 黑人巨大精品欧美一区二区免费| 激情亚洲一区二区三区四区| 日产精品久久久一区二区福利| 91精品久久久久久久久久| 欧美激情a∨在线视频播放| 91九色视频在线| 日韩av片免费在线观看| 日本三级久久久| 国产精品第二页| 欧美日韩精品在线观看| 日韩最新av在线| 欧美另类在线播放| 日韩精品在线私人| 久久av资源网站| 久久久国产视频91| 久久精品国产久精国产一老狼| 亚洲最新视频在线| 国产一区二区三区在线观看网站| 黑人巨大精品欧美一区二区免费| 欧美在线视频a| 久久久久久网站| 国产99视频在线观看| 日韩欧美国产网站| 91免费欧美精品| 亚洲国产第一页| 91亚洲午夜在线| 亚洲奶大毛多的老太婆| 成人免费激情视频| 日韩动漫免费观看电视剧高清| wwwwwwww亚洲| 欧美亚洲成人xxx| 欧美在线视频在线播放完整版免费观看| 亚洲bt欧美bt日本bt| 欧美色另类天堂2015| 日韩中文字幕国产精品| 97久久精品人人澡人人爽缅北| 久久九九有精品国产23| 国产精品爽爽爽| 国产日产欧美a一级在线| 欧美日韩精品国产| 欧美电影免费在线观看| 亚洲欧美日韩直播| 欧美激情在线观看| 欧美成人h版在线观看| 精品欧美aⅴ在线网站| 日韩av影视在线| 欧美成人午夜免费视在线看片| 成人精品久久一区二区三区| 精品久久久久久久久久国产| 亚洲护士老师的毛茸茸最新章节| 美女扒开尿口让男人操亚洲视频网站| 欧美肥婆姓交大片| 日韩欧美精品在线观看| 日韩专区中文字幕| 97人人模人人爽人人喊中文字| 欧美日韩中文字幕在线| 亚洲女人天堂网| 精品人伦一区二区三区蜜桃网站| 97在线看福利| 亚洲欧洲国产一区| 久久久久亚洲精品国产| 久久成人精品视频| 精品日韩视频在线观看|