2013年9月26日 星期四

開啟DB的參數說明

rs.open Source ,Connection, CursorType, LockType, CommandType
rs.open strsql1 ,conn , 3 , 3 , 3
------------------------------------------------------------------------------------
 RecordSet物件在Open時,可含5個引數分別為
Source:可以是資料來源名稱DSN或SQL的Statements
Connection物件:用Set Conn = Server.CreateObject("ADODB.Connection") 並且Open的物件
CursorType:資料集指標的型態
 0:唯讀,指標只能向前移動,在不對資料集有做操作需求時,速度最快,但只能用GetRows獲得資料!為預設值。
 1:可讀寫、指標可自由移動、但別的RecordSet有更新時,無法引用
 2:等於引數1的功能,但別的RecordSet有更新時,可以引用
 3:可讀寫、指標可自由移動、與資料庫隔絕,所有開啟後發生的變更均不可引用
※有些書籍或文件所列的常數值為1-4有誤,應為0-3,這要注意

LockType:鎖定作業的方式
 1:唯讀、故不可任何寫入動作。
 2:會在資料更新時鎖住,其他RecordSet的操作會被拒絕,資料安全度最高。(悲觀鎖定)
 3:和2相反。(樂觀鎖定)
 4:在更新資料時不鎖定,但暫時不存入資料庫,而要下UpdateBatch命令時,才會真正寫入資料庫。(批次樂觀鎖定)

CommandType:命令的種類
 0:表示命令是SQL字串
 1:資料表
 2:預儲程序(就是事先在SQLServer寫好並編輯完成的SQL命令,效能會較好)
 3:其他
----------------------------------------------------------------------------------------------
recordset屬性
屬性  功能簡述
absolutepage 目前的絕對資料頁位置
absluteposition 目前的絕對資料位置
activeconnection 與command and connection物件主動連接
bof  資料區塊的開頭邊界
bookmark  提供資料指標位置的書籤功能
cachesize  recordser內資料所暫存的計憶體大小
cursorlocation 控制資料指標的型態為伺服端或客戶端
cursortype 控制如何由伺服端資料庫取回資料
eof  資料區塊的結尾邊界
editmode  控制目前資料的處理狀態
filter  控制欲顯示或隱藏的資料內容
locktype  控制資料更新的模式
maxrecords 允許由伺服端取回的最大資料數目
pagecount  資料頁總數
pagesize  控制每一資料頁內的資料筆數
recordcount 由伺服端取回的資料項目總數
source  資料請求訊息
status  最近一筆資料處理後的狀態或訊息


pagecount = ( recordcount + pagesize - 1 ) / pagesize


CACHSIZE
資料型態:為一整數資料型態。
屬性功能:用來決定客戶端每次由資料庫伺服端取回的資料大小數。

cursorlocation
資料型態:123的整數值
屬性功能:控制伺服端資料庫回傳資料所處理的位置
1 aduseclient
 下載DBSERVER回應的資料於客戶端快取做資料存取的處理。  
2 aduseserver
 維持DBSERVER回應的資料於伺服端做資料庫存取的處理  
3 aduseclientbatch
 由資料庫回應的資料可動態回傳至客戶端、切斷連線做處理、再連線做資料更新。

cursortype
資料型態:1234的整數值
屬性功能:控制資料更新後過濾下載的資料型式
1 adopenforwardonly
 此項屬性為預設值,且這項設定擁有最快的回應時間;資料筆數僅可以使用MoveNext OR GetRows方法向後索取資料,而暫存在bookmark裡頭的資料無法再次被獲得。
2 adopenkeyset
 除了在資料庫中加入新的資料,其他方式的存取都會呈現於各個使用者recordset物件上,意即在一客戶端上更改的資料其他使用者立即可顯現出來。這時recordset物件內資料無論是向前或向後索取均可以完全的被控制,且暫存在bookmark裡頭的資料可以再次拿出來使用。
3 adopendaynamic
 所有資料庫的操作動作都會立即反應的各個客戶端使用者上。這時recordset物件內資料無論是向前或向後索取均可以完全的被控制,且暫存在bookmark裡頭的資料可以再次拿出來使用。
4 adopenstatic
 由資料庫伺服器所回應的資料已經與資料庫隔絕開來,因此在資料庫上所有更新的資料均不會同時呈現於不同的使用者端上。這時recordset物件內資料無論是向前或向後索取均可以完全的被控制,但暫存在bookmark裡頭的資料可能無法再次取用。

editmode
資料型態:012的整數值
屬性功能:用來顯示資料資料的處理狀態
0 adeditnone
 該資料未被處理更改過。
1 adeditinprogress
 目前的資料正在被處理,有可能有些資料已經被更改過。
2 adeditadd
 該資料項是使用addnew方法所宣告的新資料項,但是該資料尚未回傳至資料庫端。

locktype
資料型態:1234的整數值
屬性功能:控制對資料庫更新資料時的鎖住機制
1 adlockreadonly
 recordset物件是以唯讀模式開啟,故不允許資料更新、插入或刪除的動作。
2 adlockpessimistic
 資料在更新時鎖住其他所有動作,這是最安全的鎖住機制。
3 adlockoptimistic
 資料在更新時並未鎖住其他使用者的動作,仍然可以做資料更新、插入或刪隱的動作。
4 adlockbatchoptimistic
 資料在更新時並未鎖住其他使用者的動作,且資料處理位置必須為aduseclientbatch模式才允許做資料更新插入或刪除的動作。


status
屬性功能:表示目前資料的狀態旗標
0 adrecok
 該筆資料項動作正確
1 adrecnew
 該筆是新加入的資料,但仍未加入資料庫中
2 adrecmodified
 該筆資料已經被修改,但還未上傳至資料庫
4 adrecdeleted
 該筆資料已經被刪除了
8 adrecunmodified
 該筆資料尚未被修改過
16 adrecinvalid
 無法獲得資料故更新資料庫失敗
64 adrecmultiplechanges
 更新資料庫失敗,因必須透過多重資料項編修
128 adrecpendingchanges
 更新資料庫失敗,因該資料必須倚靠其他項待改變的資料項
256 adreccanceled
 由於放棄資料庫連線或動作導致資料磁更新失敗
1024 adreccantrelease
 無法獲得資料庫鎖型式導致資料庫更新失敗
2048 adrecconcurrencyviolation
 由於資料庫鎖型式為adlockoptimistic,導致嘗試更新資料庫時導致未知的錯誤
4096 adrecintegrityviolation
 由於該筆資料違背現行的資料庫規則或限制導致更新資料庫失敗
8192 adrecmaxchangesexceeded
 由於過多筆資料要更新或加入導致資料庫更新失敗
16384 adrecobjectopen
 由於其他的recordset物件導致資料更新錯誤
32768 adrecoutofmemory
 由於伺服端記憶體溢導致資料庫更新錯誤
65536 adrecpermissiondenied
 由於使用者權力不足導致資料庫更新失敗
131072 adrecschemaviolation
 該筆資料違背資料庫結構導致更新失敗
262144 adrecdbdeleted
 該筆資料已被刪除導致資料庫更新失敗


recordset方法
addnew  加入一筆新的資料項
  rs.addnew
cancelbatch 取消備份上傳模式的資料更新動作
  rs.cancelbatch
cancelupdate 取消資料更新的動作
  rs.cancelupdate
clone  建立一個相等的recordset物件
  set cloners=rs.clone
close  關閉目前的recordset物件
  rs.close
delete  刪除目前位置指標的資料項
  rs.delete (adaffectcurrent|adaffectgroup)
getrows  取得多筆資料項
  set valuesarrey=rs.getrows (count,start,fields)
move  移動到指定的資料項指標位置
  rs.move count,start
movenext  下一筆
  rs.movenext
moveprevious 上一筆
  rs.moveprevious
movefirst  第一筆
  rs.movefirst
movelast  最後一筆
  rs.movelast
nextrecordset 移動到多重資料請求時取得的另外一個recordset物件
  set nextrs=rs.nextrecordset (affected)
open  執行向資料庫資料請求的動作
  rs.open source,connection,cursor,lock,type
requery  重複執行資料庫請求的動作
  recordset.requery
resync  與資料庫伺器進行資料同步的模式
  rs.resynce (adaffectcurrent|adaffectgroup_adaffectall)
supports  允許目前recordset物件支援的功能
  ifsupport=rs.supports (option)
update  更新目前的資料至資料庫伺服器
  rs.update fields,values
updatebatch 在備份上傳模式下進行資料上傳更新的動作
  rs.updatebatch (adaffectcurrent|adaffectgroup|adaffectall)


//adaffectcurrent 只對目前指標位置
//adaffectgroup 所有匹配於filter屬性的資料項
//adaffectall 對所有rs省件內的資料