Web/ASP & ASP.NET2009. 4. 10. 18:44

< 출처 : korea.internet.com, 지은이 : 최현진 >

Move 메서드

Move 메서드는 Recordset 개체의 현재 레코드 위치를 이동시키며, 구문은 다음과 같다.


   Recordset.Move NumRecords, Start


매개변수는 다음과 같다.


매개변수 설명
NumRecords 현재 레코드 위치를 이동시킬 레코드의 개수를 지정하는 식이며, 데이터 형식은 Signed Long이다.
Start 선택사항, Bookmark로 평가되는 식이며, 데이터 형식은 String 또는 Variant이다.


매개변수 Start는 다음에 나열된 BookmarkEnum 값들 중 하나를 사용할 수도 있다.


상수 설명
adBookmarkCurrent 기본값, 현재 레코드에서 시작한다.
adBookmarkFirst 첫째 레코드에서 시작한다.
adBookmarkLast 마지막 레코드에서 시작한다.


Move 메서드는 모든 Recordset 개체에 대해서 지원된다.

NumRecords 인수가 0 보다 크면 현재 레코드 위치는 앞(Recordset 개체의 끝 부분)으로 이동한다.
NumRecords 인수가 0 보다 작으면 현재 레코드 위치는 뒤(Recordset 개체의 처음 부분)으로 이동한다.

이 메서드 호출이 현재 레코드 위치를 첫째 레코드의 이전으로 이동시키면 ADO는 현재 레코드를 Recordset 개체(BOF가 True)의 첫째 레코드 이전으로 설정한다. Recordset 개체의 BOF 속성이 True로 설정된 상태에서 이전으로 이동시키면 오류가 발생한다.

이 메서드 호출이 현재 레코드 위치를 마지막 레코드의 이후로 이동시키면 ADO는 현재 레코드를 Recordset 개체(EOF가 True)의 마지막 레코드 이후로 설정한다. Recordset 개체의 EOF 속성이 True로 설정된 상태에서 이후로 이동시키면 오류가 발생한다.

Empty Recordset 개체에서 Move 메서드를 호출하면 오류가 발생한다.

Start 인수를 전달하면 Recordset 개체가 Bookmark를 지원하는 경우 Bookmark가 있는 레코드에 상대적으로 이동된다. 이 인수를 지정하지 않으면 현재 레코드에 상대적으로 이동한다.

CacheSize 속성을 사용하여 Provider가 레코드를 지역적으로 캐시할 경우, 현재 레코드 위치를 캐시된 레코드의 현재 그룹 밖으로 이동시키는 NumRecords 인수를 전달하는 것은 ADO가 새 레코드 그룹을 대상 레코드에서부터 시작하여 검색하게 한다. CacheSize 속성은 새로 검색된 그룹의 크기를 결정하며, 대상 레코드는 검색된 첫째 레코드이다.

[예제]
다음 예제는 Pubs 데이터베이스의 Employee 테이블에 대한 Recordset 개체를 생성하고 Move 메서드를 사용해서 현재 레코드의 위치를 이동시키는 예이다.

Private Sub cmdMove_Click()
  Dim adoRs As ADODB.Recordset
  Dim strConn As String

  strConn = "Provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User Id=sa;Password=;"

  Set adoRs = New ADODB.Recordset
  adoRs.Open "SELECT fName, lName, hire_date FROM Employee ORDER BY lName", strConn, , , adCmdText

  adoRs.Move 10

  Debug.Print adoRs(0)

  adoRs.Close
  Set adoRs = Nothing
End Sub


MoveFirst, MoveLast, MoveNext, MovePrevious 메서드

MoveFirst, MoveLast, MoveNext, MovePrevious 메서드는 Recordset 개체에서 첫째 레코드, 마지막 레코드, 다음 레코드, 이전 레코드로 이동한 뒤에 해당 레코드를 현재 레코드로 지정하며, 구문은 다음과 같다.


   Recordset.{MoveFirst | MoveLast | MoveNext | MovePrevious}


MoveFirst 메서드는 현재 레코드의 위치를 Recordset 개체의 첫째 레코드로 이동한다.

MoveLast 메서드는 현재 레코드의 위치를 Recordset 개체의 마지막 레코드로 이동한다. Recordset 개체는 Bookmark 또는 Backword Cursor 이동을 지원해야 하며, 그렇지 않을 경우에는 오류가 발생한다.

MoveNext 메서드는 현재 레코드의 위치를 바로 다음 레코드로 이동한다. Recordset 개체는 Bookmark 또는 Backword Cursor 이동을 지원해야 하며, 그렇지 않을 경우에는 오류가 발생한다. 현재 레코드가 Recordset 개체의 마지막 레코드인 상태에서 MoveNext 메서드를 호출하면 ADO는 현재 레코드를 Recordset 개체(EOF가 True)의 마지막 레코드 이후로 설정한다. Recordset 개체의 EOF 속성이 True로 설정된 경우 MoveNext 메서드를 사용하면 오류가 발생한다.

MovePrevious 메서는 현재 레코드의 위치를 바로 이전 레코드로 이동한다. Recordset 개체는 Bookmark 또는 Backword Cursor 이동을 지원해야 하며, 그렇지 않을 경우에는 오류가 발생한다. 현재 레코드가 Recordset 개체의 첫째 레코드인 상태에서 MovePrevious 메서드를 호출하면 ADO는 현재 레코드를 Recordset 개체(BOF가 True)의 첫째 레코드의 이전으로 설정한다. Recordset 개체의 BOF 속성이 True로 설정된 경우 MovePrevious 메서드를 사용하면 오류가 발생한다.

Forward-Only인 Recordset 개체에서 Forward와 Backward를 모두 지원하려면, 레코드 캐시를 생성하는 Cache 속성을 사용해서 Move 메서드로 Backward Cursor 이동을 지원하도록 할 수 있다. 캐시된 레코드는 메모리에 저장되기 때문에 필요 이상의 레코드를 캐시하는 것은 좋지 않다. Forward-Only Recordset 개체에서 MoveFirst 메서드를 호출할 수 있으며, 이 메서드를 호출하면 Recordset 개체를 생성하는 명령을 Provider가 다시 실행하는 경우도 있다.

[예제]
다음 예제는 Pubs 데이터베이스의 Authors 테이블에 대한 Recordset 개체를 생성하고 MoveFirst, MoveNext, MovePrevious, MoveLast 메서드를 사용해서 현재 레코드의 위치를 이동시키는 예이다.

Private Sub cmdMoveFirst_Click()
  Dim adoRs As ADODB.Recordset
  Dim strConn As String

  strConn = "Provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User Id=sa;Password=;"

  Set adoRs = New ADODB.Recordset
  adoRs.CursorType = adOpenStatic
  adoRs.CursorLocation = adUseClient
  adoRs.Open "authors", strConn, , , adCmdTable

  adoRs.MoveFirst
  Debug.Print adoRs(0)

  adoRs.MoveNext
  Debug.Print adoRs(0)

  adoRs.MovePrevious
  Debug.Print adoRs(0)

  adoRs.MoveLast
  Debug.Print adoRs(0)

  adoRs.Close
  Set adoRs = Nothing
End Sub


NextRecordser 메서드

NextRecordset 메서드는 다중 Recordset 개체에서 다음 Recordset 개체를 반환하는 메서드이며, 구문은 다음과 같다.


   Set Recrodset2 = Recordset1.NextRecordset(RecordsAffected)


이 메서드는 Recordset 개체를 반환하며, 위 구문에서 Recordset1 개체와 Recordset2 개체에 동일한 Recordset 개체를 사용하거나 서로 다른 개체를 사용할 수 있다.

RecordsAffected 매개변수는 선택사항이며, Provider가 현재 작업에 영향을 받는 레코드의 개수를 이 변수에 반환한다. 이 매개변수의 데이터 형식은 Long이다. 이 매개변수는 작업에 영향을 받은 레코드의 개수만 반환하며, Recordset 개체를 생성하는데 사용된 Select 문으로부터 레코드의 개수를 반환하지는 않는다.

NextRecordset 메서드를 사용해서 복합 명령문에서 다음 명령의 결과를 반환하거나 다수의 값을 반환하는 저장 프로시저의 결과를 반환한다. "Select * from Table1;Select * from Table2"와 같은 복합 명령문을 기반으로 하는 Recordset 개체를 Command 개체에서 Execute 메서드를 사용하거나 Recordset 개체에서 Open 메서드를 사용해서 열면 ADO는 첫째 명령만 실행하고 결과를 Recordset 개체에 반환한다. 복합 명령문에서 다음 명령의 결과를 접근하려면 NextRecordset 메서드를 호출해야 한다.

추가 결과가 있고 복합문을 포함하는 Recordset 개체가 프로세스 경계를 따라 마샬링되지 않는 한 NextRecordset 메서드는 계속 Recordset 개체를 반환한다. 행 반환 명령이 레코드를 반환하지 않으면 반환된 Recordset 개체는 비어 있는 것이다. BOF와 EOF 속성이 모두 True인지 확인하여 이런 경우를 테스트 할 수 있다. 행을 반환하지 않는 명령이 성공적으로 실행되면 반환된 Recordset 개체는 닫히고 Recordset 개체에서 State 속성을 테스트하여 이 개체의 상태를 검증할 수 있다. 결과가 더 이상 없으면 Recroset 개체는 Nothing으로 설정된다.

Remote Data Service 사용시 클라이언트 Recordset 개체에서는 NextRecordset 메서드를 사용할 수 없다.

즉시 업데이트 모드에서 편집하는 동안 이 메서드를 호출하면 오류가 발생한다. 먼저 Update 메서드나 CancelUpdate 메서드를 호출해야 한다.

Parameters 컬렉션을 채우거나 원래의 Open 또는 Execute 메서드 호출로 배열을 전달하여 복합문에서 두개 이상의 명령에 대해 매개변수를 전달하려면 컬렉션이나 배열에서 매개변수의 순서는 일련의 명령들에서 각각의 해당 명령 순서와 동일해야 한다. 그리고 출력 매개변수의 값을 읽기 전에 모든 결과 읽기를 완료해야 한다.

이 메서드를 호출할 때 ADO는 문장에서 바로 다음 명령만 실행한다. 전체 명령문을 단계별로 실행하기 전에 Recordset 개체를 명시적으로 닫으면 ADO는 나머지 명령을 실행하지 않는다.

[예제]
다음 예제는 Pubs 데이터베이스의 Authors, Stores, Jobs 테이블에 대한 Multi Recordset 개체를 생성하고 Multi Recordset 개체를 검색하는 예이다.

Private Sub cmdNextRecordset_Click()
  Dim adoRs As ADODB.Recordset
  Dim strConn As String
  Dim intCount As Integer

  strConn = "Provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User Id=sa;Password=;"

  Set adoRs = New ADODB.Recordset
  adoRs.Open "SELECT * FROM authors; " & _
    "SELECT * FROM stores; " & _
    "SELECT * FROM jobs", strConn, , , adCmdText

  intCount = 1
  Do Until adoRs Is Nothing
    Debug.Print intCount & " 번째 Recordset 개체의 내용"

    Do While Not adoRs.EOF
      Debug.Print , adoRs.Fields(0), adoRs.Fields(1)

      adoRs.MoveNext
    Loop

    Set adoRs = adoRs.NextRecordset
    intCount = intCount + 1
  Loop
End Sub

비주얼 베이직에서 폼이 로드될 때 채워야할 콤보 박스 또는 리스트 박스와 같은 폼의 초기화에 필요한 데이터를 데이터베이스로부터 가져올 때 이 메서드를 사용하면 응용 프로그램의 성능을 높일 수 있다. 폼의 초기화에 필요한 정보를 데이터베이스로부터 각각 가져오면 데이터베이스에 여러 번 접속해야 하지만, 다중 Recordset 개체를 사용하면 한번에 여러 테이블의 정보를 가져올 수 있기 때문에 응용 프로그램의 속도를 높일 수 있다.


Open 메서드

Open 메서드는 커서를 연다. 즉 Recordset 개체를 여는 메서드이며, 구문은 다음과 같다.


   Recordset.Open Source, ActiveConnection, CursorType, LockType, Options


매개변수는 다음과 같다.


매개변수 설명
Source 선택사항, 유효한 Command 개체 변수 이름, SQL 문, 테이블 이름, 저장 프로시저 호출 또는 지속적인(Persisted) Recordset 개체의 파일 이름으로 평가되는 Variant 이다.
ActiveConnection 선택사항, 유효한 Connection 개체 변수 이름으로 평가되는 Variant 또는 ConnectionString 매개변수를 포함하는 String 이다.
CursorType 선택사항, Provider가 Recordset 개체를 열 때 사용할 커서 형식을 결정하는 CursorTypeEnum 값이다. 이 매개변수에 대한 자세한 내용은 Recordset 개체의 CursorType 속성을 참조한다.
LockType 선택사항, Provider가 Recordset 개체를 열 때 사용할 Lock 형식을 결정하는 LockTypeEnum 값이며, 기본값은 adLockReadOnly(1)이다. 이 매개변수에 대한 자세한 내용은 Recordset 개채의 LockType 속성을 참조한다.
Options Source 인수로 Command 개체가 아닌 다른 것이 제시되었을 때 Provider가 Source 인수를 어떻게 평가해야 하는지를 나타내는 Long 값 또는 Recodrset 개체가 이전에 저장한 파일로부터 복원되야함을 나타낸다. 이 매개변수에 대한 자세한 내용은 Command 개체의 CommandType 속성을 참조한다.


CursorType 매개변수 값은 다음 상수들 중 하나가 될 수 있다.


상수 설명
adOpenForwardOnly 0 기본값, Forward-Only 형식 커서를 연다.
adOpenKeyset 1 Keyset 형식의 커서를 연다.
adOpenDynamic 2 Dynamic 형식의 커서를 연다.
adOpenStatic 3 Static 형식의 커서를 연다.


LockType 매개변수 값은 다음 상수들 중 하나가 될 수 있다.


상수 설명
adLockReadOnly 1 기본값, 읽기 전용 - 데이터를 변경할 수 없다.
adLockPessimistic 2 Pessimistic Lock, Provider는 레코드가 성공적으로 편집되도록 하기 위해 편집을 시작하면 그 즉시 데이터 원본의 레코드를 Locking 한다.
adLockOptimistic 3 Optimistics Lock, Provider는 Update 메서드를 호출할 경우에만 레코드를 Locking하는 Optimistics Lock을 사용한다.
adLockBatchOptimistic 4 BatchOptimistics Lock, 즉시 업데이트 모드와 대조되는 일괄 업데이트 모드에 필요한 값이다.


Options 매개변수는 다음 상수들 중 하나가 될 수 있다.


상수 설명
adCmdText Provider가 Source를 명령의 텍스트 정의로 평가해야 함을 나타낸다.
adCmdTable Source에 명명된 테이블에서 모든 행을 반환하기 위해서 ADO가 SQL 질의를 생성해야 함을 나타낸다.
adCmdTableDirect Provider가 Source에 명명된 테이블에서 모든 행을 반환해야 함을 나타낸다.
adCmdStoredProc Provider가 Source를 저장 프로시저로 평가해야 함을 나타낸다.
adCmdUnknown Source 인수에 있는 명령 형식을 알 수 없음을 나타낸다.
adCmdFile Persisted Recordset 개체가 Source에 명명된 파일로부터 복원되야함을 나타낸다.
adAsyncExecute Source가 비동기적으로 실행되야함을 나타낸다.
adAsyncFetch CacheSize 속성에 지정된 초기 양을 가져온 뒤에 나머지 행들을 비동기적으로 가져와야 한다는 것을 나타낸다.
adAsyncFetchNonBlocking 레코드를 가져오는 동안 주 스레드가 중단되지 않는다는 것을 나타낸다. 요청한 행을 가져오지 않았다면, 현재 행은 자동으로 파일의 끝으로 이동한다.


Command 개체 변수, SQL 문, 저장 프로시저, 테이블 이름 또는 완전한 파일 경로 이름 중 하나를 사용하여 데이터 원본을 지정하려면 옵션 매개 변수인 Source 인수를 사용한다. Source가 파일 경로 이름인 경우, 이 이름은 전체 경로("c:\dir'file.rst"), 상대 경로("..file.rst") 또는 URL (http://files/file.rst)이 될 수 있다.

Recordset 개체의 속성에 직접 대응되는 Source, CursorType, LockType 인수와 속성의 관계는 다음과 같습니다.
   - Recordset 개체를 열기 전까지는 속성에 대해 읽기와 쓰기가 모두 가능하다.
   - Open 메서드를 실행할 때 해당 인수가 전달되지 않으면 속성 설정값이 사용된다. 인수가 전달되면 그 인수는 해당 속성 설정값을 대체하고 속성 설정값이 인수 값으로 변경된다.
   - Recordset 개체를 연 다음 이들 속성은 읽기 전용이 된다.

Source 속성이 유효한 Command 개체로 설정된 Recordset 개체는 Recordset 개체가 열리지 않더라도 ActiveConnection 속성은 읽기 전용이다.

Source 인수에 Command 개체를 전달하고 ActiveConnection 인수도 전달하면 오류가 발생한다. Command 개체의 ActiveConnection 속성은 이미 유효한 Connection 개체 또는 ConnectionString으로 설정되어 있어야 한다.

Source 인수에 Command 개체가 아닌 다른 것이 전달될 경우 Options 인수를 사용해서 Source 인수의 평가를 최적화할 수 있다. Options 인수가 정의되지 않으면 ADO가 Provider를 호출하여 인수가 SQL문인지, 저장 프로시저인지 또는 테이블 이름인지 여부를 결정해야하기 때문에 성능이 저하될 수 있다. 사용하고 있는 Source 형식이 무엇인지 알고 있다면 Options 인수를 설정하여 ADO가 직접 관련 코드로 분기할 수 있도록 알려주어야 한다. 만약 지정한 Options 인수가 Source 형식과 일치하지 않으면 오류가 발생한다.

Recordset 개체와 연관된 Connection 개체가 없을 경우 Options 인수의 기본값은 adCmdTable이다. 일반적으로 Persisted Recodrset 개체가 여기에 해당한다.

데이터 원본이 레코드를 반환하지 않을 경우 Provider는 BOF와 EFO 속성을 모두 True로 설정하며 현재 레코드의 위치는 정의되지 않는다. CursorType이 허용한다면 새 레코드를 비어있는 이 Recodrset 개체에 추가할 수 있다.

열린 Recordset 개체에 대한 작업이 끝났다면 Close 메서드를 사용해서 연관된 시스템 자원을 모두 해제한다. 개체를 닫아도 그 개체가 메모리에서 제거되지는 않기 때문에 속성 설정 값을 변경할 수 있으며, 나중에 Open 메서드를 사용해서 그 개체를 다시 열 수도 있다. 개체를 메모리에서 완전히 제거하려면 개체 변수를 Nothing으로 설정한다.

CursorLocation 속성을 adUseClient로 설정했다면 두 가지 방법 중 하나를 사용해서 행을 비동기적으로 검색할 수 있으며, Options를 adAsyncFetch로 설정하는 방법이 좋다. 다른 방법으로 Properties 컬렉션에 들어 있는 Asynchronous Rowset Processing Dynamic 속성을 사용할 수 있지만, Oprions 매개변수를 adAsyncFetch로 설정하지 않으면 관련있는 검색된 이벤트를 상실할 수 있다.

[예제]
다음 예제는 Pubs 데이터베이스의 Authors 테이블에 대한 Recordset 개체를 Open 메서드를 사용해서 여는 예제이다.

Private Sub cmdOpen_Click()
  Dim adoCn As ADODB.Connection
  Dim adoRs As ADODB.Recordset
  Dim strConn As String

  Set adoCn = New ADODB.Connection
  strConn = "Provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User Id=sa;Password=;"
  adoCn.Open strConn

  Set adoRs = New ADODB.Recordset
  adoRs.CursorType = adOpenKeyset
  adoRs.LockType = adLockOptimistic
  adoRs.Open "Authors", adoCn, , , adCmdTable

  adoRs.Close
  Set adoRs = Nothing

  adoCn.Close
  Set adoCn = Nothing
End Sub


Requery 메서드

Requery 메서드는 Recordset 개체를 생성한 질의를 다시 실행하여 Recodrset 개체에 있는 데이터를 갱신하며, 구문은 다음과 같다.


   Recordset.Requery Options


매개변수 Options는 선택사항이며, 이 작업에 영향을 주는 옵션을 나타내는 Bit Mask이다. 이 매개변수가 adSayncExecute로 설정되면 이 작업은 비동기적으로 실행되면 마지막에 RecordsetChangeComplete 이벤트가 발생한다.

명령을 재실행하고 데이터를 다시 검색하는 방법을 사용해서 데이터 원본에 있는 Recodrset 개체의 전체 내용을 새로 고치려면 이 메서드를 사용한다. 이 메서드를 호출하는 것은 Close와 Open 메서드를 차례로 호출하는 것과 같다.

Recordset 개체가 열려 있는 동안에 커서의 특징을 정의하는 속성(CursorType, LockType, MaxRecords 등)은 읽기 전용이다. 그러므로 Requery 메서드는 현재 커서만 새로 고칠 수 있다. 커서 속성을 변경하고 그 결과를 보려면 Close 메서드를 사용해서 속성에 대해 읽기와 쓰기를 모두 할 수 있도록 만들어야 한다. 그런 다음에 속성 설정 값을 변경하고 Open 메서드를 호출하여 커서를 다시 연다.

[예제]
다음 예제는 Pubs 데이터베이스의 Authors 테이블에 대한 Recordset 개체를 생성한 다음, Connection 개체의 Execute 메서드를 사용해서 레코드를 변경하고 Recordset 개체의 Requery 메서드를 사용해서 변경된 내용을 다시 조회하는 예이다.

Private Sub cmdRequery_Click()
  Dim adoCn As ADODB.Connection
  Dim adoRs As ADODB.Recordset
  Dim strConn As String

  Set adoCn = New ADODB.Connection
  strConn = "Provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User Id=sa;Password=;"
   adoCn.Open strConn

  Set adoRs = New ADODB.Recordset
  adoRs.CursorType = adOpenKeyset
  adoRs.LockType = adLockOptimistic
  adoRs.Open "Authors", adoCn, , , adCmdTable

  Debug.Print adoRs!au_id & " - " & adoRs!au_fname

  adoCn.Execute "Update Authors Set au_fname = 'Chris' Where au_id = '409-56-7008' "

  adoRs.Requery
  Debug.Print adoRs!au_id & " - " & adoRs!au_fname

  adoRs.Close
  Set adoRs = Nothing

  adoCn.Close
  Set adoCn = Nothing
End Sub


Resync 메서드

Resync 메서드는 기본 데이터베이스로부터 현재 Recordset 개체의 데이터를 갱신하며, 구문은 다음과 같다.


   Recordset.Resync AffectRecords, ResyncValues


매개변수는 다음과 같다.


매개변수 설명
AffectRecords 선택사항, Resync 메서드가 영향을 줄 레코드 개수를 결정하는 AffectEnum 값이다.
ResyncValues


매개변수 AffectRecords는 다음 상수 중 하나가 될 수 있다.


상수 설명
adAffectCurrent 현재 레코드만 새로 고친다.
aAdAffectGroup 현재 Filter 속성 설정값을 만족하는 레코드를 새로 고친다. 이 옵션을 사용하려면 Filter 속성을 사전 정의된 유효한 상수 중 하나로 설정해야 한다.
adAffectAll 기본값, 현재 Filter 속성 설정값에 의해 숨겨져 있는 레코드를 포함하여 Recordset 개체의 모든 레코드를 새로 고친다.
adAffectAllChapters 모든 장(Chapter)의 레코드를 새로 고친다.


매개변수 ResyncValues는 다음 상수 중 하나가 될 수 있다.


상수 설명
adResyncAllValues 기본값, 데이터가 덮어 쓰여지고 보류 중인 변경은 취소된다.
adResyncUnderlyingValues 데이터가 덮어 쓰여지지 않고 보류 중인 변경도 취소되지 않는다.


현재 Recordset 개체에 있는 레코드를 기본 데이터베이스와 다시 동기화하려면 Reqync 메서드를 사용한다. 이 메서드는 Static 커서 또는 Forward-Only 커서를 사용하면서 기본 데이터베이스의 변경 내용을 볼 때 유용하다.

CursorLocation 속성을 adUseClient로 설정하면 Resync는 읽기 전용이 아닌 Recordset 개체에서만 사용할 수 있다.

Requery 메서드와 달리 Resync 메서드는 Recordset 개체의 기본 명령을 다시 실행하지 않는다. 즉, 기본 데이터베이스에 있는 새로운 레코드를 볼 수 없다.

기본 데이터베이스와의 충돌 때문에 재동기화가 이루어지지 못하면(예: 다른 사용자가 레코드를 삭제한 경우), Provider는 Errors 컬렉션에 오류를 반환하고 런타임 오류가 발생한다. Filter 속성(adFilterConflictingRecords)과 Status 속성을 사용하여 충돌이 발생한 레코드를 찾을 수 있다.

Remote Data Service 사용시 Resync 메서드는 클라이언트 Recordset 에서 사용할 수 없다.

[예제]
다음 예제는 Pubs 데이터베이스의 Titles 테이블에 대한 Recordset 개체를 생성하고, Resync 메서드를 사용하여 정적 레코드 집합에 있는 데이터를 새로 고치는 것을 보여주는 예이다.

Private Sub cmdResync_Click()
  Dim strConn As String
  Dim adoRs As ADODB.Recordset

  strConn = "Provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User Id=sa;Password=;"

  Set adoRs = New ADODB.Recordset
  adoRs.CursorLocation = adUseClient
  adoRs.CursorType = adOpenStatic
  adoRs.LockType = adLockBatchOptimistic
  adoRs.Open "titles", strConn, , , adCmdTable

  adoRs!Type = "database"

  MsgBox "Before resync: " & vbCr & vbCr & _
    "Title - " & adoRs!Title & vbCr & _
    "Type - " & adoRs!Type

  adoRs.Resync

  MsgBox "After resync: " & vbCr & vbCr & _
    "Title - " & adoRs!Title & vbCr & _
    "Type - " & adoRs!Type

  adoRs.CancelBatch

  adoRs.Close
  Set adoRs = Nothing
End Sub
Posted by Huikyun