2014-02-28 3 views
1

다음 코드는 액세스에서 SQL Server 테이블로 데이터를 업로드합니다. 문제는 테이블을 덮어 쓰거나 업데이트하려고 할 때 테이블을 덮어 쓰거나 바꾸지 않는다는 것입니다. 테이블이 이미 존재한다는 오류가 발생합니다. 새 테이블을 업로드하거나 테이블에 새/편집 된 레코드를 추가 할 수 있도록 테이블을 삭제하는 코드를 추가해야합니다. 새 데이터로 SQL 데이터 테이블 바꾸기

Public Function Update() 
DoCmd.TransferDatabase _ 
     acExport, _ 
     "ODBC Database", _ 
     "ODBC;" & _ 
      "Driver={SQL Server Native Client 10.0};" & _ 
      "Server=SERVER;" & _ 
      "Database=DB;" & _ 
      "UID=ID;" & _ 
      "PWD=PW;", _ 
     acTable, _ 
     "CDData", _ 
     "AC_CDData", _ 
     False 
End Function 

는 그래서 AC_CDData의 표는 새로운 하나를 전송하기 전에 기존 대상 테이블을 삭제하려면 다음 코드가 될 경우

답변

2

를 교체해야 하나보기 다음과 같습니다 :

Option Compare Database 
Option Explicit 

Public Function TransferTableToSqlServer() 
    Dim cdb As dao.Database, qdf As dao.QueryDef 
    Dim err As dao.Error 
    Const DestinationTableName = "AC_CDData" 
    Const ConnectionString = _ 
      "ODBC;" & _ 
       "Driver={SQL Server Native Client 10.0};" & _ 
       "Server=(local)\SQLEXPRESS;" & _ 
       "Database=YourDatabaseName;" & _ 
       "UID=YourSqlUserId;" & _ 
       "PWD=YourSqlPassword;" 
    Set cdb = CurrentDb 
    Set qdf = cdb.CreateQueryDef("") 
    qdf.Connect = ConnectionString 
    qdf.sql = _ 
      "IF EXISTS " & _ 
       "(" & _ 
        "SELECT * FROM INFORMATION_SCHEMA.TABLES " & _ 
        "WHERE TABLE_NAME='" & DestinationTableName & " '" & _ 
       ") " & _ 
      "DROP TABLE [" & DestinationTableName & "]" 
    qdf.ReturnsRecords = False 
    On Error GoTo TransferTableToSqlServer_qdfError 
    qdf.Execute dbFailOnError 
    On Error GoTo 0 
    Set qdf = Nothing 
    Set cdb = Nothing 
    DoCmd.TransferDatabase _ 
      acExport, _ 
      "ODBC Database", _ 
      ConnectionString, _ 
      acTable, _ 
      "CDData", _ 
      DestinationTableName, _ 
      False 
    Exit Function 

TransferTableToSqlServer_qdfError: 
    For Each err In dao.Errors 
     MsgBox err.Description, vbCritical, "Error " & err.Number 
    Next 
End Function 
+0

ODBC 호출 오류가 발생하며 QDF.EXECUTE dbFailOnError가 강조 표시됩니다. – user2119980

+0

@ user2119980 SQL 사용자에게 테이블을 삭제할 수있는 충분한 권한이 있습니까? –

+0

일반적으로 삭제를 누른 다음 확인해야합니다. 그리고 로그인 정보는 관리자 로그인 자격 증명입니다. – user2119980

관련 문제