LẤY QUERY BẰNG LỆNH VBA
Số trang: 9
Loại file: pdf
Dung lượng: 307.36 KB
Lượt xem: 19
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Một số Query bạn chỉ cần lấy 1 lần rồi sau đó khi có sự thay đổi dữ liệu gốc trong file Access, bạn chỉ cần nhấn Refresh, dữ liệu sẽ tự động update. Đặc biệt là các Query nhằm tạo báo cáo tổng hợp như: Tổng hợp công nợ nhà cung cấp, tổng hợp công nợ khách hàng, tổng hợp nhập xuất tồn vật tư hàng hoá, Bảng cân đối phát sinh.
Nội dung trích xuất từ tài liệu:
LẤY QUERY BẰNG LỆNH VBA LẤY QUERY BẰNG LỆNH VBAMột số Query bạn chỉ cần lấy 1 lần rồi sau đó khi có sự thay đổi dữ liệu gốc trongfile Access, bạn chỉ cần nhấn Refresh, dữ liệu sẽ tự động update. Đặc biệt l à cácQuery nhằm tạo báo cáo tổng hợp như: Tổng hợp công nợ nhà cung cấp, tổnghợp công nợ khách hàng, tổng hợp nhập xuất tồn vật tư hàng hoá, Bảng cân đốiphát sinh.Riêng những báo cáo chi tiết như: Sổ Chi tiết nhập xuất 1 mặt hàng, Sổ chi tiếtcông nợ 1 khách hàng, sổ cái tài khoản, chúng ta thấy khá là khổ công nếu làm chomỗi đối tượng hoặc mỗi tài khoản 1 query riêng. Ta nhớ lại khi làm các query loạinày ta có sử dụng bộ lọc theo đối tượng. Nếu có cách nào chỉ cần chọn 1 đối tượngtrong DS cho vào 1 cell nào đó của Excel, rồi Excel tự lấy query (xác định trước)theo đối tượng đó thì hay. Cái này làm ta liên tưởng ngay đến Macro của VBA.Trước tiên ta cần cái DS đó trước. Giả sử là DS nhà cung cấp và ta muốn các sổchi tiết công nợ nhà cung cấp. Vậy thì ta thực hành ngay lấy DS bằng VBA:Cách dễ nhất để tạo 1 đoạn code VBA mà bạn chả biết tí gì về VBA là RecordMacro.Bật record Macro lên, làm từng bước để lấy table DSNCC trong file Access, chỉcần 2 trường là đủ. Sau khi kết thúc ra Excel xong, tắt record macro.Mở cửa sổ code ra xem ta thấy đoạn code:PHP Code:Sub GetData()With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _ODBC;DSN=MS Access Database;DBQ=E:DataThanh MyAccessKho & KHang.mdb;_DefaultDir=E:DataThanh MyAccess;DriverId=25;FIL=MS Access _), Array(;MaxBufferSize=2048;PageTimeout=5;)),_Destination:=Range(A1)).CommandText = Array( _SELECT DSNCC.msNCC, DSNCC.TenNCC & Chr(13) & & Chr(10) &_FROM `E:DataThanh MyAccessKho & KHang`.DSNCC DSNCC _).Name = Query from MS Access Database....Refresh BackgroundQuery:=FalseEnd WithEnd SubXem cho biết thôi, vì cái chính là ta cần cái query Chi tiết nhà CC kia.Lấy lại cái Query Sổ chi tiết nhà cung cấp w: Win Engineering ở bài trước mà córecord macro: ta sẽ có đoạn code:PHP Code:Sub GetcongnoNCC()With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _ODBC;DSN=MS Access Database;DBQ=E:DataThanh MyAccessKho & KHang.mdb;_DefaultDir=E:DataThanh MyAccess;DriverId=25;FIL=MS Access _), Array(;MaxBufferSize=2048;PageTimeout=5;)), Destination:=Range(A1)).CommandText = Array( _SELECT DSNCC.msNCC, DSNCC.TenNCC, DSNCC.MST, DSNCC.Dunodky,_DSNCC.Ducodky, CTnx.NgayCT, CTnx.SoCT, CTnx.Noidung,_CTnx.TratienNCC, CTnx.CongtienNX & Chr(13) & & Chr(10) _& FROM `E:DataThanh MyAccessKho & KHang`.CTnx CTnx, _,_ `E:DataThanh MyAccessKho & KHang`.DSNCC DSNCC & Chr(13) & & Chr(10)_& WHERE DSNCC.msNCC = CTnx.NhaCC AND ((DSNCC.msNCC=w)) _).Name = Query from MS Access Database.FieldNames = True.RowNumbers = False.FillAdjacentFormulas = False.PreserveFormatting = True.RefreshOnFileOpen = False.BackgroundQuery = True.RefreshStyle = xlInsertDeleteCells.SavePassword = False.SaveData = True.AdjustColumnWidth = True.RefreshPeriod = 0.PreserveColumnInfo = True.Refresh BackgroundQuery:=FalseEnd WithEnd SubChú ý phần tô đậm màu đỏ: WHERE DSNCC.msNCC = CTnx.NhaCC AND((DSNCC.msNCC=w)). Đây là cái mà ta cần.nêu ta thay DSNCC.msNCC=nt ta sẽ được chi tiết của nhà cung cấp Nam Thịnhcó mã nt.Ta có thể dùng 1 validation tại cell L1 với list là cái DS lúc nãy mới lấy xuống,nhưng validation chỉ có 1 cột mã, không hình tượng lắm.Tôi thích dùng combobox hơn, nó cho phép coi 2 c ột vừa mã vừa tên nhà CC, dễchọn lựa.Double click vào cái combo tạo code cho combo như sau:PHP Code:Private Sub ComboBox1_Change()GetcongnoNCCEnd SubCòn cái Code GetcongnoNCC ta phải sửa 1 tí:Thêm vào sub ở ngay trên cùng:PHP Code:Dim MS as stringMS=combobox1.valueRange(a1:j7).ClearCâu màu đỏ sửa như sau:WHERE DSNCC.msNCC = CTnx.NhaCC AND ((DSNCC.msNCC= &MS & ))Chú ý dấu nháy đơn màu đỏ.Bạn sẽ có được 1 Macro hoạt động ngon l ành: Chỉ cần chọn tên NCC trongcombobox:Tương tự bạn làm combobox cho tài khoản KT, DS khách hàng, DS mặt hàng.
Nội dung trích xuất từ tài liệu:
LẤY QUERY BẰNG LỆNH VBA LẤY QUERY BẰNG LỆNH VBAMột số Query bạn chỉ cần lấy 1 lần rồi sau đó khi có sự thay đổi dữ liệu gốc trongfile Access, bạn chỉ cần nhấn Refresh, dữ liệu sẽ tự động update. Đặc biệt l à cácQuery nhằm tạo báo cáo tổng hợp như: Tổng hợp công nợ nhà cung cấp, tổnghợp công nợ khách hàng, tổng hợp nhập xuất tồn vật tư hàng hoá, Bảng cân đốiphát sinh.Riêng những báo cáo chi tiết như: Sổ Chi tiết nhập xuất 1 mặt hàng, Sổ chi tiếtcông nợ 1 khách hàng, sổ cái tài khoản, chúng ta thấy khá là khổ công nếu làm chomỗi đối tượng hoặc mỗi tài khoản 1 query riêng. Ta nhớ lại khi làm các query loạinày ta có sử dụng bộ lọc theo đối tượng. Nếu có cách nào chỉ cần chọn 1 đối tượngtrong DS cho vào 1 cell nào đó của Excel, rồi Excel tự lấy query (xác định trước)theo đối tượng đó thì hay. Cái này làm ta liên tưởng ngay đến Macro của VBA.Trước tiên ta cần cái DS đó trước. Giả sử là DS nhà cung cấp và ta muốn các sổchi tiết công nợ nhà cung cấp. Vậy thì ta thực hành ngay lấy DS bằng VBA:Cách dễ nhất để tạo 1 đoạn code VBA mà bạn chả biết tí gì về VBA là RecordMacro.Bật record Macro lên, làm từng bước để lấy table DSNCC trong file Access, chỉcần 2 trường là đủ. Sau khi kết thúc ra Excel xong, tắt record macro.Mở cửa sổ code ra xem ta thấy đoạn code:PHP Code:Sub GetData()With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _ODBC;DSN=MS Access Database;DBQ=E:DataThanh MyAccessKho & KHang.mdb;_DefaultDir=E:DataThanh MyAccess;DriverId=25;FIL=MS Access _), Array(;MaxBufferSize=2048;PageTimeout=5;)),_Destination:=Range(A1)).CommandText = Array( _SELECT DSNCC.msNCC, DSNCC.TenNCC & Chr(13) & & Chr(10) &_FROM `E:DataThanh MyAccessKho & KHang`.DSNCC DSNCC _).Name = Query from MS Access Database....Refresh BackgroundQuery:=FalseEnd WithEnd SubXem cho biết thôi, vì cái chính là ta cần cái query Chi tiết nhà CC kia.Lấy lại cái Query Sổ chi tiết nhà cung cấp w: Win Engineering ở bài trước mà córecord macro: ta sẽ có đoạn code:PHP Code:Sub GetcongnoNCC()With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _ODBC;DSN=MS Access Database;DBQ=E:DataThanh MyAccessKho & KHang.mdb;_DefaultDir=E:DataThanh MyAccess;DriverId=25;FIL=MS Access _), Array(;MaxBufferSize=2048;PageTimeout=5;)), Destination:=Range(A1)).CommandText = Array( _SELECT DSNCC.msNCC, DSNCC.TenNCC, DSNCC.MST, DSNCC.Dunodky,_DSNCC.Ducodky, CTnx.NgayCT, CTnx.SoCT, CTnx.Noidung,_CTnx.TratienNCC, CTnx.CongtienNX & Chr(13) & & Chr(10) _& FROM `E:DataThanh MyAccessKho & KHang`.CTnx CTnx, _,_ `E:DataThanh MyAccessKho & KHang`.DSNCC DSNCC & Chr(13) & & Chr(10)_& WHERE DSNCC.msNCC = CTnx.NhaCC AND ((DSNCC.msNCC=w)) _).Name = Query from MS Access Database.FieldNames = True.RowNumbers = False.FillAdjacentFormulas = False.PreserveFormatting = True.RefreshOnFileOpen = False.BackgroundQuery = True.RefreshStyle = xlInsertDeleteCells.SavePassword = False.SaveData = True.AdjustColumnWidth = True.RefreshPeriod = 0.PreserveColumnInfo = True.Refresh BackgroundQuery:=FalseEnd WithEnd SubChú ý phần tô đậm màu đỏ: WHERE DSNCC.msNCC = CTnx.NhaCC AND((DSNCC.msNCC=w)). Đây là cái mà ta cần.nêu ta thay DSNCC.msNCC=nt ta sẽ được chi tiết của nhà cung cấp Nam Thịnhcó mã nt.Ta có thể dùng 1 validation tại cell L1 với list là cái DS lúc nãy mới lấy xuống,nhưng validation chỉ có 1 cột mã, không hình tượng lắm.Tôi thích dùng combobox hơn, nó cho phép coi 2 c ột vừa mã vừa tên nhà CC, dễchọn lựa.Double click vào cái combo tạo code cho combo như sau:PHP Code:Private Sub ComboBox1_Change()GetcongnoNCCEnd SubCòn cái Code GetcongnoNCC ta phải sửa 1 tí:Thêm vào sub ở ngay trên cùng:PHP Code:Dim MS as stringMS=combobox1.valueRange(a1:j7).ClearCâu màu đỏ sửa như sau:WHERE DSNCC.msNCC = CTnx.NhaCC AND ((DSNCC.msNCC= &MS & ))Chú ý dấu nháy đơn màu đỏ.Bạn sẽ có được 1 Macro hoạt động ngon l ành: Chỉ cần chọn tên NCC trongcombobox:Tương tự bạn làm combobox cho tài khoản KT, DS khách hàng, DS mặt hàng.
Tìm kiếm theo từ khóa liên quan:
excel tài liệu excel giáo trình excel mẹo vặt trong excel lý thuyết excel tự học excelTài liệu cùng danh mục:
-
Giáo trình Sử dụng thiết bị văn phòng - Trường CĐ Kinh tế - Kỹ thuật Bạc Liêu
79 trang 577 4 0 -
50 trang 478 0 0
-
73 trang 423 2 0
-
69 trang 397 6 0
-
Giáo trình Tin học (Trình độ: Trung cấp nghề) - Trường Trung cấp nghề Củ Chi
268 trang 319 4 0 -
183 trang 313 0 0
-
Giáo trình Tin học văn phòng: Phần 2 - Bùi Thế Tâm
65 trang 294 0 0 -
Nhập môn Tin học căn bản: Phần 1
106 trang 288 0 0 -
Ứng dụng công cụ Quizizz thiết kế trò chơi học tập trong giảng dạy học phần tin học đại cương
12 trang 284 0 0 -
Giáo trình Tin học văn phòng: Phần 2
17 trang 267 0 0
Tài liệu mới:
-
Google Sandbox và Phương pháp kiểm tra
4 trang 0 0 0 -
Bài giảng Autocad 2D: Dùng cho phiên bản Autocad 2018 – KS. Nguyễn Văn Huy
229 trang 0 0 0 -
125 trang 0 0 0
-
129 trang 0 0 0
-
69 trang 0 0 0
-
33 trang 0 0 0
-
Luận văn Thông báo kết quả học tập của học sinh qua điện thoại
115 trang 0 0 0 -
127 trang 0 0 0
-
107 trang 0 0 0
-
Đề thi học kì 1 môn Vật lý lớp 11 năm 2024-2025 - Trường THPT Nguyễn Tất Thành, HCM
8 trang 0 0 0