-
RE: Hỏi tạo một Tool cho report
tranthanhan1962 > 20-11-19, 06:36 PM
Hiểu rồi VBA chỉ export được query sang excel mà nguồn excel của bạn là SQL nên không xuất excel được.
bạn phải tạo một query tạm để nó xuất sang excel rồi sau đó xóa query tạm đi.Mã:Private Sub XuatExcel_Click()
DoCmd.TransferSpreadsheet acExport, 8, NguonExcel.Value, Application.CurrentProject.Path & "\" & TenReport.Value & ".xls", True
MsgBox "Da xuat xong du lieu sang Excel, File nam trong thu muc C:\KETOANH&V ...", vbExclamation, "Le Dang Van"
End Sub
Mã:Private Sub XuatExcel_Click()
Dim strSQL As String
Dim strQry As String
strSQL = NguonExcel.Value
strQry = "TempQueryName"
Set Db = CurrentDb
Set Qdf = Db.CreateQueryDef(strQry, strSQL)
DoCmd.TransferSpreadsheet acExport, 8, strQry, Application.CurrentProject.Path & "\" & TenReport.Value & ".xls", True
MsgBox "Da xuat xong du lieu sang Excel, File nam trong thu muc C:\KETOANH&V ...", vbExclamation, "Le Dang Van"
DoCmd.DeleteObject acQuery, strQry
End Sub -
RE: Hỏi tạo một Tool cho report
Xuân Thanh > 20-11-19, 07:10 PM
Viết Tool làm chi cho nó cồng kềnh thêm vì phải đeo theo một cái form nữa. Có lệnh in sẵn rồi thì cắc cớ chi phải làm vậy
Nếu có thể thì thiết kê một Report có nhiều nguồn khác nhau được chăng(Vì không rõ ý định của chủ thớt) -
RE: Hỏi tạo một Tool cho report
ledangvan > 21-11-19, 09:18 AM
Xuân Thanh à, tôi muốn tạo một cái tool để nó luôn đi theo Report để làm những cái theo ý muốn : Ví dụ xuất ra excel thì Access nó có nhưng khi xuất nó không theo ý muốn, bị vỡ bảng. Hoặc là nút in của Access có nhưng khi ấn in nó ấn in cả ... tôi muốn thay bằng mở lệnh in từng trang, hoặc in theo trang ... Nói tóm lại là muốn nó theo ý mình.
Cái Tool đấy có thể thể hiện trong Form hay trên Rebon hoặc trên thanh Menu... Nhưng vì không biết phải làm thế nào nên tôi chỉ nghĩ là làm Form kèm theo thôi.
Nhờ Xuân Thanh chỉ giúp. Xin chân thành cảm ơn. -
RE: Hỏi tạo một Tool cho report
tranthanhan1962 > 21-11-19, 10:21 AM
Thực ra làm form là phương pháp rườm rà và xấu nhất. Bạn có thể làm toolbar hay RightMenu cũng được. Có điều ToolBar hay RightMenu thì phức tạp hơn một tí.
Tạo toolbar: (Mỗi Report có một thanh tool bar xử lý riêng)
Chuột phải vào Menubar / Customize
Chọn New/Đặt tên cho toolbar (để tên dễ nhớ tôi đặt theo tên report)
Sau khi tạo xong tên của toolbar đó sẽ nằm trong danh sách customeze
Thiết đặt properties cho toolbar
Trong phần Typer nếu chọn toolbar nó sẽ là thanh toolbar nằm phía trên cạnh menubar, nếu chọn Popup nó sẽ là menu chuột phải.
Kế tiếp bấm chuột phải vào thanh toolbar mới tạo, chọn customize, tại tab commands phía bên trái (catagories) chọn File, bên phải (commands) chọn nút custom và kéo vào thanh tollbar mới tạo. Ở đây tôi chọn 2 nút, một nút cho lệnh export excel, và một nút cho lệnh in
Sau đó vào Properties, đưa lệnh vào On Action
Để đưa lệnh vào On Action phải đưa code cục bộ trên form thành code toàn cục (tao module) và đổi sub thành function
Ví dụ: lệnh của nút XuatExcel trên form ToolExport
Chuyển thành một function trên module toàn cục, do không lấy được tham số từ form nên phài lấy tham số trực tiếpMã:Private Sub XuatExcel_Click()
Dim strSQL As String
Dim strQry As String
strSQL = NguonExcel.Value
strQry = "TempQueryName"
Set Db = CurrentDb
Set Qdf = Db.CreateQueryDef(strQry, strSQL)
DoCmd.TransferSpreadsheet acExport, 8, strQry, Application.CurrentProject.Path & "\" & TenReport.Value & ".xls", True
MsgBox "Da xuat xong du lieu sang Excel, File nam trong thu muc C:\KETOANH&V ...", vbExclamation, "Le Dang Van"
DoCmd.DeleteObject acQuery, strQry
End Sub
Sau đó đưa tên function với dấu = và dấu (), là xong. [ChuyenExcelTable1()]Mã:Function ChuyenExcelTable1()
Dim strSQL As String
Dim strQry As String
strSQL = "SELECT Table1.ID, Table1.Colum1, Table1.Colum2, Table1.Colum3 FROM Table1;"
strQry = "TempQueryName"
Set Db = CurrentDb
Set Qdf = Db.CreateQueryDef(strQry, strSQL)
DoCmd.TransferSpreadsheet acExport, 8, strQry, Application.CurrentProject.Path & "\" & "Table1" & ".xls", True
MsgBox "Da xuat xong du lieu sang Excel, File nam trong thu muc C:\KETOANH&V ...", vbExclamation, "Le Dang Van"
DoCmd.DeleteObject acQuery, strQry
End Function
Vào proprerties của report set toolbar (nếu là toolbar) hoặc sortcut menu bar (nếu là popup)
Chúc bạn thành công. -
RE: Hỏi tạo một Tool cho report
ongke0711 > 21-11-19, 11:59 AM
(21-11-19, 09:18 AM)ledangvan Đã viết: Xuân Thanh à, tôi muốn tạo một cái tool để nó luôn đi theo Report để làm những cái theo ý muốn : Ví dụ xuất ra excel thì Access nó có nhưng khi xuất nó không theo ý muốn, bị vỡ bảng. Hoặc là nút in của Access có nhưng khi ấn in nó ấn in cả ... tôi muốn thay bằng mở lệnh in từng trang, hoặc in theo trang ... Nói tóm lại là muốn nó theo ý mình.
Cái Tool đấy có thể thể hiện trong Form hay trên Rebon hoặc trên thanh Menu... Nhưng vì không biết phải làm thế nào nên tôi chỉ nghĩ là làm Form kèm theo thôi.
Nhờ Xuân Thanh chỉ giúp. Xin chân thành cảm ơn.
Có những cái Access không hỗ trợ thì cố quá thành quá cố...
1. Xuất Excel: Anh tranthanhan1962 đã đề cập: nguyên tắc xuất Access sang Excel là xuất từ Table hoặc Query bất kể đối tượng đang hiển thị là Form hay Report. Anh phải xử lý cái RecordSource của Report hay Form thành table hoặc query rồi xuất. Còn chuyện xuất sang Excel nó bị vỡ hay bị không đúng định dạng mong muốn là phải thêm code VBA điều khiển bảng tính Excel để ra được định dạng mong muốn. Export kiểu thông thường như: TransferSpreadSheet, acExport...thì không được nhé.
2. In ấn:
Nếu muốn tương tác nhiều hơn nữa với Report thì anh ngâm cứu tích hợp Crystal Report vô. Nếu dùng Access thì nó cũng có những hạn chế của nó.
- Nếu muốn in từ trang đến trang thì mặc định lệnh in đã có rồi. Đưa nó vào Ribbon (nếu Acc2007 trở lên) hoặc menu phải chuột (Acc2003).
- Trong chế độ "Report View", có thể thiết kế nút lệnh trên Header nhưng việc hiển thị ở Report view và Print Preview không đảm bảo là luôn luôn giống nhau nhé.
- Thường thì anh nên thiết kế nút xuất Excel ngay trong Form lọc (tìm kiếm) dữ liệu. Sau khi lọc, muốn xuất Excel thì xuất, muốn in thì vô Report.
-
RE: Hỏi tạo một Tool cho report
tranthanhan1962 > 21-11-19, 01:06 PM
Thường thì mình sử dụng in trực tiếp report trong phần mềm, trường hợp cần gởi đi thì chọn in pdf để chuyển mail (in pdf thì giống hệt như report, khi in ra máy in không thể phân biệt đâu là in từ report hay từ tập tin pdf được chuyển). Khi nào cần lắm thì mình sẽ dùng phần mềm để chuyển từ pdf sang excel (trường hợp các lão thuế kiểm tra mới đòi cái này). Phần mềm mình sử dụng là Solid_Converter, cũng có nhiều phần mềm chuyển pdf sang excel nhưng thằng này ổn nhất, không lỗi font. Lâu lâu cũng có vấn đề là xảy ra chuyện một cột lại bị chiếm dụng thành nhiều cột, ví dụ chỉ cần cột B nó lại lấy thêm vài cột BCDE trộn lại thành một cột, có lẽ nó tự xử lý gióng cột, nếu kỹ thì xử lý lại còn bằng không thì cũng chẳng sao (trường hợp này chỉ xảy ra trên các sổ kế toán thiết kế tùm lum, một tiêu đề có 5-7 tiêu đề con rồi phía dưới 5 - 7 ô chữ ký trên dưới lộn xộn mới bị. còn bình thường thì rất OK)
Mình đưa link tải cho bạn nào thích lười như mình sử dụng
http://www.mediafire.com/file/ooz3e6f5f6...l.zip/file -
RE: Hỏi tạo một Tool cho report
Xuân Thanh > 21-11-19, 03:59 PM
1/ Làm theo ongke0711
2/ Nếu sử dụng Form thi chế biến một chút
2.1/ Thiết kế frmPrint có 1 textbox txtSo và 2 button btnPrint và btnExcel
2.2/ Trên menu chính thiết kế các nút ra lệnh in report btnInReport1, btnInReport2...để mở frmPrint rồi gán cho txtSo các số 1,2...
2.3/ Xử lý code cho các btnPrint và btnExcel tùy theo giá trị của txtSo -
RE: Hỏi tạo một Tool cho report
ledangvan > 21-11-19, 05:37 PM
https://www.mediafire.com/file/b7qj9neyg...t.mdb/file
Hì, mình phối kết hợp mã của bác Ân, ongKe0711 Thấy cũng tàm tạm, Mình sẽ nghiên cứu thêm mã xuất ra excel của Xuân Thanh, Của Dân, Mặt trời ngủ quên ... để thử cho phù hợp.
Cái chính là mình muốn tạo một cái Tool để nó luôn đi theo Report nhưng lấy nguồn dữ liệu của report và xuất dữ liệu theo ý muốn.
Cảm ơn mọi người và xin đóng góp tiếp ý kiến để mình hoàn chỉnh thêm
(Report mình cho chạy có tên là AC)