程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 復本操作的對象、屬性和方法(2)--網絡數據庫的復制和同步(3)

復本操作的對象、屬性和方法(2)--網絡數據庫的復制和同步(3)

編輯:VB綜合教程
3.property對象與Properties集合
  
  Property對象用來描述一個DAO對象的內部屬性或用戶定義屬性,與DAO對象及Properties集合的關系為DAO對象包含Properties集合,Properties集合包含property對象。(其關系詳見VB幫助文件)
  
  除Connection和Error對象外,每個DAO對象都含有一個property集合,在該集合中有與相應的DAO對象的內部屬性一致的Property對象。同時,用戶可以定義Property對象並將其加入某些下列DAO對象的Properties集合:
  ·Database,Index,QueryDef和TableDef對象
  ·TableDef對象和QueryDef對象的Fields集合中的Field對象
  Property有4個預定義的屬性:
  ·Name屬性:是一個字符串,屬性的唯一標識。
  ·Type屬性:是一個整型數(Integer),用來指定屬性的數據類型。
  ·Value屬性:是一個包含屬性設置的Variant類型的值。
  ·Inherited屬性:是一個Boolean值,用來指示屬性是否從另一個對象繼承而來。
  Property對象既有預定義的屬性,也有用戶定義的屬性,在引用時,其格式是不一樣的。頂定義屬性的引用格式為:
  對象.屬性
  而用戶定義的屬性必須采用下面的引用格式:
  對象.Properties.(“屬性”)
  
  【例】編寫程序,列出Tables容器中的Documents集合,然後列出集合中的第一個Document對象的Properties集合。
  
  在窗體上畫一個命令按鈕,然後編寫如下事件過程:
  
  PrivateSubCommand1_Click()
  DimdbsnorthwindAsDatabase
  DimdocloopAsDocument
  DimprploopAsProperty
  Setdbsnorthwind=OpenDatabase("e:f.mdb")
  Withdbsnorthwind.Containers!tables
  Debug.Print"documentsin"&.Name&"container"
  ForEachdocloopIn.Documents
  Debug.Print""&docloop.Name
  Nextdocloop
  With.Documents(0)
  Debug.Print"propertiesof"&.Name&"document"
  OnErrorResumeNext
  ForEachprploopIn.Properties
  Debug.Print""&prploop.Name&"="&prploop
  Nextprploop
  OnErrorGoTo0
  EndWith
  EndWith
  dbsnorthwind.Close
  EndSub
  
  程序的前半部分與前面的例子相同,後半部分列出第一個Document對象(即Documents(0)的Properties集合。運行程序,單擊命令按鈕,即可在“立即”窗口中列出上述內容。
  
  用戶定義的屬性通過CreateProperty方法來定義,用該方法可以建立由用戶定義的Property對象(僅MicrosoftJet工作區),用於Database,Document,Field,Index,QueryDef和TableDef對象。其格式為:
  
  setproperty=對象.CreateProperty(name,type,value,DDL)
  
  各參數的含義如下:
  
  ·property:對象變量,要建立的Property對象。
  ·Object:對象變量,可以是Database,Field,Index,QueryDef和TableDef對象,可以對這些對象建立Property對象。
  ·name:可選。variant類型(字符串子型),唯一地命名新的Property對象。
  ·type:可選。常數,定義新Property對象的類型。
  ·value:可選。variant類型,指定屬性的初值。
  ·DDL:可選。Variant類型(Boolean子型),用來指示該屬性是否是一個DDl對象,缺省值為False。如果DDL為True,則不能刪除這個property對象(除非得到dbsecWriteDef的允許)。
  
  說明:
  
  1.)只能在一個永久對象的Property集合中建立用戶定義的Property對象。在用CreateProperty方法建立Property對象時,如果省略了一個或多個可選參數,則可在向一個集合追加新的對象之前,用賦值語句設置或重新設置相應的屬性。在向集合中追加新的對象之後,可以改變其屬性設置的一部分(不是全部)。
  
  2.)如果name參數指的是該集合中已經存在的對象成員,則當用Append方法追加時,將會出現錯誤。
  
  3.)為了從集合中刪除一個由用戶定義的屬性對象,可以用集合的Delete方法來實現。該方法只能刪除用戶定義的對象,不能刪除預定義屬性。
  
  4.)如果省略了DDL參數,則缺省為False(即非DDL)。在這種情況下,沒有出現相應的DDL屬性,如果需要將一個Property對象由DDL變為DDL,則必須先刪除,然後再重新建立。
  
  5.)CreateProperty方法中的type參數是一個符號常量,它是Property對象的設置值或返回值,其可能的取值見表3
  
  type參數的取值
  
  常數類型常數類型
  dbBigIntBig整型數dbGUIDGUID
  dbBinary二進制dbInteger整型數
  dbBoolean布爾值dbLong長整型數
  dbByte字節dbLongBinary長二進制(OEL對象)
  dbChar字符dbMemoMemo
  dbCurrency貨幣dbNumeric數值
  dbDate日期/時間dbsingle單精度
  dbDecimal十進制dbText文本
  dbDouble雙精度dbTime時間
  dbFloat浮點數dbTimeStampTimeStamp
  dbVarBinaryVarBinary
  
  (表3)
  
  設MyDB是一個Database對象變量,MyPro是一個Property對象變量,則可以用下面的程序建立Property對象:
  
  setMyPro=MyDB.createProperty()
  MyPro.Name="NewDefined"
  MyPro.Type=dbText
  MyPro.Value="這是一個用戶定義的屬性"
  
  可以用下面的語句把新建立的屬性加到Properties集合中:
  
  MyDB.Properties.AppendprpNew
  
  【例】編寫程序,建立用戶定義的Property對象,並把它加到Properties集合中。在窗體上畫一個命令按鈕,然後編寫如下的事件過程。
  
  PrivateSubCommand1_Click()
  DimdbsnorthwindAsDatabase
  DimprpnewAsProperty
  DimprploopAsProperty
  Setdbsnorthwind=OpenDatabase("e:f.mdb")
  Withdbsnorthwind
  
  '建立並添加用戶定義的屬性
  
  Setprpnew=.CreateProperty()
  prpnew.Name="userdefinednew"
  prpnew.Type=dbText
  prpnew.Value="thisisauser_definednewproperty."
  .Properties.Appendprpnew
  
  '列出當前數據庫的所有屬性
  
  Debug.Print"propertiesof"&.Name
  ForEachprploopIn.Properties
  Withprploop
  Debug.Print""&Name
  Debug.Print"type:"&.Type
  Debug.Print"inherited:"&.Inherited
  EndWith
  Nextprploop
  EndWith
  EndSub
  
  上述程序建立了一個名為userdefinednew的屬性,其類型為dbText,初值為“thisisauser_definednewproperty。”運行程序,單擊按鈕,將建立該屬性,並在立即窗口中顯示當前數據庫的所有屬性。(包括新建立的屬性)->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved