Cài đặt ODBC -nền tảng kết nối Access và nguồn dữ liệu khác - vba - 06-01-11 09:19 PM
Đã tìm được nguyên nhân rồi các bác ạ ( e mừng quá!). Thì ra là bản của em là sql server sp2, em Upgrade lên sp3 connect được ngay. Cảm ơn noname nhiều bác nhiệt tình với em quá.
Nhân đây em cũng tặng các bác 1 đoạn code dùng để connect đến sql server mà không cần phải khai báo system dsn hay user dsn nữa, rất tiện dụng khi đem đến các máy khác trong mạng lan:
Function AttachDSNLessTable(stLocalTableName As String, stRemoteTableName As String, stServer As String, stDatabase As String, Optional stUsername As String, Optional stPassword As String)
On Error GoTo AttachDSNLessTable_Err
Dim td As TableDef
Dim stConnect As String
For Each td In CurrentDb.TableDefs
If td.Name = stLocalTableName Then
CurrentDb.TableDefs.Delete stLocalTableName
End If
Next
If Len(stUsername) = 0 Then
'//Use trusted authentication if stUsername is not supplied.
stConnect = "ODBC;DRIVER=SQL Server;SERVER=" & stServer & ";DATABASE=" & stDatabase & ";Trusted_Connection=Yes"
Else
'//WARNING: This will save the username and the password with the linked table information.
stConnect = "ODBC;DRIVER=SQL Server;SERVER=" & stServer & ";DATABASE=" & stDatabase & ";UID=" & stUsername & ";PWD=" & stPassword
End If
Set td = CurrentDb.CreateTableDef(stLocalTableName, dbAttachSavePWD, stRemoteTableName, stConnect)
CurrentDb.TableDefs.Append td
AttachDSNLessTable = True
Exit Function
AttachDSNLessTable_Err:
AttachDSNLessTable = False
MsgBox "AttachDSNLessTable encountered an unexpected error: " & Err.Description
End Function
Em xin giải thích qua cách sử dụng hàm: hàm này có 5 đối số
stLocalTableName: Tên Table muốn đặt tên trong ngăn table của access (Tùy bạn nhưng phải theo chuẩn đặt tên table tức là không có các ký tự đặc biệt)
stRemoteTableName: Table trên Sql server (Tên table này phải chính xác nếu không nó cự lại không chạy ngay)
stDatabase: Tên Database chứa table mà ta muốn connect
stUsername,stPassword: User và mật khẩu để đăng nhập vào database ( Cái này là do lúc bạn cài đặt sql, nếu không đặt mật khẩu thì bạn để trống trong dấu ngoặc kép " ")
VD: trong sự kiện form open em đặt đoạn code như sau
Call AttachDSNLessTable("Don_dat_hang","Orders","Northwind","sa","t123") là em đã link được table Orders trong database Northwind rồi em đặt tên trong table của em là don_dat_hang
EM không hiểu ý cua anh. ví dụ em muốn link nhiều Tables thì em phải khai báo tất cả các Tables hả anh vba
Còn chổ nào có stLocalTableName em phải thay bằng tên Tables hết hay sao anh. Anh nào hiểu thì chỉ em với.