Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Sử dụng Excel 2010 để đọc / ghi vào cơ sở dữ liệu SQL Server 2008 bằng các thủ tục được lưu trữ

Tôi đã kết thúc với cách tiếp cận này bằng cách sử dụng xác thực AD. Tôi đã sử dụng ví dụ trong bài đăng này để lấy cảm hứng: http://www.eggheadcafe.com/community/sql-server/13/10141669/using-excel-to-update-data-on-ms-sql-tables .aspx

Lưu ý rằng các hàm này nằm trong các khu vực khác nhau của Sổ làm việc Excel (Đối tượng, Mô-đun, Sổ làm việc này), nhưng đây là tài liệu tham khảo nhanh.

Tôi cũng có từng cột đang xác thực FK dựa trên các bảng mà chúng tham chiếu.

Dưới đây là một số mẫu mã:

Public aCon As New ADODB.Connection
Public aCmd As New ADODB.Command

Private Sub Workbook_Open()
  Application.EnableEvents = False
  PopulateSheet
  Application.EnableEvents = True
End Sub

Sub Connect()
  Dim sConn As String
  sConn = "Provider=SQLOLEDB;Trusted_Connection=Yes;Server=[SVR];Database=[DB]"
  With aCon
    .ConnectionString = sConn
    .CursorLocation = adUseClient
    .Open
  End With
  BuildProcs
End Sub

Sub BuildProcs()
  With aCmd
    .ActiveConnection = aCon
    .CommandType = adCmdStoredProc
    .CommandText = "[SPROC]"
    .Parameters.Append .CreateParameter("@in_EmployeeID", adInteger, adParamInput)
  End With

End Sub

Sub PopulateSheet()
  Dim n As Integer, r As Long

  Dim aCmdFetchEmployees As New ADODB.Command
  Dim aRstEmployees As New ADODB.Recordset

  If aCon.State = adStateClosed Then Connect

  With aCmdFetchEmployees
    .ActiveConnection = aCon
    .CommandType = adCmdStoredProc
    .CommandText = "[SPROC]"
    Set aRstEmployees = .Execute
  End With
  r = aRstEmployees.RecordCount

  Worksheets(1).Activate
  Application.ScreenUpdating = False
  Cells(2, 1).CopyFromRecordset aRstEmployees

  For n = 1 To aRstEmployees.Fields.Count
    Cells(1, n) = aRstEmployees(n - 1).Name
    Cells(1, n).EntireColumn.AutoFit
  Next
  Cells(1).EntireColumn.Hidden = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim cell As Range
  If aCon.State = adStateClosed Then Connect
    With aCmd
      .Parameters(0) = Cells(Target.Row, 1)
      .Parameters(1) = Cells(Target.Row, 4)
      .Parameters(2) = Cells(Target.Row, 5)
      .Parameters(3) = Cells(Target.Row, 6)
      .Parameters(4) = Cells(Target.Row, 7)
      .Parameters(5) = Cells(Target.Row, 8)
      .Parameters(6) = Cells(Target.Row, 10)
      .Parameters(7) = Cells(Target.Row, 11)
      .Parameters(8) = Cells(Target.Row, 12)
      .Parameters(9) = Cells(Target.Row, 13)
      .Parameters(10) = Cells(Target.Row, 14)
      .Parameters(11) = Cells(Target.Row, 15)
      .Parameters(12) = Cells(Target.Row, 16)
      .Execute , , adExecuteNoRecords
    End With

End Sub


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để định dạng một số bằng dấu phẩy trong T-SQL?

  2. Giải phẫu các bế tắc của SQL Server và cách tốt nhất để tránh chúng

  3. Chuyển đổi không thành công khi chuyển đổi ngày và / hoặc giờ từ chuỗi ký tự trong khi chèn ngày giờ

  4. Cách xuất dữ liệu máy chủ SQL từ bảng sang tệp CSV

  5. Cách tạo tập lệnh để tạo lại các ràng buộc khóa ngoại trong cơ sở dữ liệu SQL Server - Hướng dẫn sử dụng SQL Server / TSQL Phần 73