minhkhai > 06-05-20, 12:35 AM
ongke0711 > 06-05-20, 09:43 PM
SQL = "SELECT CHECKINOUT.USERID, USERINFO.NAME, Date(CHECKINOUT.CHECKTIME) AS NGAY, Weekday(CHECKINOUT.CHECKTIME) AS THU, " & _
"IIF(CHECKINOUT.CHECKTYPE='I',Format(CHECKINOUT.CHECKTIME,'hh:nn'),'') AS GioVao, IIF(CHECKINOUT.CHECKTYPE='O',Format(CHECKINOUT.CHECKTIME,'hh:nn'),'') AS GioRa, DEPARTMENTS.DEPTNAME " & _
"FROM USERINFO INNER JOIN (CHECKINOUT INNER JOIN DEPARTMENTS ON CHECKINOUT.DEPTID = DEPARTMENTS.DEPTID) ON USERINFO.USERID = CHECKINOUT.USERID " & _
"WHERE CHECKINOUT.CHECKTIME BETWEEN #" & Format([E3], "yyyy/mm/dd") & "# AND #" & Format([F3], "yyyy/mm/dd") & "# " & _
"ORDER BY CHECKINOUT.USERID, CHECKINOUT.CHECKTIME "
minhkhai > 10-05-20, 09:28 AM
(06-05-20, 09:43 PM)ongke0711 Đã viết: Vụ này giống làm toán hình học lớp 7 quá: nhìn hình ta thấy....
Bạn thay chuỗi SQL như bên dưới: viết chay nên nếu chạy báo lỗi gì thì bạn post hình lên đây.
Mã PHP:SQL = "SELECT CHECKINOUT.USERID, USERINFO.NAME, Date(CHECKINOUT.CHECKTIME) AS NGAY, Weekday(CHECKINOUT.CHECKTIME) AS THU, " & _
"IIF(CHECKINOUT.CHECKTYPE='I',Format(CHECKINOUT.CHECKTIME,'hh:nn'),'') AS GioVao, IIF(CHECKINOUT.CHECKTYPE='O',Format(CHECKINOUT.CHECKTIME,'hh:nn'),'') AS GioRa, DEPARTMENTS.DEPTNAME " & _
"FROM USERINFO INNER JOIN (CHECKINOUT INNER JOIN DEPARTMENTS ON CHECKINOUT.DEPTID = DEPARTMENTS.DEPTID) ON USERINFO.USERID = CHECKINOUT.USERID " & _
"WHERE CHECKINOUT.CHECKTIME BETWEEN #" & Format([E3], "yyyy/mm/dd") & "# AND #" & Format([F3], "yyyy/mm/dd") & "# " & _
"ORDER BY CHECKINOUT.USERID, CHECKINOUT.CHECKTIME "
Xuân Thanh > 10-05-20, 10:24 AM
ongke0711 > 10-05-20, 07:38 PM
(10-05-20, 09:28 AM)minhkhai Đã viết: Bạn cho hỏi mình qua Google mình thấy kết nối từ Excel sang Access hay dùng ADODB nhưng file đính kèm của mình có vẻ không phải vậy? Bạn có thể cho mình biết sự khác nhau giữa 2 connection là như thế nào không
(Code trong file của mình là đi copy trên mạng)
Const DbLoc As String = "E:\May2019.mdb"
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim xlBook As Workbook
Dim xlSheet As Worksheet
Dim recCount As Long
Dim SQL As String
'Setup references to workbook and sheet
Set xlBook = ActiveWorkbook
Set xlSheet = xlBook.Worksheets(1)
xlSheet.Range("A5:H150000").ClearContents
Set db = OpenDatabase(DbLoc)
SQL = "SELECT USERID, CHECKTIME, CHECKTYPE FROM CHECKINOUT "
SQL = SQL & "WHERE CHECKTIME >= #" & Format([E3], "yyyy/mm/dd") & "# " & _
" AND CHECKTIME < #" & Format([F3], "yyyy/mm/dd") & "# "
SQL = SQL & "ORDER BY USERID, CHECKTIME "
'Execute our query and populate the recordset
Set rs = db.OpenRecordset(SQL, dbOpenSnapshot)
thuyyeu99 > 10-05-20, 11:10 PM
Xuân Thanh > 11-05-20, 07:14 AM
minhkhai > 12-05-20, 02:46 PM
(10-05-20, 07:38 PM)ongke0711 Đã viết:(10-05-20, 09:28 AM)minhkhai Đã viết: Bạn cho hỏi mình qua Google mình thấy kết nối từ Excel sang Access hay dùng ADODB nhưng file đính kèm của mình có vẻ không phải vậy? Bạn có thể cho mình biết sự khác nhau giữa 2 connection là như thế nào không
(Code trong file của mình là đi copy trên mạng)
@XuanThanh: code trong file Excel của bạn minhkhai đính kèm ở trên như thế này: (chỉ copy vài dòng liên quan đến Access)
Mã PHP:Const DbLoc As String = "E:\May2019.mdb"
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim xlBook As Workbook
Dim xlSheet As Worksheet
Dim recCount As Long
Dim SQL As String
'Setup references to workbook and sheet
Set xlBook = ActiveWorkbook
Set xlSheet = xlBook.Worksheets(1)
xlSheet.Range("A5:H150000").ClearContents
Set db = OpenDatabase(DbLoc)
SQL = "SELECT USERID, CHECKTIME, CHECKTYPE FROM CHECKINOUT "
SQL = SQL & "WHERE CHECKTIME >= #" & Format([E3], "yyyy/mm/dd") & "# " & _
" AND CHECKTIME < #" & Format([F3], "yyyy/mm/dd") & "# "
SQL = SQL & "ORDER BY USERID, CHECKTIME "
'Execute our query and populate the recordset
Set rs = db.OpenRecordset(SQL, dbOpenSnapshot)
@minhkhai:
- File này người ta dùng đối tượng DAO của Access để làm tương tác với CSDL Access. DAO là viết riêng cho bộ máy CSDL của Access, nó có thể dùng được trong một số môi trường như VBA, Visual Basic... Đối với Access 2003 trờ về trước thì dùng thư viện của DAO3.60.dll, Access 2007 trở lên thì Access đổi sang ACEDAO.dll và Office 64bit sẽ không còn hỗ trợ thư viện DAO nữa, chỉ có ACEDAO.
- Đối với việc Excel kết nối CSDL Access thì bạn có thể dùng thư viện DAO hay ADO đều được, không có gì khác biệt, chỉ khác nhau là câu lệnh của ADO sẽ phức tạp hơn của DAO.
- Cái khác nhau cơ bản nhất của DAO vs ADO là: DAO chỉ làm việc với CSDL Access, còn ADO có thể kết nối tới mọi kiểu dữ liệu như: Text, CSV, XML, SQL Server, Access, Excel,...
minhkhai > 12-05-20, 02:49 PM
tranthanhan1962 > 12-05-20, 06:01 PM