ADO 의 비동기 실행 을 어떻게 사용 합 니까?

10052 단어 sql일 하 다vb
FetchProgress 와
FetchComplete 이 벤트 는 비동기 로 기록 집합 을 불 러 올 때 감시 하 는 기록 로 딩 에 사 용 됩 니 다.
FetchProgress 이 벤트 는 사용자 에 게 진행 표시 기의 현재 상 태 를 표시 할 수 있 는 기록 집합 에 대한 정 보 를 제공 합 니 다.
기록 집합 완료 시 자극
FetchComplete 이벤트 불 러 오기.
정상 으로 돌아가다
더 많은 정보
시스템 필수 구성 요소 소프트웨어 는 FetchProgress 와 FetchComplete 이벤트 가 MDAC 2.5 또는 더 높 은 버 전에 서 만 정상적으로 작 동 하도록 요구 합 니 다.아래 마이크로 에서...
 
시스템 필수 구성 요소
소프트웨어 요구 사항
  • FetchProgress 와 FetchComplete 사건 은 MDAC 2.5 또는 더 높 은 버 전에 서 정상적으로 작 동 합 니 다.다음 Microsoft 사이트 에서 최신 버 전의 Microsoft 데이터 액세스 구성 요 소 를 다운로드 할 수 있 습 니 다.
    Microsoft Data Access Components
    (http://msdn.microsoft.com/library/default.asp?url=/downloads/list/dataaccess.asp)
  • Microsoft Visual Studio 6.0 프로그램 을 개발 하고 있다 면 service pack 3 이상 버 전이 설치 되 어 있어 야 합 니 다.최신 service pack 을 설치 할 수 있 습 니 다. Microsoft Visual Studio 6.0 은 아래 Microsoft 사이트 입 니 다.
    Visual Studio Product Updates
    (http://msdn.microsoft.com/vstudio/downloads/updates.asp)

  • 부호화 요구 사항
  • 기록 집합 을 열 때 기록 집합 옵션 에 adAsyncFetch 를 지정 해 야 합 니 다.
  • ActiveX 데이터 대상 (ADO) 클 라 이언 트 커서 엔진 이 FetchProgress 와 FetchComplete 이 벤트 를 되 돌려 주기 때문에 클 라 이언 트 커서 를 사용 해 야 합 니 다.
  • Visual Basic 에 서 는 모듈 단계 에서 WithEvents 키 워드 를 사용 하여 Dim Recordset 를 사용 해 야 합 니 다.

  • 정상 으로 돌아가다
    속성
    ADO 의 비동기 행위 에 영향 을 주 는 기록 집합 속성 이 두 개 있 습 니 다.기록 집 을 열기 전에 이 속성 을 설정 할 수 있어 야 합 니 다.
  • 추출 한 초기 크기 는 비동기 스 레 드 를 만 들 기 전에 몇 개의 기록 을 추출 하 는 지 결정 합 니 다.이것 은 스 레 드 를 만 들 필요 가 없 는 추가 비용 을 만 들 기 위해 작은 기록 집합 을 허용 합 니 다.기본적으로 50 으로 설정 되 어 있 습 니 다.FetchProgress 와 FetchComplete 라 고 부 르 려 면 이 값 을 0 으로 설정 하 십시오.
  • 배경 캡 처 크기 는 몇 개의 기록 이 FetchProgress 이벤트 호출 사이 로 추출 되 었 는 지 확인 합 니 다.기본적으로 15 로 설정 되 어 있 습 니 다.

  • 정상 으로 돌아가다
    이벤트
    FetchProgress FetchProgress 는 네 개의 매개 변 수 를 가지 고 있 습 니 다.
  • 진 도 는 현재 기록 집중 의 기록 수 이다.첫 번 째 로 FetchProgress 를 호출 합 니 다. 진 도 는 초기 추출 크기 와 배경 캡 처 크기 입 니 다.모든 추가 호출 진 도 는 이전 값 에 배경 캡 처 크기 와 같 습 니 다.
  • MaxProgress 는 예상 한 최대 치 를 되 돌려 야 합 니 다.MaxProgress 는 실제 되 돌아 올 기록 수 와 같 지 않 습 니 다.ADO 는 이 값 을 가 져 오기 위해 추출 기록 을 가지 고 있 습 니 다.이 는 맥 스 프로 그 레 스 가 언제나 최선 의 추측 이 었 다 는 뜻 이다.MaxProgress 는 보통 진도 와 배경 캡 처 크기 와 같 습 니 다.FetchProgess 는 항상 FetchComplete 를 호출 하기 전에 호출 합 니 다.이런 상황 에서 진도 와 맥 스 프로 그 레 스 는 서 로 를 위 한 것 이다.이 MaxProgress 는 실제 검색 기록 수 와 같 습 니 다.
  • adstatus 의 값 은 오류 가 발생 했 는 지 확인 합 니 다.이 값 은 보통 adstatusOK 입 니 다.adstatus 의 값 을 값 으로 설정 할 수 있 습 니 다. adstatus Unwanted Event 에서 FetchProgress 이 벤트 를 사용 하지 않 습 니 다.
  • pRecordset 는 이 기록 집 자체 에 대한 인용 이다.

  • FetchComplete FetchComplete 는 세 개의 매개 변 수 를 가지 고 있 습 니 다.
  • adstatus adstatus Errors Occurred 가 발생 하면 어떤 오류 가 발생 했 는 지 확인 할 수 있 습 니 다.코드 가 Cancel 방법 으로 조 회 를 실행 하기 전에 실행 과 같은 상황 이 발생 할 수 있 습 니 다.
  • adstatus 의 값 은 오류 가 발생 했 는 지 확인 합 니 다.adstatus 의 값 을 값 으로 설정 할 수 있 습 니 다. adstatus Unwanted Event 에 서 는 FetchComplete 이 벤트 를 사용 하지 않 습 니 다.
  • pRecordset 는 이 기록 집 자체 에 대한 인용 이다.

  • 回到顶端
    예제 코드
    다음 예제 에 서 는 Visual Basic 의 FetchProgress 와 FetchComplete 이 벤트 를 어떻게 사용 하 는 지 보 여 줍 니 다.이 예제 에 서 는 Pubs 라 는 ODBC 데이터 원본 을 사용 하여 SQL Server 가 첨부 된 Pubs 데이터베이스 에 연결 합 니 다.
  • Microsoft Visual Basic 에서 새로운 표준 EXE 를 만 듭 니 다.기본적으로 Form 1 을 항목 에 추가 합 니 다.
  • 프로젝트 메뉴 에서 인용 을 선택 한 다음 Microsoft ActiveX 데이터 대상 라 이브 러 리 를 선택 하 십시오.
  • 프로젝트 메뉴 에서 구성 요 소 를 선택 하려 면 누 른 다음 Microsoft DataGrid 컨트롤 6.0 (OLEDB) 을 선택 하 십시오.
  • DataGrid, 텍스트 상자, 명령 단 추 를 Form 1 에 끌 어 다 놓 습 니 다.
  • 아래 코드 를 Form 1 의 코드 창 에 추가 합 니 다.
       Option Explicit
    
       Const strConn = "DSN=Pubs"
       Const strDefaultSQL = "SELECT * FROM Titles"
     
       Dim cn As ADODB.Connection
       Dim WithEvents rs As ADODB.Recordset
    
       Private Sub Form_Load()
          Command1.Caption = "Go"   
          Text1.Text = strDefaultSQL
       
          Set cn = New ADODB.Connection
          cn.Open strConn
       End Sub
    
       Private Sub Command1_Click()
          Dim strSQL As String
          strSQL = Text1.Text
       
          Set rs = New ADODB.Recordset
          With rs
             .CursorLocation = adUseClient
          
             .Properties("Initial Fetch Size") = 2
             .Properties("Background Fetch Size") = 4
          
             Debug.Print "Start"
             Debug.Print "Initial Fetch Size: " & _
                         .Properties("Initial Fetch Size")
             Debug.Print "Background Fetch Size" & _
                         .Properties("Background Fetch Size")
          
             .Open strSQL, cn, , , adAsyncFetch
          End With
       End Sub
    
       Private Sub rs_FetchProgress(ByVal Progress As Long, _
                                    ByVal MaxProgress As Long, _
                                    adStatus As ADODB.EventStatusEnum, _
                                    ByVal pRecordset As ADODB.Recordset)
                                    
          Debug.Print "Fetch: " & Progress & _
                      "  Max: " & MaxProgress
          
       End Sub
    
       Private Sub rs_FetchComplete(ByVal pError As ADODB.Error, _
                                    adStatus As ADODB.EventStatusEnum, _
                                    ByVal pRecordset As ADODB.Recordset)
                                 
          If adStatus <> adStatusOK Then
             Debug.Print "Failed"
             Debug.Print "Error: " & pError.Number & " - " & pError.Description
          Else
             Set DataGrid1.DataSource = pRecordset
             Debug.Print "Done"
          End If
       
       End Sub
    					

  • strConn 은 데이터베이스 에서 유효한 연결 문자열 과 strDefaultSQL 을 유효한 SQL 조회 로 변경 하여 데이터베이스 에서 돌아 온 기록 을 조회 합 니 다.
  • 실행 코드.검색 단 추 를 누 르 면 기록 집합 을 읽 기 시작 합 니 다.보기 메뉴 에서 즉시 창 을 선택 하려 면 누 르 십시오.Visual Basic 즉시 창 은 비동기 조회 의 진 도 를 표시 합 니 다.

  • *********************************************************
    해 보면 안 돼.
    아래 줄
     
    '위 드 이 벤트 스 키 워드 는 아 이 템 카 테 고리 의 변 수 를 알 립 니 다.'사건 을 일 으 키 는 물건 을 사건 의 출처 (event source) 라 고 부 르 며 사건 의 출처 로 인 한 사건 을 처리 합 니 다.With Evnets 는 ActiveX 개체 가 일 으 킨 사건 에 대응 하 는 데 사 용 됩 니 다."물건 분류 모듈 에 만 적 용 됩 니 다."위 드 이벤트 로 변 수 를 개별적 으로 선언 할 수 있 지만, 진열 을 만 드 는 데 사용 할 수도 없고, New 와 동시에 사용 할 수도 없습니다.
    Dim WithEvents cn As ADODB. Connection Dim WithEvents Recordset 개체 As ADODB. Recordset
    Private Sub cn_ConnectComplete (ByVal pError As ADODB. Error, adStatus As ADODB. EventStatusEnum, ByVal pConnection As ADODB. Connection) '라 이브 러 리 연결 완료 시 ConnectComplete 이벤트 종료 서브 를 촉발 합 니 다.
    Private Sub cn_Disconnect (adstatus As ADODB. EventStatusEnum, ByVal pConnection As ADODB. Connection) '인 터 럽 트 라 이브 러 리 연결 은 Disconnect 이벤트 종료 Sub 를 촉발 합 니 다.
    Private Sub cn_ExecuteComplete (ByVal Records Affected As Long, ByVal pError As ADODB. Error, adStatus As ADODB. EventStatusEnum, ByVal pCommand As ADODB. Command, ByVal pRecordset As ADODB. Recordset, ByVal pConnection As ADODB. Connection) '연결 물 체 는 SQL 명령 을 실행 하 는 실행 방법 을 사용 할 때 ExecuteComplete 이벤트 종료 서브 를 실행 합 니 다.
    Private Sub Form_Load () '폼 불 러 오기 이벤트 OpenCN' 데이터베이스 연결 끝 서브 열기
    Private Sub OpenCN () '데이터베이스 연결 열기;Connection 의 비동기 실행 Dim strCN As String '은 WithEvents 를 사용 하기 때문에 새로운 키 워드 를 사용 하여 하나의 아 이 템 유형의 새로운 실행 개체 Set cn = New ADODB. Connection 을 만들어 야 합 니 다.
    '데이터베이스 연결 문자열 strCN = "Provider = Microsoft. Jet. OLEDB. 4.0;" &"Data Source=C:/XXOO/ABC.mdb;Persist Security Info=False"
    With cn 'Cursor Location 속성, 자료 지표 서비스의 위 치 를 설정 하거나 전송 합 니 다.이 설정 값 을 사용 하면 장점 이 있 습 니 다. 앞으로 트 레이스 호환성 에 대해 '동의어 의 adUseClient Batch 도 지원 을 받 습 니 다.(예 를 들 어 관련 이 없 는 Recordset) 의 일부 기능 은 '서보 의 자료 기준 으로 시 뮬 레이 션 할 수 없 기 때문에 이 설정 값 에서 이 기능 을 사용 할 수 없습니다. cursor Location = adUseClient' adConnectUnspecified (미리 설정 값)동기 화 연결 을 만 듭 니 다.'이 리 턴 이 없 으 면 프로그램 은 계속 아래로 실 행 됩 니 다. (라 이브 러 리 연결 은 동기 화 되 지 않 고 실 행 됩 니 다.)' 라 이브 러 리 의 연결 이 완료 되 기 를 기다 리 지 않 고 DoEventsLoopEnd SubPrivate Sub OpenRS () '자료 록 (집합) 을 엽 니 다.; Connection 의 비동기 실행 '상수 설명' adcmdText 는 공급 자가 Source 를 명령 의 문자 로 정의 합 니 다. 'AdCmdTable 은 ADO 가 SQL 조 회 를 생 성하 고 Source 에서 지정 한 자료 표 에서 모든 자료 열 로 전 송 됩 니 다.' AdCmdTableDirect 는 공급 자가 Source 에서 지정 한 자료 표 에서 모든 자료 열 로 전 송 됩 니 다. '공급 자 는 Source 를 사전 저장 프로그램 으로 평가 합 니 다. "AdCmdUnknown 은 Source 도입부 에서 알 수 없 는 명령 형식 을 표시 합 니 다." AdCmdFile 은 저장 되 어 있 음 을 표시 합 니 다.Recordset 은 Source 에서 지정 한 파일 을 복원 합 니 다. 'AdAsyncExecute 는 Source 가 비동기 적 으로 실 행 됨 을 나 타 냅 니 다.' AdAsyncFetch 는 Initial Fetch Size 속성 에서 지정 한 초기 수량 이 캡 처 되면 나머지 자료 열 이 비동기 적 으로 캡 처 됩 니 다. '필요 한 자료 열 이 캡 처 되 지 않 으 면 필요 한 자료 열 을 얻 을 때 까지 주요 실행 실 마 리 를 동상 에 걸 립 니 다.'AdAsyncFetchNonBlocking 은 캡 처 할 때 주 실행 서 비 스 를 동결 하지 않 는 다 고 밝 혔 습 니 다. '필요 한 자료 열 을 캡 처 하지 않 으 면 현재 의 자료 열 은 파일 의 끝으로 자동 으로 이동 합 니 다. Set Recordset 개체 = Connection 개체. Execute (SQL 문법, adAsyncExecute) Do Until Recordset 개체. State = 1' Recordset 의 시작 (실행) 상태 DoEventsLoopEnd Sub
    Private Sub Recordset 아 이 템 FetchComplete (ByVal pError As ADODB. Error, adStatus As ADODB. EventStatusEnum, ByVal pRecordset As ADODB. Recordset) '비동기 동작 으로 모든 자 료 를 Recordset 에 입력 하면 이 사건 이 발생 합 니 다. End Sub

    좋은 웹페이지 즐겨찾기