2017-09-04 8 views
2

ODBC를 통해 SQLServer 2016에 연결하는 MS Access 2016을 실행 중입니다. 연결된 테이블을 기반으로하는 간단한 양식이 있습니다. 폼보기에서 표시하고 일부 데이터를 변경 한 후 다음 레코드를 클릭하면 현재 레코드가 업데이트되고 다음 레코드로 이동하지만 콤보 상자를 사용하여 이동할 레코드를 선택하면 레코드가 표시됩니다. 내가 선택한 일부 데이터를 변경하는 경우 - 오류를 반환합니다. 'ODBC - 링크 된 테이블의 업데이트가 실패했습니다. 마이크로 소프트 ODBC SQL 서버 드라이버 쿼리 제한 시간은 나는 2 개 개의 다른 콤보 상자 MS Access ODBC 레코드 저장시 제한 시간 초과 오류

Private Sub cboFindRecord_AfterUpdate() 
Dim rst As DAO.Recordset 
    Set rst = Me.RecordsetClone 
    rst.FindFirst "Id=" & Nz(Me.cboFindRecord, 0) 
    If Not rst.EOF Then 
     Me.Bookmark = rst.Bookmark 
    End If 
    rst.Close 
    Set rst = Nothing 
End Sub 


Private Sub FindRecord2_AfterUpdate() 
    Me.txtId.Enabled = True 
    Me.txtId.Locked = False 
    Me.txtId.SetFocus 
    If IsNull(Me.FindRecord2) Then 
     Exit Sub 
    End If 
    DoCmd.FindRecord Me.FindRecord2, acEntire, , acSearchAll, , acCurrent 
End Sub 

(나는 다른 형태에이 코드를위한 코드 아래에 설명 된 두 가지 방법을 시도 (# 0) '

만료 이 데이터베이스는 작동하지만이 양식의 경우이 테이블에는 해당되지 않습니다)

테이블에 500 개의 레코드가 있으며 시간 초과 문제가 아닌 블로킹 문제 인 것 같습니다. SQL Server에서 Sp_who2를 실행하면 프로세스 블록이 있음을 알 수 있습니다.하지만 왜 아무도 도와 줄 수 있습니까?

+0

업데이트중인 테이블에 여러 개의 복잡한 인덱스가 있습니까? – Minty

+0

기본 키를 포함하여이 테이블에 5 개의 인덱스가 있습니다. 기본 키를 제외한 모든 인덱스를 제거했지만 여전히 작동하지 않습니다 .- ( –

+0

레코드 선택기를 사용하여 다음/이전 레코드로 이동하면 작동하지만 !! 코드화 된 콤보 상자를 사용하여 선택하지 않으면 SQL Server에서 다른 SPID를 생성하고 선택에 의해 업데이트가 차단 된 것으로 보입니다 –

답변

0

레코드 선택기를 사용할 때 폼/테이블 관계가 정상적으로 작동한다는 것에 유의 했으므로 모든 것이 콤보 상자에 표시됩니다. 먼저 할 일은 처음부터 새로운 것을 만드는 것입니다. 그렇게 할 때 - 키 필드가 첫 번째 열이고 콤보 박스의 바운드 값이되는지 확인하십시오. 이것은 본질적으로 설치하기를 원하는 방식이지만, 그렇다고 확신 할 수 있습니다.

+0

내 문제에 대한 대답을 얻었습니다 - 제거 과정을 통해 깨달았습니다. 그것은 콤보 박스로 내려갔습니다 - 어떻게 든 손상되었다고 생각하면서 폼을 처음부터 다시 만들기 시작했습니다. 그것은 MS Access 마법사를 사용하여 콤보 상자를 다시 생성했을 때 콤보 드롭에 사용했던 설명 필드가 있다는 것을 깨달았습니다 아래 필드의 목록에 표시되지 않았습니다.이 SQLServer ntext 필드 (메모)로 정의한,이 변경된 직선 nvarchar (255) 모든 aok 일한! 도움을 주셔서 감사 :-) –