|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
尽管DBaaS模式有缺点,但它还是适合某些客户群体,这为解决方案提供商提供了新的商机。鉴于云服务的增长,解决方案提供商除了拥抱这些技术还有什么选择呢?如果他们不这样做,他们就会冒着被竞争对手击败的风险。但他们不能只想到如何把DBaaS的利润率与企业内部系统相比较。不管是DAO仍是ADO都有两种从Recordset工具中查询纪录的办法:Find办法和Seek办法。在这两种办法中可让你指定前提举行查询与其响应的纪录,一样平常而言,在不异前提下,Seek办法供应了比Find办法更好的功能,由于Seek办法是基于索引的。由于这个缘故原由基础供应者必需撑持Recordset工具上的索引,能够用Supports(adSeek)办法断定基础供应者是不是撑持Seek,用Supports(adIndex)办法断定供应者是不是撑持索引。(比方,OLEDBProviderforMicrosoftJet撑持Seek和Index。),请将Seek办法和Index属性分离利用。假如Seek没有找到所需的行,将不会发生毛病,该即将被放在Recordset的开头处。实行此办法前,请先将Index属性设置为所需的索引。此办法只受服务器端游标撑持。假如Recordset工具的CursorLocation属性值为adUseClient,将不撑持Seek。只要当CommandTypeEnum值为adCmdTableDirect时翻开Recordset工具,才可使用此办法。用ADOFind办法
DAO包括了四个“Find”办法:FindFirst,FindLast,FindNext和FindPrevious.
DAO办法ADOFind办法
上面的一个例子树模了怎样用ADOFind办法查询纪录:
SubFindRecord(strDBPathAsString,_
strTableAsString,_
strCriteriaAsString,_
strDisplayFieldAsString)
Thisprocedurefindsarecordinthespecifiedtableby
usingthespecifiedcriteria.
Forexample,tousethisproceduretofindrecords
intheCustomerstableintheNorthwinddatabase
thathave"USA"intheCountryfield,youcan
usealineofcodelikethis:
FindRecord_
"c:ProgramFilesMicrosoftOfficeOfficeSamplesNorthwind.mdb",_
"Customers","Country=USA","CustomerID"
DimcnnAsADODB.Connection
DimrstAsADODB.Recordset
OpentheConnectionobject.
Setcnn=NewADODB.Connection
Withcnn
.Provider="Microsoft.Jet.OLEDB.4.0"
.OpenstrDBPath
EndWith
Setrst=NewADODB.Recordset
Withrst
Openthetablebyusingascrolling
Recordsetobject.
.OpenSource:=strTable,_
ActiveConnection:=cnn,_
CursorType:=adOpenKeyset,_
LockType:=adLockOptimistic
Findthefirstrecordthatmeetsthecriteria.
.FindCriteria:=strCriteria,SearchDirection:=adSearchForward
Makesurerecordwasfound(notatendoffile).
IfNot.EOFThen
Printthefirstrecordandallremaining
recordsthatmeetthecriteria.
DoWhileNot.EOF
Debug.Print.Fields(strDisplayField).Value
Skipthecurrentrecordandfindnextmatch.
.FindCriteria:=strCriteria,SkipRecords:=1
Loop
Else
MsgBox"Recordnotfound"
EndIf
ClosetheRecordsetobject.
.Close
EndWith
Closeconnectionanddestroyobjectvariables.
cnn.Close
Setrst=Nothing
Setcnn=Nothing
EndSub
比方,用用这个历程查询“罗期文商贸”示例数据库中“客户”表的“国度”即是USA的纪录,可使用上面的代码:
FindRecord“c:ProgramFilesMicrosoftOfficeOfficeSamplesNorthwind.mdb”,_
“Customers”,“Country=USA”,”CustomerID”
(译者注:假如你安装的是简体中文版要将响应的字段名改成中文)
用ADOSeek办法
由于ADOSeek办法利用Index,最好是在用这个办法之前指定一个索引,但是,假如你没有指定索引,Jetdatabaseengine将用主键。
假如你必要从多个字段中指定值做为搜刮前提,能够用VBA中的Array函数传送这些值到参数KeyValues中往。假如你只必要从一个字段中指定值做为搜刮前提,则不必要用Array函数传送。
象Find办法一样,你能够用BOF大概EOF属性测试是不是查询到纪录。
上面的一个例子显现了怎样用ADOSeek办法查询纪录:
SubSeekRecord(strDBPathAsString,_
strIndexAsString,_
strTableAsString,_
varKeyValuesAsVariant,_
strDisplayFieldAsString)
Thisprocedurefindsarecordbyusing
thespecifiedindexandkeyvalues.
Forexample,tousethePrimaryKeyindexto
findrecordsintheOrderDetailstableinthe
NorthwinddatabasewheretheOrderIDfieldis
10255andProductIDis16,andthendisplaythe
valueintheQuantityfield,youcanusealine
ofcodelikethis:
SeekRecord_
"c:ProgramFilesMicrosoftOfficeOfficeSamplesNorthwind.mdb",_
"PrimaryKey","OrderDetails",Array(10255,16),"Quantity"
DimcnnAsADODB.Connection
DimrstAsADODB.Recordset
OpentheConnectionobject.
Setcnn=NewADODB.Connection
Withcnn
.Provider="Microsoft.Jet.OLEDB.4.0"
.OpenstrDBPath
EndWith
Setrst=NewADODB.Recordset
Withrst
Selecttheindexusedtoorderthe
dataintherecordset.
.Index=strIndex
Openthetablebyusingascrolling
Recordsetobject.
.OpenSource:=strTable,_
ActiveConnection:=cnn,_
CursorType:=adOpenKeyset,_
LockType:=adLockOptimistic,_
Options:=adCmdTableDirect
FindtheorderwhereOrderId=10255and
ProductId=16.
.SeekKeyValues:=varKeyValues,SeekOption:=adSeekFirstEQ
Ifamatchisfound,printthevalueof
thespecifiedfield.
IfNot.EOFThen
Debug.Print.Fields(strDisplayField).Value
EndIf
ClosetheRecordsetobject.
.Close
EndWith
Closeconnectionanddestroyobjectvariables.
cnn.Close
Setrst=Nothing
Setcnn=Nothing
EndSub
比方,用主键索引查询“罗期文商贸”示例数据库中“定单明细”表的“定单编号”即是10255而且产物编号即是16的”数目”的值,可使用上面的代码:
SeekRecord“c:ProgramFilesMicrosoftOfficeOfficeSamplesNorthwind.mdb”,_
“PrimaryKey”,“OrderDetails”,Array(10255,16),”Quantity”
(译者注:假如你安装的是简体中文版要将示例中援用的响应的字段名改成中文)
由于在MySQL中有如此众多的额外功能可选,诸如存储引擎等,你可以选择最适合你公司的一个,或者尝试选用多个引擎。MySQL开始非常小巧,但是可以随着公司的成长而不断地变强大。 |
|