網絡數據庫的復制和同步(3)

發表于:2007-07-14來源:作者:點擊數: 標簽:
網絡 數據庫 的復制和同步(3) 3.property對象與Properties集合 Property對象用來描述一個DAO對象的內部屬性或用戶定義屬性,與DAO對象及Properties集合的關系為DAO對象包含Properties集合,Properties集合包含property對象。(其關系詳見 VB 幫助文件)
網絡數據庫的復制和同步(3)

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集合。

   在窗體上畫一個命令按鈕,然后編寫如下事件過程:

   Private Sub Command1_Click()

   Dim dbsnorthwind As Database

   Dim docloop As Document

   Dim prploop As Property

   Set dbsnorthwind = OpenDatabase("e:\f.mdb")

   With dbsnorthwind.Containers!tables

    Debug.Print "documents in " & .Name & "container"

    For Each docloop In .Documents

     Debug.Print " " & docloop.Name

    Next docloop

    With .Documents(0)

     Debug.Print "properties of" & .Name & "document"

     On Error Resume Next

     For Each prploop In .Properties

      Debug.Print " " & prploop.Name & "=" & prploop

     Next prploop

     On Error GoTo 0

    End With

   End With

   dbsnorthwind.Close

   End Sub

程序的前半部分與前面的例子相同,后半部分列出第一個Document對象(即Documents(0) 的 Properties集合。運行程序,單擊命令按鈕,即可在“立即”窗口中列出上述內容。

   用戶定義的屬性通過CreateProperty方法來定義,用該方法可以建立由用戶定義的Property對象(僅Microsoft Jet 工作區),用于Database,Document,Field,Index,QueryDef和TableDef對象。其格式為:

   set property=對象.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參數的取值

   常數   類型   常數   類型

   dbBigInt Big整型數 dbGUID GUID

   dbBinary 二進制 dbInteger 整型數

   dbBoolean 布爾值 dbLong 長整型數

   dbByte 字節 dbLongBinary 長二進制(OEL對象)

   dbChar 字符 dbMemo Memo

   dbCurrency 貨幣 dbNumeric 數值

   dbDate 日期/時間 dbsingle 單精度

   dbDecimal 十進制 dbText 文本

   dbDouble 雙精度 dbTime 時間

   dbFloat 浮點數 dbTimeStamp TimeStamp

   dbVarBinary VarBinary

設MyDB是一個Database對象變量,MyPro是一個Property對象變量,則可以用下面的程序建立Property對象:

   set MyPro=MyDB.createProperty()

   MyPro.Name="NewDefined"

   MyPro.Type=dbText

   MyPro.Value="這是一個用戶定義的屬性"

可以用下面的語句把新建立的屬性加到Properties集合中:

   MyDB.Properties.Append prpNew

   【例】編寫程序,建立用戶定義的Property對象,并把它加到Properties集合中。在窗體上畫一個命令按鈕,然后編寫如下的事件過程。

   Private Sub Command1_Click()

    Dim dbsnorthwind As Database

    Dim prpnew As Property

    Dim prploop As Property

    Set dbsnorthwind = OpenDatabase("e:\f.mdb")

    With dbsnorthwind

     ´建立并添加用戶定義的屬性

     Set prpnew = .CreateProperty()

     prpnew.Name = "userdefinednew"

     prpnew.Type = dbText

     prpnew.Value = "this is a user_definednew property."

     .Properties.Append prpnew

     ´列出當前數據庫的所有屬性

     Debug.Print "properties of " & .Name

     For Each prploop In .Properties

     With prploop

      Debug.Print " " & Name

      Debug.Print " type:" & .Type

      Debug.Print " inherited:" & .Inherited

     End With

     Next prploop

     End With

   End Sub

上述程序建立了一個名為userdefinednew的屬性,其類型為dbText,初值為“this is a user_definednew property?!边\行程序,單擊按鈕,將建立該屬性,并在立即窗口中顯示當前數據庫的所有屬性。(包括新建立的屬性)

(未完待續)

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97