링크 된 테이블/SQL Server 백엔드를 사용하도록 최근에 업데이트 한 레거시 Microsoft Access 데이터베이스로 작업하고 있습니다.데이터 형식을 새로 고치는 Access에서도 연결된 테이블을 프로그래밍 방식으로 어떻게 업데이트합니까?
데이터 구조를 약간 변경하고 프로그래밍 방식으로 연결된 테이블 참조를 업데이트하려고합니다.
그러나 내가 사용하고있는 코드를 사용하면 링크 된 테이블을 새로 고치면 특정 테이블에 대한 업데이트 된 데이터 형식이 표시되지 않을 것입니다. 현재 데이터 유형은 텍스트이지만 External Data> Linked Table Manager를 사용하고 해당 프로세스를 거쳐 날짜/시간으로 업데이트됩니다.
(내가 dev에와 생산 사이의 플립하는 기능을 가지고 싶습니다, 그래서 옵션이 될 위의 경로를 고려하지 않습니다.)
액세스/VB 더 이상 내 강력한 기술하지 않습니다 ,하지만 MSDN (this 및 this)에서는 tb.Fields.Refresh
이 필요하지만 예상대로 작동하지 않습니다.
내가 뭘 잘못하고 있니?
Function RefreshLinkedTables() As Boolean
Dim db As DAO.Database
Dim tb As DAO.TableDef
Dim fld As DAO.Field
Set db = CurrentDb
For Each tb In db.TableDefs
' Skip system files.
If (Mid(tb.Name, 1, 4) <> "MSys" And Mid(tb.Name, 1, 4) <> "~TMP") Then
Debug.Print tb.Name
Debug.Print tb.Connect
If (Mid(tb.Connect, 1, 5) = "ODBC;") Then
tb.RefreshLink
If (tb.Name = "Jobs") Then
Debug.Print "Refreshing fields data"
tb.Fields.Refresh
End If
End If
Debug.Print "=== === ==="
End If
db.TableDefs.Refresh
Next
Set db = Nothing
RefreshLinkedTables = True
Exit Function
End Function
테이블 링크 새로 고침이 만족스럽지 않으면 연결된 테이블을 삭제하고 다시 작성해 보았습니까? –
감사합니다. @GordThompson. 나는 연결된 테이블을 삭제할 수 있다고 생각하지만, 프로그래밍 방식의 리프레시가 표준처럼 작동하도록하는 편이 낫습니다. 나는 또한 연결된 테이블이 생성되었을 때 DSN이 어떻게 지적되었는지 100 % 아니며 가능한 한 사용자에게 미치는 영향을 원합니다. –
링크 된 테이블 관리자가이를 수행 할 수 있다면 'tb.RefreshLink'도이를 수행 할 수있을 것으로 기대했을 것입니다. 'tb.Connect = tb.Connect &'''와 같은 것을 시도해 보았습니다.'tb.RefreshLink'를 호출하기 전에'.Connect' 속성을 "dirty"로 만드시겠습니까? –