Hỏi về kết nối excel và SQL Server

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Sau khi con tham khảo ADO căn bản, con có được code thế này

Sub test()

Dim cnn As New ADODB.Connection
Dim recordset As ADODB.recordset
Dim src As String
Dim col As Integer

cnn.Open "Driver=SQL Server;SERVER=CDUNG;UID=;PWD=;DATABASE=TEST"

If cnn.State = 1 Then
MsgBox "Ket noi thanh cong"
Else
MsgBox "Ket noi that bai"
End If

Set recordset = New ADODB.recordset
With recordset
src = "SELECT * FROM Nhanvien"
.Open Source:=src, ActiveConnection:=Connection
For col = 0 To recordset.Fields.Count – 1
Range("A1").Offset(0, col).Value = recordset.Fields(col).Name
Next

Range("A1").Offset(1, 0).CopyFromRecordset recordset
End With

Set recordset = Nothing
cnn.Close
Set cnn = Nothing

End Sub

Con đã kết nối được vào SQL Server (msgbox báo đã kết nối) nhưng lại không thể kết nối vào database nên không truy xuất được data (thậm chí khi con để trống phần server và database trong lệnh kết nối thì vẫn kết nối được). Xin cho con hỏi làm cách nào để kết nối vào trong database TEST. Con xin cám ơn

Thay đoạn này:

.Open Source:=src, ActiveConnection:=Connection

bằng đoạn này:

.Open Source:=src, ActiveConnection:=Cnn ' cái này bạn định nghĩa trên kia đó

Bạn viết vòng lặp dài dòng, thực ra chỉ cần

Sheet1.Range("A1").CopyFromRecordset recordset

là thỏa mãn công việc của bạn (vì bạn chọn hết nguyên 1 bảng!)
– Chú ý server
– Chú ý định nghĩa biến : ví dụ recordset nên định nghĩa rs vì từ recordset là một từ khóa trong thư viện ADO

Cám ơn bạn rất nhiều, mình đã tìm được cái sai của mình, mấu chốt là ở chỗ

.Open Source:=src, ActiveConnection:=Connection

Ghi Connection là sai hoàn toàn dẫn đến việc code bị lỗi

www.giaiphapexcel.com/diendan/threads/h%E1%BB%8Fi-v%E1%BB%81-k%E1%BA%BFt-n%E1%BB%91i-excel-v%C3%A0-sql-server.50020/

Khoá học Trưởng phòng nhân sự
Khóa học SprinGO phù hợp

Khoá học Trưởng phòng nhân sự

Nguồn nhân lực là một trong Tứ trụ kinh doanh của doanh nghiệp, có tác động tới sự tồn tại và phát triển bền...

Xem khóa học
★★★★★ 5 ★ 1 👤 1 ▥ 0
Quảng cáo

Bạn nên đọc

One Response

  1. hands says:

    Nhờ các bạn xem hộ mình đoạn Sub sau, mình cũng gặp vấn đề như Kyo, đã báo kết nối nhưng không truy xuất được dữ liệu. Cảm ơn mọi người

    Sub CnnTest()
        Dim cnn As New ADODB.Connection
        Dim rec As ADODB.Recordset
        Dim mySql As String
        Set rec = New ADODB.Recordset
    
    cnn.Open "Driver=SQL Server;Server=VIETDUNGSME2010;UID=;PWD=;DATABASE=NAMDO"
    
    If cnn.State = 1 Then
            MsgBox "Ket noi thanh cong"
        Else
            MsgBox "Ket noi that bai"
        End If
    
    With Application
            .ScreenUpdating = False: .Calculation = xlCalculationManual
        End With
    
    mySql = "SELECT AccountingObject.AccountingObjectID" & Chr(13) & "" & Chr(10) & "FROM NamDo.dbo.AccountingObject AccountingObject"
        rec.Open mySql, cnn, adOpenKeyset, adLockOptimistic
    
    Sheet2.Range("C4").CopyFromRecordset rec
    
    With Application
            .ScreenUpdating = True: .Calculation = xlCalculationAutomatic
        End With
    
    End Sub

    1. lỗi khoản trắng ngay chỗ DATA_BASE -> sửa lại DATABASE
    2. Chưa khởi tạo biến rec thì làm sao dùng được

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm