程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> VB通用數據表格輸出程序的設計

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

編輯:VB綜合教程
----做為一種簡捷、系統的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。
  
   PrivateFunctiongetFmt(intTypeAsInteger,
  logSizeAsLong)AsString
   DimiAsInteger
   getFmt=""  
   '返回的結果串初始置空
   SelectCaseintType
  CasedbBoolean
   getFmt=getFmt&"
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved