nguyensang270983 > 05-04-17, 03:08 PM
maidinhdan > 06-04-17, 01:15 AM
(05-04-17, 03:08 PM)nguyensang270983 Đã viết: Cho mình hỏi, mình có chạy file của bạn nhưng bị báo lỗi: Module Source: modQuanlydulieu. Mình muốn hỏi bạn như sau: mình có tập tin access 2003 trên máy chủ đường dẫn như sau: "\\10.162.22.222\DULIEU\DATA_NHANSU.MDB". Mình có 1 file là chứa các giao diện dữ liệu trên, mình muốn kết nối file này vào đường dẫn chứa dữ liệu như trên thì làm sau?
mình thử kết nối module của bạn nhưng bị báo lỗi. Cảm ơn
lehongduc > 09-06-17, 03:19 PM
ongke0711 > 09-06-17, 06:14 PM
ongke0711 > 13-06-17, 04:34 PM
qdf.Connect = "ODBC;" & GetConnectString()
Option Explicit
Global gstrConnectString As String
Public Function GetConnectString() As String
On Error GoTo Error_Handler
gstrConnectString = "DRIVER={SQL Server}" & (";SERVER=" + vServer) & ";UID=" & vUser & (";PWD=" + vPsw) & (";DATABASE=" + vData) & ";Network=DBMSSOCN"
GetConnectString = gstrConnectString
Exit_Procedure:
On Error Resume Next
Exit Function
Error_Handler:
GetConnectString = ""
MsgBox Err.Number & ", " & Err.Description
Resume Exit_Procedure
Resume
End Function
lehongduc > 14-06-17, 08:34 AM
(13-06-17, 04:34 PM)ongke0711 Đã viết: Cho hỏi về lấy dữ liệu cho combobox trong demo của anh lehongduc.Chào các Bạn,
Tôi thấy anh lehongduc dung ADO recordset để load dữ liệu về cho combobox, tại sao không dùng Pass through query làm Row source cho combobox vậy? Sau khi thiết lập kết nối với SQL server, sẽ cập lại chuỗi ODBC Connection cho toàn bộ pass through query rồi dùng thôi.
Ví dụ:
Mã PHP:qdf.Connect = "ODBC;" & GetConnectString()
Mã PHP:Option Explicit
Global gstrConnectString As String
Public Function GetConnectString() As String
On Error GoTo Error_Handler
gstrConnectString = "DRIVER={SQL Server}" & (";SERVER=" + vServer) & ";UID=" & vUser & (";PWD=" + vPsw) & (";DATABASE=" + vData) & ";Network=DBMSSOCN"
GetConnectString = gstrConnectString
Exit_Procedure:
On Error Resume Next
Exit Function
Error_Handler:
GetConnectString = ""
MsgBox Err.Number & ", " & Err.Description
Resume Exit_Procedure
Resume
End Function
Cũng mới ngâm cứu ADO + SQL Server nên cũng chưa nắm hết thủ thuật đằng sau nó. Các bác giải thích giùm nhé.
Cảm ơn.
lehongduc > 14-06-17, 09:02 AM
(13-06-17, 04:34 PM)ongke0711 Đã viết: Cho hỏi về lấy dữ liệu cho combobox trong demo của anh lehongduc.
Tôi thấy anh lehongduc dung ADO recordset để load dữ liệu về cho combobox, tại sao không dùng Pass through query làm Row source cho combobox vậy? Sau khi thiết lập kết nối với SQL server, sẽ cập lại chuỗi ODBC Connection cho toàn bộ pass through query rồi dùng thôi.
Ví dụ:
Mã PHP:qdf.Connect = "ODBC;" & GetConnectString()
Mã PHP:Option Explicit
Global gstrConnectString As String
Public Function GetConnectString() As String
On Error GoTo Error_Handler
gstrConnectString = "DRIVER={SQL Server}" & (";SERVER=" + vServer) & ";UID=" & vUser & (";PWD=" + vPsw) & (";DATABASE=" + vData) & ";Network=DBMSSOCN"
GetConnectString = gstrConnectString
Exit_Procedure:
On Error Resume Next
Exit Function
Error_Handler:
GetConnectString = ""
MsgBox Err.Number & ", " & Err.Description
Resume Exit_Procedure
Resume
End Function
Cũng mới ngâm cứu ADO + SQL Server nên cũng chưa nắm hết thủ thuật đằng sau nó. Các bác giải thích giùm nhé.
Cảm ơn.
lehongduc > 14-06-17, 10:04 AM
hoanbhxhls > 14-06-17, 10:15 AM
(14-06-17, 09:02 AM)lehongduc Đã viết:(13-06-17, 04:34 PM)ongke0711 Đã viết: Cho hỏi về lấy dữ liệu cho combobox trong demo của anh lehongduc.
Tôi thấy anh lehongduc dung ADO recordset để load dữ liệu về cho combobox, tại sao không dùng Pass through query làm Row source cho combobox vậy? Sau khi thiết lập kết nối với SQL server, sẽ cập lại chuỗi ODBC Connection cho toàn bộ pass through query rồi dùng thôi.
Ví dụ:
Mã PHP:qdf.Connect = "ODBC;" & GetConnectString()
Mã PHP:Option Explicit
Global gstrConnectString As String
Public Function GetConnectString() As String
On Error GoTo Error_Handler
gstrConnectString = "DRIVER={SQL Server}" & (";SERVER=" + vServer) & ";UID=" & vUser & (";PWD=" + vPsw) & (";DATABASE=" + vData) & ";Network=DBMSSOCN"
GetConnectString = gstrConnectString
Exit_Procedure:
On Error Resume Next
Exit Function
Error_Handler:
GetConnectString = ""
MsgBox Err.Number & ", " & Err.Description
Resume Exit_Procedure
Resume
End Function
Cũng mới ngâm cứu ADO + SQL Server nên cũng chưa nắm hết thủ thuật đằng sau nó. Các bác giải thích giùm nhé.
Cảm ơn.
Chào các Bạn,
Thêm một lý do nữa: nếu các Bạn tạo các query trên ứng dụng Access để truy xuất dữ liệu từ server, điều bắt buộc là phải duy trì kết nối liên tục với server từ đầu cho đến khi đóng ứng dụng. Trong khi thực tế đâu phải lúc nào ta cũng cần kết nối với server. Quy tắc tối ưu ứng dụng là chỉ kết nối khi cần, khi không cần thì ngắt kết nối. Tại sao nên làm như vậy? Tôi đã trình bày lý do rất rõ ràng trong loạt bài của tôi đăng trong chuyên mục này rồi. Các Bạn có thể tham khảo lại nếu cần.
lehongduc > 15-06-17, 06:09 PM
Trích dẫn:Cần lấy tổng số mẫu tin trong 1 bảng dữ liệu sql server (kết nối từ ứng dụng MS Access), nhưng nếu dùng MoveLast của Recordset rồi lấy RecordCount thì e rằng quá nặng nếu bảng dữ liệu có đến vài trăm nghìn, thậm chí cả triệu dòng.Theo những gì tôi hiểu và đã kiểm tra thực tế thì thấy rằng:
Bạn ấy hỏi có cách nào khác hay không?
Function RecCountOfTb(DbName As String, tbName As String, Optional OwnerSt) As Long
'
Dim qdf As DAO.QueryDef, rst As DAO.Recordset
Dim sqlSt As String
Dim intCount As Long
Set qdf = CurrentDb.CreateQueryDef("")
qdf.Connect = "ODBC;Driver=SQL Server;Server=.\SQLEXPRESS;Trusted_Connection=Yes;"
sqlSt = "select Count('*') as RecCount from " & DbName
If IsMissing(OwnerSt) Then
sqlSt = sqlSt & ".dbo." & tbName
Else
sqlSt = sqlSt & "." & OwnerSt & "."
End If
sqlSt = sqlSt & tbName
qdf.SQL = sqlSt
qdf.ReturnsRecords = True
Set rst = qdf.OpenRecordset
intCount = rst!RecCount
rst.Close
Set rst = Nothing
Set qdf = Nothing
'
RecCountOfTb = intCount
End Function
select Count('*') as RecCount from ...