luongsonlong211
Thành viên mới
- Tham gia
- 16/9/16
- Bài viết
- 26
- Được thích
- 4
Cho mình hỏi lấy dữ liệu từ nhiều table trong 1 file access thì thực hiện như thế nào. cảm ơn!
1. UnionCho mình hỏi lấy dữ liệu từ nhiều table trong 1 file access thì thực hiện như thế nào. cảm ơn!
Public cnn As New ADODB.Connection
Sub Moketnoi()
Set cnn = New ADODB.Connection
Dim strCNString As String
strCNString = "Data Source=" & ThisWorkbook.Path & "\CSDL.mdb"
With cnn
.Provider = "Microsoft Jet 4.0 OLE DB Provider"
.ConnectionString = strCNString
.Properties("Jet OLEDB:Database Password") = "1234"
.CursorLocation = adUseClient
.Open
End With
End Sub
Bạn hoàn toàn có thể thêm và xóa trường dữ liệu bình thường bằng ví dụ sau:các pro cho mình hỏi, ta có thể dùng excel để tạo hoặc xóa đi 1 trường dữ liệu của 1 bảng trong access được không, nếu có thì có thể cho em code ví dụ đc không. Rất mong câu trả lời của các pro, em cảm ơn./.
ALTER TABLE TenTable DROP COLUMN TenTruongDLCanXoa
ALTER TABLE TenTable ADD COLUMN TenTruongDLCanThem KieuDuLieu
Bạn hoàn toàn có thể thêm và xóa trường dữ liệu bình thường bằng ví dụ sau:
1. Xóa
2. ThêmMã:ALTER TABLE TenTable DROP COLUMN TenTruongDLCanXoa
Mã:ALTER TABLE TenTable ADD COLUMN TenTruongDLCanThem KieuDuLieu
Tks bác nhiều. Mình mới mò về vba nên k rành nhờ bác chỉ giúp như sau: mình muốn mệnh đề where nó = với giá trị 1 ô mình nhập thì khai báo như thế nào nhỉ?Xin được góp ý thêm 1 chút:
SQL WHERE Clause:
The WHERE clause is used to filter records.
Mệnh đề WHERE được sử dụng để lọc records
The WHERE clause is used to extract only those records that fulfill a specified criterion.
Mệnh đề WHERE được sử dụng để trích xuất các records đáp ứng một tiêu chí xác định.
Cú pháp SQL WHERE:
Mã:SELECT column_name(s) FROM table_name WHERE column_name operator value
LƯU Ý:
SQL sử dụng dấu nháy đơn (') bao quanh các giá trị chuỗi (hầu hết các hệ thống cơ sở dữ liệu cũng sẽ chấp nhận dấu ngoặc kép).
Tuy nhiên, giá trị số không được kèm theo trong dấu nháy đơn!
Cột Năm Sinh trong CSDL của bạn dạng nào? yyyy hay dd/mm/yyyy?Tks bác nhiều. Mình mới mò về vba nên k rành nhờ bác chỉ giúp như sau: mình muốn mệnh đề where nó = với giá trị 1 ô mình nhập thì khai báo như thế nào nhỉ?
Vd: mình có 1 nút và ô A1 với các giá trị cách nhau dấu , là 1990,1991,1992, khi bấm vào nút thì sẽ lọc năm sinh điều kiện này, nếu không nhập thì lấy tất cả thì làm sao bác
Thêm Table báo cáo errorLàm phiền các Bạn chút ... Bạn nào còn sử dụng Office 2003 nhờ tải 2 File Access sau về mở lên Save As sang Access 2003 dùm mình với
File đó hình như là Office 1997 Or 2000 gì đó mình mở trên Office 2016x64 không được
Xin cảm ơn
Bây giờ bắt đầu ta lấy dữ liệu từ bảng tblData ra Excel cell bắt đầu là A5.
1./ Lấy tất cả các cột có trong bảng:
Mã:Sub LayDuLieuTatCaCot() On Error GoTo loi Dim lsSQL As String: Dim rst As New ADODB.Recordset If cnn.State <> 1 Then Moketnoi lsSQL = "SELECT * " & _ "FROM tblData" rst.Open lsSQL, cnn, adOpenStatic, adLockReadOnly Cells.ClearContents Range("A5").CopyFromRecordset rst rst.Close Set rst = Nothing cnn.Close Set cnn = Nothing Exit Sub loi: MsgBox Err.Description End Sub
2./ Lấy 3 cột (SUPPLIER, [MATERIAL NAME], [COLOR NAME]) lưu ý nếu ta select cột nào trước thì nó sẽ ra cột đó trước, ví dụ tôi lấy cột Supplier trước thì nó sẽ hiển thị cột này trước, mặc dù vị trí thực của nó nằm trong bảng ở sau các cột kia.
Mã:Sub LayDuLieu3Cot() On Error GoTo loi Dim lsSQL As String: Dim rst As New ADODB.Recordset If cnn.State <> 1 Then Moketnoi lsSQL = "SELECT SUPPLIER, [MATERIAL NAME], [COLOR NAME] " & _ "FROM tblData" rst.Open lsSQL, cnn, adOpenStatic, adLockReadOnly Cells.ClearContents Range("E5").CopyFromRecordset rst rst.Close Set rst = Nothing cnn.Close Set cnn = Nothing Exit Sub loi: MsgBox Err.Description End Sub
[video=youtube;MH2-fAElpXw]
office 2016, 365 đều có thể mở được file mdb của 2003 trở về trước. Một số thư viện (ocx) bản cũ khó tìm ảnh hưởng đến ActiveX controls khi mở lên, nhưng có thể thay thế bằng control phiên bản mớiNếu sau này dân chúng họ lên Windows10 hết ko cài được Office 2003 thì mấy file Access 1997 to 2000 trên các phần mềm củ muốn xem lại data thì sao ta ???!!! chắc bỏ quá ( Hiện tại thấy nhiều Cty to trà bá còn Xài Windows Server 2003 )
Mấy file Access 1997 to 2000 em mở trên Office 2016 nó ko cho đó Anhoffice 2016, 365 đều có thể mở được file mdb của 2003 trở về trước. Một số thư viện (ocx) bản cũ khó tìm ảnh hưởng đến ActiveX controls khi mở lên, nhưng có thể thay thế bằng control phiên bản mới
Tôi mới thử bằng 2016 thì không được thật vì file kiểu cũ quá (1997-2000, nếu 2003 thì có thể được). Tuy nhiên 2007 hay 2010 thì mở được 1997 vì có tính năng convert, 2013 trở về sau thì không:Mấy file Access 1997 to 2000 em mở trên Office 2016 nó ko cho đó Anh
Anh thử file file sau trên Office 2016 xem sao ... Hình như nó là Access 1997 To 2000 gì đó
1. Dùng câu lệnh truy vấn bỏ trống cột.1. Cho mình hỏi, ở code trên bạn sẽ copy dữ liệu trường SUPPLIER, [MATERIAL NAME], [COLOR NAME] liền nhau vào excel, bắt đầu từ ô A5. Nếu mình muốn trên excel A5 để dữ liệu SUPPLIER, C5 để dữ liệu MATERIAL NAME, T5 để COLOR NAME thì có cách nào nhanh không bạn?
2. Mình hỏi thêm hỏi thêm một vấn đề khác, giả sử trong CSDL của bạn có trường POQTY
View attachment 240107
Nếu ở excel mình có một dự liệu nhập hàng hôm đó, muốn: Cứ có hàng hóa mã ID là 1 thì sẽ cộng số excel vào số đã có trên POQTY thì cách cộng trực tiếp vào access không bạn? (mình chưa rành access, hiện thì mình phải dùng code copy dữ liệu POQTY của ID 1 ra ngoài excel, cộng rồi update lại vào excel)
Select Supplier,'',MaterialName,'','',.... From...
Thì trước khi úp hỏi em cũng có tìm hiểu hết rồi Access 1997 to 2000 chỉ mở trên Office 2003 xong Save As To 2003 xong từ 2003 muốn làm gì tiếp với các Build sau đó thì làm tiếpoffice 2016, 365 đều có thể mở được file mdb của 2003 trở về trước. Một số thư viện (ocx) bản cũ khó tìm ảnh hưởng đến ActiveX controls khi mở lên, nhưng có thể thay thế bằng control phiên bản mới