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

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

VBCOM基礎講座之類的測試

2019-11-18 17:54:36
字體:
來源:轉載
供稿:網友
現在就來測試前面創建的類。

  按F5運行程序;在彈出的屬性對話框中,選中"WaitforComponentstoStart"(啟動工程時等待創建部件),然后按[OK]按鈕;
-align="right">->->->
  這時,類就會被激活,其他程序就可使用它的功能。

  再次運行VisualBasic另一個實例;

  創建一個新的"StandardEXE"工程;

  選擇"'
  瀏覽對話框中可引用的列表項,可以發現一些額外的
組件。

  選中"Northwind"列表項;

  Northwind就是前面創建的ActiveX工程。

  單擊[OK]按鈕;

  現在添加一些代碼來使用上述工程:

  在Form1表單中添加一個命令按鈕;為命令按鈕添加下列代碼:

->  DimTestAsCustomers
  SetTest=NewCustomers
  MsgBoxTest.CustomerID
  SetTest=Nothing->

  該代碼首先創建一個新的Customers對象,然后顯示CustomerID信息,最后將Test對象置為Nothing,并關閉它。

  按F5鍵運行測試程序;

  需要說明的是,當運行時出現"invalidreference"錯誤提示時,肯定哪些地方有問題。這時可按下面步驟重新來一次:

  (1)在測試工程中去掉Northwind引用;

  (2)重新啟動Northwind工程;

  (3)在測試工程中添加Northwind引用,再運行!

  單擊表單中的命令按鈕;

  這時運行時可能需要幾秒鐘,畢竟還要做一些如數據庫連接等工作。但是,除了一開始的停留外,后面的調用就快得多了。程序將顯示包含"ALFKI"的消息對話框。

  關閉測試程序。

  現在,我們來看看程序背后究竟發生什么。

  將插入符移動到MsgBoxTest.CustomerID這條語句上;按F9;

  該語句顯示為紅色,用來標記一個斷點。當代碼運行時,它會停留在這里。按F8將單步運行此語句,并移動到下一句代碼上。

  按F5再次運行測試程序;

  單擊命令按鈕;

  流程將停留在MsgBox這條命令上。

  按F8,慢慢單步執行各條語句;

  將會看到系統在兩個VisualBasic中來回切換,顯示出不同屬性的處理過程。

  結束后,關閉測試程序。

  下面再對前面的工程進行測試。這一次,我們不僅獲取CustomerID的值,而且還設置這個值。

  將命令按鈕的代碼改為:

->  DimTestAsCustomers
  SetTest=NewCustomers
  Test.CustomerID="KARLY"
  Test.Update
  MsgBoxTest.CustomerID
  SetTest=Nothing->

  該代碼首先設置"CustomerID"字段,然后更新記錄集,最后顯示出CustomerID屬性,其結果應該是設置的"KARLY"。

  假如愿意,仍然可以按F9高亮顯示"Test.CustomerID="這條語句,然后按F8單步運行來查看其工作情況。

  至此,我們已經成功地創建并測試一個簡單的基于數據庫的類。但是,還沒有對customerID的字符串長度作測試,如果其長度超過5個字符,看看會發生什么?

下一步,我們將擴充并改進這個數據庫類。

  首先添加類的幾個特征:其他的屬性、一些方法甚至一兩個事件。其相應的代碼如下:

->  DimWithEventsrsAsRecordset
  PublicEventRecordsetMove()
  PrivateSubClass_Initialize()
   Setrs=NewRecordset
   rs.ActiveConnection="Provider=Microsoft."&_"Jet.OLEDB.4.0;DataSource=C:/ProgramFiles/"&_"MicrosoftVisualStudio/VB98/Nwind.mdb;"&_"PersistSecurityInfo=False"
   rs.Open"select*fromcustomers",,adOpenKeyset,adLockOptimistic
  EndSub

  PrivateSubClass_Terminate()
   rs.Close
   Setrs=Nothing
  EndSub

  PublicPropertyGetCustomerID()AsString
   CustomerID=rs("CustomerID")
  EndProperty

  PublicPropertyLetCustomerID(NewValueAsString)
   'IfthelengthofNewValueisgreaterthanfive
   IfLen(NewValue)>5Then
    '...thenraiseanerrortotheprogram
    'usingthisclass,byrunning
    'Err.RaisevbObjectError OurErrorNumber
    Err.RaisevbObjectError 1,"CustomerID",_"CustomerIDcanonlybeuptofive"&_"characterslong!"

   Else
    '...otherwise,changethefieldvalue
    rs("CustomerID")=NewValue
   EndIf
  EndProperty
  PublicPropertyGetCompanyName()AsVariant
   CompanyName=rs("CompanyName")
  EndProperty

  PublicPropertyLetCompanyName(ByValNewValueAsVariant)
   rs("CompanyName")=NewValue
  EndProperty

  PublicPropertyGetContactName()AsVariant
   ContactName=rs("ContactName")
  EndProperty

  PublicPropertyLetContactName(ByValNewValueAsVariant)
    rs("ContactName")=NewValue
  EndProperty

  PublicPropertyGetContactTitle()AsVariant
   ContactTitle=rs("ContactTitle")
  EndProperty

  PublicPropertyLetContactTitle(ByValNewValueAsVariant)
   rs("ContactTitle")=NewValue
  EndProperty

  PublicPropertyGetAddress()AsVariant
   Address=rs("Address")
  EndProperty

  PublicPropertyLetAddress(ByValNewValueAsVariant)
   rs("Address")=NewValue
  EndProperty

  PublicPropertyGetCity()AsVariant
   City=rs("City")
  EndProperty

  PublicPropertyLetCity(ByValNewValueAsVariant)
   rs("City")=NewValue
  EndProperty

  PublicPropertyGetRegion()AsVariant
    Region=rs("Region")
  EndProperty

  PublicPropertyLetRegion(ByValNewValueAsVariant)
   rs("Region")=NewValue
  EndProperty

  PublicPropertyGetPostalCode()AsVariant
   PostalCode=rs("PostalCode")
  EndProperty

  PublicPropertyLetPostalCode(ByValNewValueAsVariant)
   rs("PostalCode")=NewValue
  EndProperty

  PublicPropertyGetCountry()AsVariant
   Country=rs("Country")
  EndProperty

  PublicPropertyLetCountry(ByValNewValueAsVariant)
   rs("Country")=NewValue
  EndProperty

  PublicPropertyGetPhone()AsVariant
  Phone=rs("Phone")
  EndProperty

  PublicPropertyLetPhone(ByValNewValueAsVariant)
   rs("Phone")=NewValue
  EndProperty

  PublicPropertyGetFax()AsVariant
   Fax=rs("Fax")
  EndProperty

  PublicPropertyLetFax(ByValNewValueAsVariant)
   rs("Fax")=NewValue
  EndProperty

  PublicSubAddNew()
   rs.AddNew
  EndSub

  PublicSubUpdate()
   rs.Update
  EndSub

  PublicSubCancelUpdate()
   Ifrs.EditMode=adEditInProgressOr_rs.EditMode=adEditAddThen
    rs.CancelUpdate
   EndIf
  EndSub
  PublicSubMoveNext()
   rs.MoveNext
  EndSub

  PublicSubMovePrevious()
   rs.MovePrevious
  EndSub

  PublicSubMoveFirst()
   rs.MoveFirst
  EndSub

  PublicSubMoveLast()
   rs.MoveLast
  EndSub

  PublicFunctionFindByCustomerID(CustomerIDAsString)AsBoolean
   'UsestheFindmethodtolocatecustomers
   'withamatchingCustomerID.
   'ReturnsTruevalueiscustomer(s)found
   DimvarBookmarkAsVariant
   rs.MoveFirst
   rs.Find("CustomerID='"&CustomerID&"'")
   Ifrs.EOF=TrueThen
     FindByCustomerID=False
     rs.Bookmark=varBookmark
   Else
     FindByCustomerID=True
   EndIf
  EndFunction

  PublicPropertyGetEOF()AsBoolean
  'Exampleofaread-onlyproperty
  NoPropertyLetshere
  EOF=rs.EOF
  EndProperty
  PublicPropertyGetBOF()AsBoolean
   'Anotherexampleofaread-onlyproperty
   BOF=rs.BOF
  EndProperty
  PrivateSubrs_MoveComplete(ByValadReasonAsADODB.EventReasonEnum,_
       ByValpErrorAsADODB.Error,adStatusAsADODB.EventStatusEnum,_
       ByValpRecordsetAsADODB.Recordset)

   'ReactstotherecordsetMoveComplete
   'method-raiseseventwitheachmove
   RaiseEventRecordsetMove
  EndSub->

  需要說明的是:迄今為止,我們僅僅是在一個類中添加代碼。當然,也可以選擇"Project"->"AddClass"菜單來向工程添加多個類,而且還可利用"collections"使這些類工作在一起。但是在這里,我們仍然想用一個類來處理一個數據表。

  將上述類的代碼復制并粘貼到自己的類中,下一節將討論該程序的編譯。
->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情一区二区三区久久久| 久久中文字幕在线| 成人xvideos免费视频| 中文字幕在线亚洲| 亚洲欧美中文另类| 自拍亚洲一区欧美另类| 亚洲国产精品久久久久秋霞蜜臀| 欧美精品手机在线| 91国语精品自产拍在线观看性色| 国产综合视频在线观看| 亚洲aⅴ日韩av电影在线观看| 欧美日韩在线视频一区| 奇米四色中文综合久久| 97视频com| 欧美极度另类性三渗透| 美女扒开尿口让男人操亚洲视频网站| 中文字幕一精品亚洲无线一区| 色综合亚洲精品激情狠狠| www.久久色.com| 精品女同一区二区三区在线播放| 亚洲国产精品va在线看黑人| 一二美女精品欧洲| 这里只有精品视频在线| 国产成人免费91av在线| 亚洲风情亚aⅴ在线发布| 国产成人在线一区| 国产成人精品视频| 久久久www成人免费精品| 伦伦影院午夜日韩欧美限制| 欧美日韩在线观看视频| 欧美国产日韩中文字幕在线| 91精品在线观看视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美色videos| 久久久久久久香蕉网| 精品呦交小u女在线| 91网站在线看| 奇米成人av国产一区二区三区| 亚洲天堂网站在线观看视频| 国产精品成人国产乱一区| 粗暴蹂躏中文一区二区三区| 91精品国产综合久久久久久蜜臀| 国产精品av在线| 一区二区三区天堂av| 久久精品国产免费观看| 久久精品美女视频网站| 久久亚洲精品毛片| 欧美性高潮在线| 亚洲欧洲一区二区三区在线观看| 久久综合免费视频| 国产精品人成电影在线观看| 成人激情在线观看| 久久久精品免费视频| 国产精品高潮呻吟久久av野狼| 亚洲精品电影在线观看| 欧美日韩国产色视频| 国产精品视频成人| 日韩在线视频观看| 97在线日本国产| 日韩精品中文在线观看| 欧美日韩一区二区精品| 欧美色另类天堂2015| 色综合久久天天综线观看| 亚洲精品白浆高清久久久久久| 国产日本欧美视频| 97在线观看视频国产| 欧美日韩国产二区| 欧美精品电影免费在线观看| 亚洲精品成人免费| 日韩中文字幕在线| 亚洲老板91色精品久久| 日本久久久久久久| 欧美色videos| 伊人久久久久久久久久久| 91国内免费在线视频| 久久久999国产精品| 亚洲高清一区二| 亚洲精品中文字幕av| 欧美在线视频a| 亚洲香蕉成人av网站在线观看| 在线观看日韩av| 国产精品成人在线| 亚洲电影免费观看高清完整版在线观看| 伊人久久大香线蕉av一区二区| 97欧美精品一区二区三区| 久久久久久久色| 91精品国产高清久久久久久91| 中文字幕亚洲在线| 91精品国产色综合久久不卡98| 欧美激情一区二区三区久久久| 在线观看亚洲视频| 富二代精品短视频| 不卡在线观看电视剧完整版| 日韩精品中文在线观看| 永久免费精品影视网站| 欧美一级视频在线观看| 欧美激情精品久久久| 日韩精品欧美激情| 午夜精品一区二区三区在线播放| 日本国产一区二区三区| 精品久久久久久中文字幕一区奶水| 国产成人精品在线观看| 久久久国产精品免费| 奇米一区二区三区四区久久| 国产精品视频免费在线| 亚洲综合最新在线| 毛片精品免费在线观看| 日本aⅴ大伊香蕉精品视频| 2021国产精品视频| 久久成人国产精品| 日韩国产欧美精品一区二区三区| 日韩中文字幕在线免费观看| 国产精品人成电影| 国产婷婷97碰碰久久人人蜜臀| 久久久精品欧美| 欧美久久精品一级黑人c片| 久久精品成人欧美大片| 色综合久久久888| 亚洲国产精彩中文乱码av| 欧美放荡办公室videos4k| 久久人人爽人人爽爽久久| 亚洲日本中文字幕免费在线不卡| 91亚洲午夜在线| 久久久亚洲国产| 国产精品久久久久久亚洲调教| 国产香蕉精品视频一区二区三区| 国产精品久久久久久久久久久久久| 亚洲精品在线视频| 欧美丰满少妇xxxx| 成人xxxxx| 欧美一区深夜视频| 国产精品人人做人人爽| 国产精品毛片a∨一区二区三区|国| 精品久久在线播放| 97精品国产aⅴ7777| 97超级碰碰人国产在线观看| 日韩中文在线中文网三级| 狠狠色狠色综合曰曰| 97在线视频国产| 久久理论片午夜琪琪电影网| 国产精品露脸av在线| 欧美巨猛xxxx猛交黑人97人| 欧美老少配视频| 日韩欧美aⅴ综合网站发布| 午夜精品视频在线| 国外成人在线直播| 欧美视频在线看| 国产在线观看精品| 国内外成人免费激情在线视频| 亚洲欧美日韩天堂一区二区| 欧美精品videosex极品1| 精品国产一区久久久| 日韩av高清不卡| 亚洲国内高清视频| 久久久久久91| 日韩av在线网页| 成人亲热视频网站| 久久久亚洲天堂| 欧洲中文字幕国产精品| 性欧美激情精品| 国内精品伊人久久| 91精品免费久久久久久久久| 亚洲成色999久久网站| 亚洲999一在线观看www|