Tuy nhiên, không phải bao giờ điều đó cũng làm các bạn hài lòng, và chúng ta luôn luôn muốn hơn nữa với VBA.Sau đây, mình xin giới thiệu các lệnh sửa thuộc tính trong VBA. Có lẽ vài bạn đã từng thử với việc Disable phím shift. Nhưng trong phạm vi bài viết này, mình sẽ nêu đầy đủ hơn về các thuộc tính đó.Để thuận tiện hơn trong việc thay đổi thuộc tính, bạn nên tạo 1 module và copy hàm sau:
Tìm thủ thuật nhanh hơn với chức năng tìm trong Blog
30/12/09
Thuộc tính Startup MS Access toàn tập với VBA
Xin chào các tín đồ Access. Có lẽ nhiều người biết các ngăn chặn vọc phá cũng như tùy biến thuộc tính startup Access bằng cách vào Tool--> Startup.
29/12/09
So sánh - tổng hợp 2 table với Union
Hỏi:Mình hiện nay có 2 table A và table B :
Giờ mình muốn lọc bằng lệnh SQL hoặc query :
điều kiện
1_những record nào trùng file mahang và tenhang trùng giữa 2 table A và B .
2_Lọc ra những record không trùng giữa 2 table A và B .
3 -Làm thế nào để Hợp nhất hai table A và B: lấy tất cả những record trùng và không trùng của 2 table (các record trùng nhau sẽ thành 1 record)
Giờ mình muốn lọc bằng lệnh SQL hoặc query :
điều kiện
1_những record nào trùng file mahang và tenhang trùng giữa 2 table A và B .
2_Lọc ra những record không trùng giữa 2 table A và B .
3 -Làm thế nào để Hợp nhất hai table A và B: lấy tất cả những record trùng và không trùng của 2 table (các record trùng nhau sẽ thành 1 record)
Đồng Bộ hai table
Hỏi: Tôi có 2 table có cấu trúc gần giống nhau. Tuy nhiên có khác biệt 1 ít về dữ liệu. Xin hướng dẫn đồng bộ table1 sang table 2.
Ví dụ: table1( Maso, ten). Table2(maso, ten, diachi, ...)
Tôi muốn
1/Thêm maso,ten từ table 1 sang table nếu trong table 2 thiếu.
2/Update lại tên nếu cùng 1 mã số nhưng tên table1 khác trong table 2
3/ xóa những recode trong table2 không có mã trong table1
Ví dụ: table1( Maso, ten). Table2(maso, ten, diachi, ...)
Tôi muốn
1/Thêm maso,ten từ table 1 sang table nếu trong table 2 thiếu.
2/Update lại tên nếu cùng 1 mã số nhưng tên table1 khác trong table 2
3/ xóa những recode trong table2 không có mã trong table1
Lập Hàm có lượng tham số thay đổi
Hỏi: Bạn HaQuocQuan có hỏi làm sao tạo một hàm có số lượng tham số tùy ý.
Đáp: Điển hình của các hàm có tham số tùy ý ta có thể thấy ở Excel, nó thường ở dạng
Hàm( mảng các tham số, hằng số 1, hằng số 2...)
Với hằng số để cho ta biết trong trường hợp nào thì trả về giá trị nào.
Dưới đây, mình xin tạo 1 hàm có số tham số thay đổi tương tự hàm sum của Excel
Đáp: Điển hình của các hàm có tham số tùy ý ta có thể thấy ở Excel, nó thường ở dạng
Hàm( mảng các tham số, hằng số 1, hằng số 2...)
Với hằng số để cho ta biết trong trường hợp nào thì trả về giá trị nào.
Dưới đây, mình xin tạo 1 hàm có số tham số thay đổi tương tự hàm sum của Excel
23/12/09
Phân quyền truy cập menu trong Access
Mình đã giới thiệu với các bạn chương trình phân quyền
thiet-ke-ctrinh-phan-quyen
Mình cũng giới thiệu các bạn cách bạn cách tạo 1 thanh menu
huong-dan-tao-menu-trong-access.html
Hôm nay mình xin giới thiệu cách để hiển thị 1 menu với user này và ẩn với user khác.
thiet-ke-ctrinh-phan-quyen
Mình cũng giới thiệu các bạn cách bạn cách tạo 1 thanh menu
huong-dan-tao-menu-trong-access.html
Hôm nay mình xin giới thiệu cách để hiển thị 1 menu với user này và ẩn với user khác.
21/12/09
Tạo số phiếu tăng theo mẫu : date+STT
Hôm trước mình giới thiệu thủ thuật tạo số phiếu tăng tự động theo đoạn code của anh phatnq2002 trang Dân Kế Toán
Tạo số chứng từ tăng dần và reset mỗi tháng
Hôm nay, mình giới thiệu đoạn code tạo số chứng từ tăng dần theo mẫu dạng: dd/mm/yy + số TT
Để số thứ tự tự động tăng dần để trường STT là Text. Đồng thời ta thêm 1 trường couter kiểu Number - Integer để đếm số phiếu trong ngày. Trường này sẽ tăng khi bạn nhập phiếu mới với giá trị = max giá trị ngày đó.
Tạo số chứng từ tăng dần và reset mỗi tháng
Hôm nay, mình giới thiệu đoạn code tạo số chứng từ tăng dần theo mẫu dạng: dd/mm/yy + số TT
Để số thứ tự tự động tăng dần để trường STT là Text. Đồng thời ta thêm 1 trường couter kiểu Number - Integer để đếm số phiếu trong ngày. Trường này sẽ tăng khi bạn nhập phiếu mới với giá trị = max giá trị ngày đó.
19/12/09
Tính ngày làm việc thực tế giữa khoảng thời gian
Rất nhiều nhà quản lý kế hoạch ( planning) muốn tính ngày làm việc thực tế giữa hai khoảng thời gian.
Dưới đây mình xin giới thiệu đoạn code tính ngày làm việc thực tế. Trừ thứ 7 và chủ nhật. Mời các bạn tham khảo.
Dưới đây mình xin giới thiệu đoạn code tính ngày làm việc thực tế. Trừ thứ 7 và chủ nhật. Mời các bạn tham khảo.
Không tạo được ActiveX trong Access
Hỏi: Em có tạo một sổ địa chỉ lấy dữ liệu từ tập tin MDB. Khi chạy chương trình trên máy nhà em thì bình thường nhưng khi chạy trên máy khác thì không được và có thông báo lỗi "Run-time error '429': Active X component can't create object". Thông báo này là sao, xin chỉ cho em cách khắc phục.
15/12/09
Kiểm tra sự tồn tại của Fields trong table
Hỏi : tôi có 1 table là: tblHOSO; tôi muốn dùng code để kiểm tra xem trong tblHOSO có field KIEMTRA không?
Lỗi khi Chuyển từ File mdb thành mde
Gần đâydo nhu cầu bảo mật chống sửa form/ Report , chống luc lọi trong các đoan code cũng như cải thiện tốc độ chương trình do VBA đã được biên dịch. Một số bạn đã chuyển ứng dụng Access của mình thành file *. mde nhưng vướng lỗi. Sau đây, mình xin thống kê và cách xử lý.
Tạo số chứng từ tăng và reset khi sang tháng khác
Hỏi: Tôi muốn chứng từ phát sinh trong tháng thì tăng tự động, qua tháng tính lại từ đầu.
Đáp:
Thảo luận thêm tại: http://thuthuataccess.co.cc/forum
Đáp:
Dim so
so = DMax("SOCT", "table", "Year(ngayhachtoan) = " & Year(Date()) & " AND Month(ngayhachtoan) = " & Month(Date()))
If Nz(so, 0) = 0 Then
soct = "0001"
Else
soct = Right("000" & CInt(so) + 1, 4)
End If
so = DMax("SOCT", "table", "Year(ngayhachtoan) = " & Year(Date()) & " AND Month(ngayhachtoan) = " & Month(Date()))
If Nz(so, 0) = 0 Then
soct = "0001"
Else
soct = Right("000" & CInt(so) + 1, 4)
End If
Trả lời của phatnq2002 trang Dân Kế Toán
____________________________________________________________________________________Thảo luận thêm tại: http://thuthuataccess.co.cc/forum
Thiết kế textbox, command ...sao cho đẹp
Hỏi: Một số form mình thiết kế các textbox, command, combobox theo hình thức thủ công, mặc dù mình đã O kỹ rồi nhưng thấy cũng chưa hài lòng lắm.
Các bạn làm ơn chỉ mình cách làm sao để: canh đều trái phải; kích thước dài, rộng bằng nhau để xem cho đẹp mắt hơn.
Đáp:
Access cung cấp cho ta công cụ Align và Size ( Click chuột phải vào tập các đối tượng đã chọn hoặc vào menu Format)
Đối với Align, ta có: (dùng chỉnh vị trí của đối tượng : Lable, Combobox, Textbox, button...)
Left: Canh theo đối tượng ngoài cùng phía bên trái
Right:Canh theo đối tượng ngoài cùng phía bên phải
Top:Canh theo đối tượng trên cùng
Bottom: Canh theo đối tượng thấp nhất
Đối với size của đối tượng ta có:
To Tallest : Format Chiều Cao của các đối tượng theo đối tượng có chiều cao lớn nhất
To Shortest Makes :Format Chiều cao của các đối tượng theo đối tượng có chiều cao nhỏ nhất
To Widest Makes:Format chiều rộng của các đối tượng theo đối tượng có chiều rộng lớn nhất
To Narrowest :Format chiều rộng của các đối tượng theo đối tượng có chiều rộng nhỏ nhất
To Fit: Format size đối tượng phù hợp với nội dung (chữ hoặc hình) của nó
To Grid: Format size đối tượng vừa với lưới định sẵn của Access
____________________________________________________________________________________
Thảo luận thêm tại: http://thuthuataccess.com/forum
Các bạn làm ơn chỉ mình cách làm sao để: canh đều trái phải; kích thước dài, rộng bằng nhau để xem cho đẹp mắt hơn.
Đáp:
Access cung cấp cho ta công cụ Align và Size ( Click chuột phải vào tập các đối tượng đã chọn hoặc vào menu Format)
Đối với Align, ta có: (dùng chỉnh vị trí của đối tượng : Lable, Combobox, Textbox, button...)
Left: Canh theo đối tượng ngoài cùng phía bên trái
Right:Canh theo đối tượng ngoài cùng phía bên phải
Top:Canh theo đối tượng trên cùng
Bottom: Canh theo đối tượng thấp nhất
Đối với size của đối tượng ta có:
To Tallest : Format Chiều Cao của các đối tượng theo đối tượng có chiều cao lớn nhất
To Shortest Makes :Format Chiều cao của các đối tượng theo đối tượng có chiều cao nhỏ nhất
To Widest Makes:Format chiều rộng của các đối tượng theo đối tượng có chiều rộng lớn nhất
To Narrowest :Format chiều rộng của các đối tượng theo đối tượng có chiều rộng nhỏ nhất
To Fit: Format size đối tượng phù hợp với nội dung (chữ hoặc hình) của nó
To Grid: Format size đối tượng vừa với lưới định sẵn của Access
____________________________________________________________________________________
Thảo luận thêm tại: http://thuthuataccess.com/forum
Format có điều kiện cho field trong Access
Hỏi:Tôi có bảng
tblViDu:
TK
111:Tiền mặt Mẹ,
1111:Tiền việt nam Con.
Em muốn là sau khi mở bảng xem ở chế độ Datasheet thì chữ Mẹ thành màu đỏ,Chữ Con thành Màu xanh thì đinh dạng như thế nào?
tblViDu:
TK
111:Tiền mặt Mẹ,
1111:Tiền việt nam Con.
Em muốn là sau khi mở bảng xem ở chế độ Datasheet thì chữ Mẹ thành màu đỏ,Chữ Con thành Màu xanh thì đinh dạng như thế nào?
11/12/09
Xóa Đối tượng Access từ 1 File Access Khác
Hỏi: Làm thế nào để xóa các Object (table, query, form, report) của DBLUU từ một nút lệnh trên form của DBSYS.
Thêm Field vào 1 table trong file Access khác
Hỏi: Tôi có 2 file DB, một file lưu dữ liệu DBLUU.mdb, một file chương trình DBSYS.mdb. Trong file DBLUU.MDB có 1 tblLuu.
Làm Sao code từ một nút lệnh trên FORM tại DBSYS.mdb có thể thêm field vào tblLuu trong DBLUU.mdb
Làm Sao code từ một nút lệnh trên FORM tại DBSYS.mdb có thể thêm field vào tblLuu trong DBLUU.mdb
10/12/09
Sử dụng thư viện hàm của Excel trong Access
Những ai thao tác quen với Excel sẽ thấy ở đây có một thư viện hàm khổng lồ mà Access không có được. Và câu hỏi là làm sao sử dụng được thư viện hàm này.
9/12/09
9 Shortcut Key giúp bạn tiết kiệm thời gian
Nếu sử dụng thành thạo các phím nóng sau, bạn có thể tăng tốc một cách đáng kể cho việc nhập hoặc di chuyển giữa các dữ liệu:
Xóa các bản ghi bị trùng trong bảng của bạn?
Trên thực tế Access không cho phép bạn xóa các bản ghi bị trùng, nhưng bạn có thể thực hiện được tác vụ trên bằng cách tạo một table mới từ table cũ với các bản ghi không bị trùng sau đó xóa table cũ và đổi tên table mới tạo thành table cũ.
Ẩn/ Hiện các đối tượng trong Access
Show / Hide Object ( tables, querys, forms, reports )
Question : Làm thế nào để có thể ẩn nhiều abngr cùng lúc.Hay là ta phải chọn từng bảng rôi ẩn.Vì trong CSDL có nhiều bảng mà ẩn từng cái bảng một thì rất là lâu.Tưng tụ với Form hay Report
Question : Làm thế nào để có thể ẩn nhiều abngr cùng lúc.Hay là ta phải chọn từng bảng rôi ẩn.Vì trong CSDL có nhiều bảng mà ẩn từng cái bảng một thì rất là lâu.Tưng tụ với Form hay Report
Tùy biến Tiêu Đề Report
Queston: Tôi có 1 report chia làm nhiều group. Mỗi cuối group tôi dùng page break để sang trang. Tôi muốn vài thông tin Page header chỉ hiển thị khi sang group mới.
8/12/09
Hướng Dẫn Tạo Menu Trong Access
Có nhiều cách để tạo Menu!
Sau đây, mình xin giới thiệu 1 tài liệu hướng dẫn tạo menu trong Access. Theo mình đánh giá là rất tốt và rõ ràng!
DownLoad
Sau đây, mình xin giới thiệu 1 tài liệu hướng dẫn tạo menu trong Access. Theo mình đánh giá là rất tốt và rõ ràng!
DownLoad
Đóng gói chương trình Access
Nhiều bạn làm Access rất hay trăn trở làm thế nào đóng gói chương trình Access của mình cho trông nó chuyên nghiệp một tý.
So Sanh chính Xác chữ Hoa- Thường trong Access
Muốn so sánh chính xác từng ký tự một, hoa ra hoa, thường ra thường thì ở đầu trang module, thay câu lệnh Option Compare Database nếu có bằng Option Compare Binary là OK thôi.
____________________________________________________________________________________
Thảo luận thêm tại: http://thuthuataccess.co.cc/forum
____________________________________________________________________________________
Thảo luận thêm tại: http://thuthuataccess.co.cc/forum
7/12/09
Hàm đọc số dùng mã Unicode trong Access
Report Footer luôn nằm ở cuối của trang cuối cùng
Giả sử bạn muốn đặt Textbox Txt01 luôn nằm ở cuối của trang cuối cùng. Đừng đặt nó ở Report Footer mà đặt ở Page Footer và thêm đoạn code sau :
Private Sub PageFooter_Format(Cancel As Integer, FormatCount As Integer)
if Me.Page = Me.Pages then
Me.Txt01.Visible = True
else
Me.Txt01.Visible = False
End Sub
____________________________________________________________________________________
Thảo luận thêm tại: http://thuthuataccess.co.cc/forum
Private Sub PageFooter_Format(Cancel As Integer, FormatCount As Integer)
if Me.Page = Me.Pages then
Me.Txt01.Visible = True
else
Me.Txt01.Visible = False
End Sub
____________________________________________________________________________________
Thảo luận thêm tại: http://thuthuataccess.co.cc/forum
Xử lý hiện thông báo khi không nhập dữ liệu vào texbox
Bạn sử dụng event on Lost Focus của textbox muốn ktra. Khi thoát khỏi thì check có IsNull hay kô? nếu IsNull là true thì quay lại ô đó textbox.SetFocus
Import Dữ Liệu Từ Excel Vào Access
Để nhập mới nội dung một table (trong Access) từ một tập tin Excel, ta có thể dùng một trong những cách sau đây:
5/12/09
Đăng nhập sai 5 lần chờ 15 phút
Question :Thấy các diễn đàn chỉ cho đăng nhạp 5 lần,nếu sai thì 15 phút sau mới cho đang nhập lại.Thế thì mình nghĩ ra ý tương rằng,cái này chúng ta có thể áp dụng trong Form đăng nhập được không.Điều kiện:
Đăng nhập sai 5 lần thì dù có đăng nhập đúng đi chăng nữa cũng không vào đuợc CSDL.
Đăng nhập sai 5 lần thì dù có đăng nhập đúng đi chăng nữa cũng không vào đuợc CSDL.
4/12/09
Link table từ MDB có password
TransferDatabase to open password protect database
Question : Tôi xây dựng chương trình có 2 file: 1 file để thực hiện các thao tác trên FORM và xử lý thông tin (DBSYS.mdb) và 1 file để lưu trữ dữ liệu(DBDATA.mdb)
- Để cho người khác không thể vào được các dữ liệu lưu trữ, tôi đặt pass vào file DBDATA.
- Tôi tạo biến về đường dẫn để có thể tùy ý người sử dụng thay đổi thư mục của chương trình. Khi thay đổi thư mục của chương trình, thì sẽ tự tạo lại các link đến các table trong DBDATA.
Vấn đề là: để thực hiện các lệnh link thì phải gõ pass. Nhưng mỗi một lệnh linktable, lại phải gõ pass một lần.
Các PRO xem có cách nào giúp tôi: đặt sẵn và dùng VBA tại file chính (DBSYS) có thể link table từ DBDATA mà không cần phải gõ pass không (chỉ có sử dụng lệnh trong DBSYS mới không yêu cầu pass, còn các hình thức khác đều yêu cầu pass)
Question : Tôi xây dựng chương trình có 2 file: 1 file để thực hiện các thao tác trên FORM và xử lý thông tin (DBSYS.mdb) và 1 file để lưu trữ dữ liệu(DBDATA.mdb)
- Để cho người khác không thể vào được các dữ liệu lưu trữ, tôi đặt pass vào file DBDATA.
- Tôi tạo biến về đường dẫn để có thể tùy ý người sử dụng thay đổi thư mục của chương trình. Khi thay đổi thư mục của chương trình, thì sẽ tự tạo lại các link đến các table trong DBDATA.
Vấn đề là: để thực hiện các lệnh link thì phải gõ pass. Nhưng mỗi một lệnh linktable, lại phải gõ pass một lần.
Các PRO xem có cách nào giúp tôi: đặt sẵn và dùng VBA tại file chính (DBSYS) có thể link table từ DBDATA mà không cần phải gõ pass không (chỉ có sử dụng lệnh trong DBSYS mới không yêu cầu pass, còn các hình thức khác đều yêu cầu pass)
30/11/09
Giáo Trình Access 2000
Một giáo trình hay diễn giải chi tiết,với nhiều ví dụ sinh động,dễ hiểu bằng tiếng Việt 100% của Tác giả Nguyễn Sơn Hải rất thích hợp cho các bạn mới bắt đầu lập trình CSDL, đồng thời giúp bạn làm quen với VBA( visual basic for application), một ngôn ngữ thân thiện hỗ trợ hầu hết các ứng dụng của Microsoft.
Tự động tạo CSDL Access bằng VBA
Hôm trước tôi giới thiệu các bạn cách tạo 1 file MDB mớiđể xuất dữ liệu ra đó. Hôm nay xin giới thiệu các bạn cách tạo 1 file Access mới hoàn toàn, đồng thời thông qua VBA để tạo table cùng các field trực tiếp trên đó!
23/11/09
Tạo Query tạm để xử lý dữ liệu trong VBA
Hỏi: Trước đây em tạo query bằng lưới, nên lúc nào cũng có query tồn tại trong chương trình; bây giờ em học định nghĩa query bằng VBA, để không tồn tại query trong chương trình nữa.Sau khi xử lý xong thì xóa đi
22/11/09
Tạo file Access mới và xuất dữ liệu ra đó
Đoạn code sau cho phép bạn tạo 1 file MDB mới trong cùng 1 thư mục với chương trình
Hàm thay thế chuỗi trong Access
Đôi khi bạn có nhu cầu thay 1 chuỗi này bằng 1 chuỗi khác. Khi đó bạn có thể dùng hàm Replace. Cú pháp như sau:
Replace ( string1, find, replacement, [start, [count, [compare]]] )
Replace ( string1, find, replacement, [start, [count, [compare]]] )
20/11/09
Canh Form giữa màn hình
Như các bạn biết. Mặc định Access đã cho ta thuộc tính auto Center và auto resize.
Nhưng có vẻ như nó không đáp ứng được nhu cầu của chúng ta.
Sau đây mình xin giới thiệu code canh giữa form.
Trong Sự kiện Load Form, bạn cho code sau vào:
Nhưng có vẻ như nó không đáp ứng được nhu cầu của chúng ta.
Sau đây mình xin giới thiệu code canh giữa form.
Trong Sự kiện Load Form, bạn cho code sau vào:
Private Sub Form_Load()
Const t = 567
Dim R As Integer, D As Integer, W As Integer, H As Integer
' với 10 là chieu rong cua form, tinh bang cm
W = 10 * t
' 7 la chieu cao cua form tinh bang cm
H = 7 * t
R = (Me.InsideWidth + W)
D = (Me.InsideHeight + H)
DoCmd.MoveSize R, D, W, H
End Sub
18/11/09
Lấy về số seri CPU, ổ cứng MainBoard trong Access
Đôi khi có 1 số nhu cầu lấy thông tin phần cứng trong chương trình (chẳng hạn để cấp bản quyền). Dưới đây là Đoạn Code cho phép bạn lấy thông tin CPU máy tính:
Không cho xoá File Data
Hỏi: File data muốn sử dụng thì phải share full, mà share full thì bị mần thịt là chuyện thường xuyên.
A e cho hỏi có cách nào khắc phục ko cho xoá File Data.Mdb trong môi trường nhiều người dùng. Có chương trình ngoại vi nào không cho xoá File Data mà các Client vẫn hoạt động bình thường không?
A e cho hỏi có cách nào khắc phục ko cho xoá File Data.Mdb trong môi trường nhiều người dùng. Có chương trình ngoại vi nào không cho xoá File Data mà các Client vẫn hoạt động bình thường không?
15/11/09
Nhập đường dẫn 1 file ảnh vào chương trình để lưu!
Hôm trước tôi có nêu thủ thuật Insert 1 ảnh vào form/report khi đã có đường dẫn ảnh.
Hôm nay tôi sẽ giới thiệu các bạn cách để nhập liệu đường dẫn ấy sao cho người dùng chỉ cần click chuột.
Trên form, bạn vẽ 1 textbox đặt tên là txtPic, một nút nhấn tên cmdInsertPic,1 đối tượng ảnh đặt tên là image
bạn phải tạo 1 funtcion để lấy về đường dẫn file ảnh
Hôm nay tôi sẽ giới thiệu các bạn cách để nhập liệu đường dẫn ấy sao cho người dùng chỉ cần click chuột.
Trên form, bạn vẽ 1 textbox đặt tên là txtPic, một nút nhấn tên cmdInsertPic,1 đối tượng ảnh đặt tên là image
bạn phải tạo 1 funtcion để lấy về đường dẫn file ảnh
In hình ảnh khi có đường dẫn hình
Hỏi: Tôi đã lưu hình ảnh vào ổ đĩa G: ( G: là ổ đĩa mạng). Và có 1 cơ sở dữ liệu lưu đường dẫn theo dạng : tvhinh(mahang,txtpic). Bây giờ trong Report làm sao tôi có thể vẽ lại các hình tôi đã lưu!
Đáp:
Trong Report, bạn vẽ 1 textbox đặt tên là txtpic, đặt thuộc tính visible của nó là False.
Vẽ 1 đối tượng image đặt tên nó là image1
Sau đó cho đoạn code sau vào
Đáp:
Trong Report, bạn vẽ 1 textbox đặt tên là txtpic, đặt thuộc tính visible của nó là False.
Vẽ 1 đối tượng image đặt tên nó là image1
Sau đó cho đoạn code sau vào
Tạo một đường viền cho report
Tôi muốn tạo một đường viền cho report giống như boder style của word khi in mà kô phải mất công kẻ bằng tay được ko?
Đáp:
Cho đoạn code sau vào report!
Thảo Luận vấn đề này tại đây
Đáp:
Cho đoạn code sau vào report!
Private Sub Report_Page()
On Error Resume Next
Me.DrawWidth = 6 ' do rong duong line
Me.DrawStyle = 0 ' 0 den 6 => kieu duong mat dan
' Sử dụng công thức object.Line (x1, y1) - (x2,y2), color, [Box=B]
Me.Line (0, 0)-(Me.ScaleWidth, Me.ScaleHeight), vbred, B
End Sub
Thảo Luận vấn đề này tại đây
Thiết kế Ctrình phân quyền
Phân quyền trong Access
Trong Access đã hỗi trợ phân quyền bằng cách tạo file workGroup *.mdw, *.mda. tuy nhiên cách này hơi nhiêu khê ở chỗ là máy sử dụng phải map tới file này thì mới xài được.
Vì vậy một cách khác mọi người quan tâm là phân quyền trực tiếp trong chương trình access của mình. Nếu mình post 1 đoạn chương trình lên cho mọi người tham khảo thì quá dễ dàng, nhưng điều đó không mang ý nghĩa học tập. Vì vậy, mình quyết định sẽ tiến hành Phân tích bài toán và thiết lập từng bước sao cho dễ hiểu nhất, ai biết Access cũng có thể làm được.
Trong Access đã hỗi trợ phân quyền bằng cách tạo file workGroup *.mdw, *.mda. tuy nhiên cách này hơi nhiêu khê ở chỗ là máy sử dụng phải map tới file này thì mới xài được.
Vì vậy một cách khác mọi người quan tâm là phân quyền trực tiếp trong chương trình access của mình. Nếu mình post 1 đoạn chương trình lên cho mọi người tham khảo thì quá dễ dàng, nhưng điều đó không mang ý nghĩa học tập. Vì vậy, mình quyết định sẽ tiến hành Phân tích bài toán và thiết lập từng bước sao cho dễ hiểu nhất, ai biết Access cũng có thể làm được.
Tắt Security warning của Access
Hỏi
khi mở database thì xuất hiện thông báo “Security warning Certain content in the database has been disabled” và chọn nút option thì xuất hiện tiếp bảng thông báo và phải chọn Enble this content.
Xin các bạn hướng dẫn viết code để khi sử dụng bất kỳ máy tính nào khi mở database này lên không còn xuất hiện thông báo nữa và mặc định là chọn Enble this content.
khi mở database thì xuất hiện thông báo “Security warning Certain content in the database has been disabled” và chọn nút option thì xuất hiện tiếp bảng thông báo và phải chọn Enble this content.
Xin các bạn hướng dẫn viết code để khi sử dụng bất kỳ máy tính nào khi mở database này lên không còn xuất hiện thông báo nữa và mặc định là chọn Enble this content.
Chuyển chữ thường thành chữ Hoa
Hỏi: Tôi làm chương trình qlý SV, vô ý lúc nhập tên toàn nhập chữ thường, tôi muốn tạo một hàm có thể in hoa tất cả mẫu tự đầu của từng từ trong trường văn bản thì phải làm như thế nào?
Trả lời: Hàm của bạn làm như sau:
Function Inhoachucaidau (Word as Variant) as String
Dim temp as string, C as string, OldC as String, X as integer
If IsNull(Word) then
Exit Function
Else
Trả lời: Hàm của bạn làm như sau:
Function Inhoachucaidau (Word as Variant) as String
Dim temp as string, C as string, OldC as String, X as integer
If IsNull(Word) then
Exit Function
Else
Thay thế báo lỗi tiếng Anh bằng tiếng Việt
Thường khi thao tác với Access, bạn hay gặp các câu báo lỗi bằng tiếng Anh, thay vào đó, bạn muốn khi gặp lỗi tương tự thì phải báo bằng tiếng Việt.
Ta làm như sau:
1) Đầu tiên bạn download file AccessAndJetErrors.zip từ :
http://www.access-programmers.co.uk/...1&d=1055362440
Giải nén và mở file AccessAndJetErrors.mdb, mở table tAccessAndJetErrors bạn sẽ thấy table này có 2 Field : ErrorCode và ErrorString. Table này liệt kê hầu hết các lỗi của Access, Ví dụ : bạn tìm trong table này record có ErrorCode là 2113 sẽ thấy ErrorString chính là câu báo lỗi trên.
Ta làm như sau:
1) Đầu tiên bạn download file AccessAndJetErrors.zip từ :
http://www.access-programmers.co.uk/...1&d=1055362440
Giải nén và mở file AccessAndJetErrors.mdb, mở table tAccessAndJetErrors bạn sẽ thấy table này có 2 Field : ErrorCode và ErrorString. Table này liệt kê hầu hết các lỗi của Access, Ví dụ : bạn tìm trong table này record có ErrorCode là 2113 sẽ thấy ErrorString chính là câu báo lỗi trên.
14/11/09
Code Kiểm tra sự tồn tại của 1 file trong Access
' kiem tra su ton tai file
Function FileExit(fname As String) As Boolean
If Dir(fname) <> "" Then
FileExit = True
Else
FileExit = False
End If
End Function
Gắn một số phím tắt cho các command button
Hỏi: Tôi muốn gắn một số phím tắt cho các command button trên form để khi bấm phím tắt đó, các câu lệnh sẽ được thực hiện.( cach tao 1 autokeys trong access )
Đáp:
Bạn có thể cài shotcut key bằng cách chọn 1 ký tự trong caption của các button. Và thêm ký tự "&" trước ký tự đó. Khi bạn nhấn ALT + ký tự. Nó sẽ là shotcut key.
Ví dụ nút OK thì bạn viết : &OK
Shotcutkey sẽ là ALT+O
Đáp:
Bạn có thể cài shotcut key bằng cách chọn 1 ký tự trong caption của các button. Và thêm ký tự "&" trước ký tự đó. Khi bạn nhấn ALT + ký tự. Nó sẽ là shotcut key.
Ví dụ nút OK thì bạn viết : &OK
Shotcutkey sẽ là ALT+O
Code kiểm tra sự tồn tại của table
Public Function KIEMTRA(TableName As String)As Boolean ' Khai báo biến cục bộ truy xuất đến Database Access Dim DB As Database ' Biến N lưu trữ số Tables của Database (dùng Byte là đủ) Dim N As Byte ' Biến i để duyệt qua từng Table Dim i As Byte ' Khởi tạo biến DB Set DB = DBEngine.Workspaces(0).Databases(0) ' Lấy số Tables có trong Database n = DB.TableDefs.Count ' Duyệt tuần tự từng Table For i = 0 To n - 1 ' Nếu tên Table thứ i bằng với tên Table muốn tìm If DB.TableDefs(i).Name = TableName Then ' Hàm trả về giá trị TRUE KIEMTRA = True ' Thoát khỏi hàm Exit Function End If ' Chuyển qua Table kế Next i ' Nếu ra khỏi vòng lặp mà vẫn chưa tìm thấy thì hàm trả về False KIEMTRA = False End Function____________________________________________________________________________________
Thảo luận thêm tại: http://thuthuataccess.co.cc/forum
Hàm Tách Tên, Họ trong Access
Mình xin giới thiệu 1 hàm tự tách tên, họ trong Access:
Public Function Split(Ten As String, Kieu As Byte)
Dim bytSpace As Byte
bytSpace = InStrRev(Ten, " ", -1)
If bytSpace = 0 Then
Split = Ten
Exit Function
End If
If Kieu = 0 Then
Split = Right(Ten, Len(Ten) - bytSpace)
Else
Split = Left(Ten, bytSpace - 1)
End If
End Function
Dim bytSpace As Byte
bytSpace = InStrRev(Ten, " ", -1)
If bytSpace = 0 Then
Split = Ten
Exit Function
End If
If Kieu = 0 Then
Split = Right(Ten, Len(Ten) - bytSpace)
Else
Split = Left(Ten, bytSpace - 1)
End If
End Function
13/11/09
Xoá các table theo điều kiện trong Access
Hỏi: Tromg file MDB của em có nhiều table để lưu dữ liệu của các năm khác nhau. EM chỉ muốn lưu 3 năm gần nhất thôi. Ví dụ: năm nay là 2009, em chỉ cần lưu dữ liệu của 2007, 2008, 2009; năm tới 2010: chỉ lưu 2008, 2009, 2010.
Em muốn tự khi lưu dữ liệu ngày đầu tiên của năm mới, thì table từ 3 năm về trước sẽ tự động bị xoá đi. Cụ thể: ngày 01/01/2010, em lưu dữ liệu thì table lưu dữ liệu của 2007 bị xoá đi.
Đồng thời, em muốn xoá table với điều kiện nó tồn tại: Cụ thể: câu lệnh để thực hiện:
Nếu tableA có trong MDB thì xoá tableA
Các bác cho em xin đoạn code nhé
Em muốn tự khi lưu dữ liệu ngày đầu tiên của năm mới, thì table từ 3 năm về trước sẽ tự động bị xoá đi. Cụ thể: ngày 01/01/2010, em lưu dữ liệu thì table lưu dữ liệu của 2007 bị xoá đi.
Đồng thời, em muốn xoá table với điều kiện nó tồn tại: Cụ thể: câu lệnh để thực hiện:
Nếu tableA có trong MDB thì xoá tableA
Các bác cho em xin đoạn code nhé
11/11/09
Upsize Access lên MS SQL server
Theo thực tế 1 database Access còn rất nhiều hạn chế về :
_ Phân quyền sử dụng.
_ Sử dụng tối đa 10 users .
_ Quản lý và lưu vết user đã ghi/đọc/xóa ...
Trong cuộc sống náo nhiệt, môi trường sử dụng phần mềm quản lý khá phong phú đa dạng với nhiều ngôn ngữ lập trình khác nhau. Đối với việc sử dụng database trong một mạng Lan cũng rất phổ biến.
Nay mình có 1 datbase access quản lý hồ sơ muốn share cho mọi người dùng chung mạng Lan, qua việc đọc 1 số bài hướng dẫn sơ lược và có đề cập đưa database Access lên SQL Server để quản lý cao hơn, chuyên nghiệp hơn.
Mong Noname và các bạn hướng dẫn cụ thể và có hình ảnh minh họa về việc đưa database Access lên SQL Sever, đây cũng là vấn đề khó giải quyết và nóng bỏng nhất đối với các bạn khác. Chân thành cảm ơn
_ Phân quyền sử dụng.
_ Sử dụng tối đa 10 users .
_ Quản lý và lưu vết user đã ghi/đọc/xóa ...
Trong cuộc sống náo nhiệt, môi trường sử dụng phần mềm quản lý khá phong phú đa dạng với nhiều ngôn ngữ lập trình khác nhau. Đối với việc sử dụng database trong một mạng Lan cũng rất phổ biến.
Nay mình có 1 datbase access quản lý hồ sơ muốn share cho mọi người dùng chung mạng Lan, qua việc đọc 1 số bài hướng dẫn sơ lược và có đề cập đưa database Access lên SQL Server để quản lý cao hơn, chuyên nghiệp hơn.
Mong Noname và các bạn hướng dẫn cụ thể và có hình ảnh minh họa về việc đưa database Access lên SQL Sever, đây cũng là vấn đề khó giải quyết và nóng bỏng nhất đối với các bạn khác. Chân thành cảm ơn
Giáo Trình Access
Giáo trình Access DHSPHN
_____________________________________________________________
Thảo luận thêm: http://thuthuataccess.com/forum
_____________________________________________________________
Thảo luận thêm: http://thuthuataccess.com/forum
Hiện thông báo không có dữ liệu khi in report
Cho mình hỏi: Mình tạo 1 form in từ ngày đến ngày,
nếu trong điều kiện đó mà reprt kô có dữ liệu thì hiện ra 1 câu thông báo tại form luôn và kô hiện ra report.
Đáp:
Bất cứ report nào cũng có record source đúng không, thường là 1 query/table.
Như vậy vấn đề ở đây là bạn kiểm tra query/table xem có record nào không, nếu không có=> gởi thông báo.
Nếu có thì cho in report. Đơn giản vậy thôi
nếu trong điều kiện đó mà reprt kô có dữ liệu thì hiện ra 1 câu thông báo tại form luôn và kô hiện ra report.
Đáp:
Bất cứ report nào cũng có record source đúng không, thường là 1 query/table.
Như vậy vấn đề ở đây là bạn kiểm tra query/table xem có record nào không, nếu không có=> gởi thông báo.
Nếu có thì cho in report. Đơn giản vậy thôi
Chương trình Quản Lý tiệm bán máy vi tính
http://duyeagle.googlepages.com/ChuongTrinh.rar
____________________________________________________________________________________
Thảo luận thêm tại: http://thuthuataccess.co.cc/forum
____________________________________________________________________________________
Thảo luận thêm tại: http://thuthuataccess.co.cc/forum
Tính Toán thời gian giữa hai thời điểm với dateiff
Đôi khi bạn có nhu cầu tính số ngày, số tháng, số quý giữa hai thời kỳ nhằm phục vụ báo cáo.Cụ thể tính tiền trợ cấp hoặc bảo hiểm xã hội!
Mình xin giới thiệu hàm: DateIff( loại, từ ngày, đến ngày)
bạn dùng hàm datediff("d", date1, date2) để tính số ngày
bạn dùng hàm datediff("m", date1, date2) để tính số tháng
bạn dùng hàm datediff("q", date1, date2) để tính số quý ....
Mình xin giới thiệu hàm: DateIff( loại, từ ngày, đến ngày)
bạn dùng hàm datediff("d", date1, date2) để tính số ngày
bạn dùng hàm datediff("m", date1, date2) để tính số tháng
bạn dùng hàm datediff("q", date1, date2) để tính số quý ....
Tạo chương trình trắc nghiệm bằng Access
Tôi xin trình bày một ví dụ đơn giản nhưng rất cơ bản để từ đó bạn có thể tự "chíp" theo ý đồ của mình. Ví dụ: số câu hỏi cho mỗi lần trắc nghiệm là 30 (được chọn ngẫu nhiên từ ngân hàng câu hỏi), chọn 1 trong 4 đáp án.
Giả sử ứng dụng Access có tên là DataTN.MDB. Bạn tạo một table có tên NganHangCauHoi để chứa ngân hàng các câu hỏi, có cấu trúc như bảng 1. Bảng này chứa số lượng không hạn chế các câu hỏi, mỗi câu hỏi được đánh số tự động, và có 4 mục tin (TraLoi1, TraLoi2, TraLoi3, TraLoi4) chứa nội dung 4 câu trả lời mà thí sinh có thể chọn. Mục tin DapAnDung chứa số thứ tự (từ 1 đến 4) của câu trả lời đúng. Mục tin DaDuocChon dùng để đánh dấu câu hỏi nào đã được chọn trong quá trình lựa chọn ngẫu nhiên 30 câu hỏi dùng cho bộ đề. Bạn cần phải thiết kế một form để nhập liệu vào bảng này.
Giả sử ứng dụng Access có tên là DataTN.MDB. Bạn tạo một table có tên NganHangCauHoi để chứa ngân hàng các câu hỏi, có cấu trúc như bảng 1. Bảng này chứa số lượng không hạn chế các câu hỏi, mỗi câu hỏi được đánh số tự động, và có 4 mục tin (TraLoi1, TraLoi2, TraLoi3, TraLoi4) chứa nội dung 4 câu trả lời mà thí sinh có thể chọn. Mục tin DapAnDung chứa số thứ tự (từ 1 đến 4) của câu trả lời đúng. Mục tin DaDuocChon dùng để đánh dấu câu hỏi nào đã được chọn trong quá trình lựa chọn ngẫu nhiên 30 câu hỏi dùng cho bộ đề. Bạn cần phải thiết kế một form để nhập liệu vào bảng này.
Làm sổ quỹ trong Access
Em muốn làm trình kế toán với số liệu thu chi và quỹ còn lại . Ví dụ như sau:
STT___Thu___Chi_______Quỹ còn lại______Diễn giải
1_____0_____100_______500____________mua vật tư
2_____200___0_________700____________kế hoạch a
3_____300___0_________1000___________kế hoạch b
Quỹ còn lại 3 = [quỹ còn lại 2] + [thu 2] - [chi 2]
Bác nào biết cách làm hướng dẫn chi tiết dùm em với, em làm query trong MS Access.
STT___Thu___Chi_______Quỹ còn lại______Diễn giải
1_____0_____100_______500____________mua vật tư
2_____200___0_________700____________kế hoạch a
3_____300___0_________1000___________kế hoạch b
Quỹ còn lại 3 = [quỹ còn lại 2] + [thu 2] - [chi 2]
Bác nào biết cách làm hướng dẫn chi tiết dùm em với, em làm query trong MS Access.
Không in số 0 trong report
Khi in 1 trường bằng số thì format #,### sẽ không in nếu dữ liệu bằng 0.
- format : #,###.## : 0 không in ra nhưng 300.00 thì in ra 300. (có 2 khoản trắng phía sau)
- format #,###.00 : 0 thì in ra 0.00; 300.15 in ra 300.15 (đúng)
Mình muốn format trường số với 2 số lẻ (ví dụ trường Ngoại tệ USD) khi dữ liệu bằng 0 sẽ không in ra nếu có dữ liệu thì sẽ in ra với 2 số lẻ:
- format : #,###.## : 0 không in ra nhưng 300.00 thì in ra 300. (có 2 khoản trắng phía sau)
- format #,###.00 : 0 thì in ra 0.00; 300.15 in ra 300.15 (đúng)
Mình muốn format trường số với 2 số lẻ (ví dụ trường Ngoại tệ USD) khi dữ liệu bằng 0 sẽ không in ra nếu có dữ liệu thì sẽ in ra với 2 số lẻ:
Msgbox dùng Unicode Tiếng việt
Gần đây 1 số bạn ở các forum hay hỏi làm cách nào để hiện câu thông báo kiểu msgbox bằng tiếng Việt.
Có 1 số bạn hướng dẫn theo nhiều cách, tuy nhiên mình thấy vẫn chưa hợp lý:
- Cách 1: chỉnh Regional and Language Options thành Tiếng Việt.
Cách này chưa hợp lý ở kiểu gõ và sẽ bị lỗi ở hệ thống bàn phím dùng số.
- Cách 2: thay đổi font hệ thống trong thẻ Appearance. Chuyển thành font TCVN3 hay VNI. Sau khi đóng chương trình, hệ thống sẽ trả về lại như cũ.
Có 1 số bạn hướng dẫn theo nhiều cách, tuy nhiên mình thấy vẫn chưa hợp lý:
- Cách 1: chỉnh Regional and Language Options thành Tiếng Việt.
Cách này chưa hợp lý ở kiểu gõ và sẽ bị lỗi ở hệ thống bàn phím dùng số.
- Cách 2: thay đổi font hệ thống trong thẻ Appearance. Chuyển thành font TCVN3 hay VNI. Sau khi đóng chương trình, hệ thống sẽ trả về lại như cũ.
10/11/09
Tự động liên kết các table
Tôi có một cơ sở dữ liệu Access và thực hiện split thành backend
File QLVB đặt trong thư mục Run (thư mục Run nằm trong thư mục QLVB) chứa form, repost, ...
File QLVB_en đặt trong thư mục Data (thư mục Data trong thư mục QLVB) chứa các table
Khi tôi di chuyển (hoặc đồng bộ) thư mục QLVB (từ USB vào máy và ngược lại) là các liên kết của các table không còn nữa.
Bạn nào rành về Access có thể viết đoạn mã giúp tôi tự động nối lại các liên kết đó không.
File QLVB đặt trong thư mục Run (thư mục Run nằm trong thư mục QLVB) chứa form, repost, ...
File QLVB_en đặt trong thư mục Data (thư mục Data trong thư mục QLVB) chứa các table
Khi tôi di chuyển (hoặc đồng bộ) thư mục QLVB (từ USB vào máy và ngược lại) là các liên kết của các table không còn nữa.
Bạn nào rành về Access có thể viết đoạn mã giúp tôi tự động nối lại các liên kết đó không.
thao tác với registry
Đôi khi bạn có nhu cầu làm việc với registry trong Access, ví dụ lưu vị trí form, lưu đường dẫn mặc định để lấy dữ liệu. Hoặc lưu username mặc định, kiểm tra 1 computer có phải lần đầu tiên sử dụng chương trình không... Mọi việcsẽ dễ dàng hơn nhiều nếu bạn thao tác với registry....
Chặn xoay chuột để tới lui record
Chặn xoay chuột để tới lui record
Thiết kết trên Form mình đã tắc Record Selector để không cho tới lui các Record đã nhập trước đó, nhưng khi dùng nút giữa xoay chuột nó vẫn chạy tới lui.
Hỏi: Làm sao để chặn thao tác xoay chuột "Cuộn lên xuống bằng nút xoay trên Mouse".
Thiết kết trên Form mình đã tắc Record Selector để không cho tới lui các Record đã nhập trước đó, nhưng khi dùng nút giữa xoay chuột nó vẫn chạy tới lui.
Hỏi: Làm sao để chặn thao tác xoay chuột "Cuộn lên xuống bằng nút xoay trên Mouse".
Lệnh Tạm ngưng trong Access
Trong Access, khi bạn cần tạm ngưng chương trình trong một khoảng thời gian nào đó trước khi thực hiện lệnh mới. Ta dùng hàm Sleep. Để sử dụng được hàm này, ta khai báo :
Public Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
Và sử dụng:
Sleep (5000)
để tạm ngưng 5 giây!
Thảo luận thêm tại: http://thuthuataccess.co.cc/forum
Lấy về tên của máy tính đang dùng:
Lấy về tên của máy tính đang dùng:
Environ("ComputerName")
Ứng dụng bạn có thể phân quyền cho user cụ thể nào đó như chief accountant...hoặc vị trí cố định mà bắt buộc phải dùng PC đó mới có thể chạy được Module.
Đơn giản hơn là trong hành động Form Load, bạn chào hỏi bằng hàm này:
msgbox "Hello " & Environ("ComputerName")
Environ("ComputerName")
Ứng dụng bạn có thể phân quyền cho user cụ thể nào đó như chief accountant...hoặc vị trí cố định mà bắt buộc phải dùng PC đó mới có thể chạy được Module.
Đơn giản hơn là trong hành động Form Load, bạn chào hỏi bằng hàm này:
msgbox "Hello " & Environ("ComputerName")
Tạo đồng hồ trong Access
Đó hỏi: Có cách nào để tạo đồng hồ trong chương trình Access (dưới dạng text box chẳng hạn) đồng bộ với đồng hồ máy tính?
Đây trả lời: Bạn có thể sử dụng thuộc tính Timer Interval và thủ tục xử lý tình huống OnTimer. Cụ thể, trên form vẽ một text box có tên txtDongHo. Gán trị 1000 cho thuộc tính Timer Interval của form, rồi gõ đoạn mã 1 vào thủ tục xử lý tình huống OnTimer của form.
Đoạn mã 1
Private Sub Form_Timer()
txtDongHo = Format(Hour(Time()), "00") & ":" & _
Format(Minute(Time()), "00") & ":" & _
Format(Second(Time()), "00")
End Sub
CHƯƠNG CAN CHÍP
theo echip [right] Nguồn Từ : Khoa Học Phổ Thông.
Website : http://www.khoahocphothong.net [/right]
Thảo luận thêm tại: http://thuthuataccess.com/forum
Tạo report có chiều cao co dãn theo dữ liệu
Trong khi làm report. Có những dữ liệu vượt quá chiều ngang của field trình bày. Nhưng nếu ta set cho field đó có khả năng can grow thì nó sẽ nhảy dòng, làm lệch các khung ta đã canh chỉnh.Những người có kinh nghiệm giải quyết bằng cách chừa 1 khoảng trống đủ lớn để không bị "rớt dòng" đại loại như thế! Tuy nhiên, nếu không có dữ liệu nào thừa rớt dòng thì khoảng trống đó lãng phí trong report!
Vấn đề đặt ra là làm cách nào để report có thể tự do dãn chiều cao ở mỗi dòng khác nhau cho phù hợp với dữ liệu
Vấn đề đặt ra là làm cách nào để report có thể tự do dãn chiều cao ở mỗi dòng khác nhau cho phù hợp với dữ liệu
Mở nút Close(x) khi đã khóa
Hỏi: Theo hướng dẫn trên, tôi đã khoa nút close , giờ muốn mở lại thì làm thế nào?
Đáp:
Bạn tạo 1 Module mới với nội dung sau:
Trong form Admin hãy tạo 1 nút để gọi hàm UnHideAccessCloseButton nhấn nút và đóng lại rồi xem kết quả nhé!
____________________________________________________________________________________
Thảo luận thêm tại: http://thuthuataccess.co.cc/forum
Đáp:
Bạn tạo 1 Module mới với nội dung sau:
Code:
Private Const GWL_EXSTYLE = (-20) Private Const GWL_STYLE = (-16) Private Const WS_MAXIMIZEBOX = &H10000 Private Const WS_MINIMIZEBOX = &H20000 Private Const WS_SYSMENU = &H80000 Private Const HWND_TOP = 0 Private Const SWP_NOMOVE = &H2 Private Const SWP_NOSIZE = &H1 Private Const SWP_FRAMECHANGED = &H20 Private Const SWP_DRAWFRAME = SWP_FRAMECHANGED Private Declare Function SetWindowLong Lib "user32" _ Alias "SetWindowLongA" (ByVal hwnd As Long, _ ByVal nIndex As Long, ByVal dwNewLong As Long) _ As Long Private Declare Function GetWindowLong Lib "user32" _ Alias "GetWindowLongA" (ByVal hwnd As Long, _ ByVal nIndex As Long) As Long Private Declare Function SetWindowPos Lib "user32" _ (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _ ByVal x As Long, ByVal y As Long, ByVal cx As Long, _ ByVal cy As Long, ByVal wFlags As Long) As Long Sub UnHideAccessCloseButton() Dim lngStyle As Long lngStyle = GetWindowLong(hWndAccessApp, GWL_STYLE) lngStyle = lngStyle Or WS_SYSMENU Call SetWindowLong(hWndAccessApp, GWL_STYLE, lngStyle) Call SetWindowPos(hWndAccessApp, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_DRAWFRAME) End Sub
____________________________________________________________________________________
Thảo luận thêm tại: http://thuthuataccess.co.cc/forum
Khóa phím close trong Access
Hỏi: Tôi đã cung cấp cho người dùng nút đóng trên chương trình Access của tôi và kh6ong muốn họ dùng nút nhất close(x) sẵn của Windows thì phải làm thế nào!
Đáp:
Bạn có thể ẩn nút close bằng đoạn code sau:
Đáp:
Bạn có thể ẩn nút close bằng đoạn code sau:
Code:
Private Const GWL_EXSTYLE = (-20) Private Const GWL_STYLE = (-16) Private Const WS_MAXIMIZEBOX = &H10000 Private Const WS_MINIMIZEBOX = &H20000 Private Const WS_SYSMENU = &H80000 Private Const HWND_TOP = 0 Private Const SWP_NOMOVE = &H2 Private Const SWP_NOSIZE = &H1 Private Const SWP_FRAMECHANGED = &H20 Private Const SWP_DRAWFRAME = SWP_FRAMECHANGED Private Declare Function SetWindowLong Lib "user32" _ Alias "SetWindowLongA" (ByVal hwnd As Long, _ ByVal nIndex As Long, ByVal dwNewLong As Long) _ As Long Private Declare Function GetWindowLong Lib "user32" _ Alias "GetWindowLongA" (ByVal hwnd As Long, _ ByVal nIndex As Long) As Long Private Declare Function SetWindowPos Lib "user32" _ (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _ ByVal x As Long, ByVal y As Long, ByVal cx As Long, _ ByVal cy As Long, ByVal wFlags As Long) As Long Sub HideAccessCloseButton() Dim lngStyle As Long lngStyle = GetWindowLong(hWndAccessApp, GWL_STYLE) lngStyle = lngStyle And Not WS_SYSMENU Call SetWindowLong(hWndAccessApp, GWL_STYLE, lngStyle) Call SetWindowPos(hWndAccessApp, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_DRAWFRAME) End Sub
Khoá phím ctrl-F4 và Alt-F4 , shift
1) Khoá phím ctrl-F4 và Alt-F4
Ý tưởng của hungtano
Bạn tạo 1 macro tên AutoKeys,
- ở cột Macro Name, bạn điền ^{F4}, ở cột Action bạn chọn Msgbox, ở phần dưới Action Argument bạn tạo 1 thông báo "Phím này đã bị khóa"
- ở cột Macro Name, bạn điền %{F4}, ở cột Action bạn chọn Msgbox, ở phần dưới Action Argument bạn tạo 1 thông báo "Phím này đã bị khóa"
2) Phím shisft có công dụng gì ? sao lại khoá phím shift ?
Khi viết xong 1 chương trình trên Access, khi đưa vào sử dụng bạn phải giấu cửa sổ database. Phím shift có công dụng mở cửa sổ database để xem các object của chuơng trình như table, macro, query, ...Để tránh không cho users mở cửa sổ database "quậy phá" các object của CT, người ta phải khóa phím shift. [right] Nguồn Từ : Khoa Học Phổ Thông.
Website : http://www.khoahocphothong.net [/right]
Ý tưởng của hungtano
Bạn tạo 1 macro tên AutoKeys,
- ở cột Macro Name, bạn điền ^{F4}, ở cột Action bạn chọn Msgbox, ở phần dưới Action Argument bạn tạo 1 thông báo "Phím này đã bị khóa"
- ở cột Macro Name, bạn điền %{F4}, ở cột Action bạn chọn Msgbox, ở phần dưới Action Argument bạn tạo 1 thông báo "Phím này đã bị khóa"
2) Phím shisft có công dụng gì ? sao lại khoá phím shift ?
Khi viết xong 1 chương trình trên Access, khi đưa vào sử dụng bạn phải giấu cửa sổ database. Phím shift có công dụng mở cửa sổ database để xem các object của chuơng trình như table, macro, query, ...Để tránh không cho users mở cửa sổ database "quậy phá" các object của CT, người ta phải khóa phím shift. [right] Nguồn Từ : Khoa Học Phổ Thông.
Website : http://www.khoahocphothong.net [/right]
Đánh Số Thứ Tự Cho report
Hỏi:
Báo cáo của tôi có rất nhiều dòng, tôi muốn đánh số thứ tự cho mỗi record thì phải làm sao?
Đáp:
Trong phần detail của report, tạo một text box.
Vô Properties của textbox đó,nhảy qua tab Data, đặt thuộc tính Control Source là =1, Thuộc tính runing Sum là Over All. Hehe , nó sẽ đánh số thứ tự toàn bộ các phần tử.
Nếu chỉ muốn đánh số thú tự trong 1 Group thì chon Over Group
Hình minh Họa:
Chúc may mắn!
Báo cáo của tôi có rất nhiều dòng, tôi muốn đánh số thứ tự cho mỗi record thì phải làm sao?
Đáp:
Trong phần detail của report, tạo một text box.
Vô Properties của textbox đó,nhảy qua tab Data, đặt thuộc tính Control Source là =1, Thuộc tính runing Sum là Over All. Hehe , nó sẽ đánh số thứ tự toàn bộ các phần tử.
Nếu chỉ muốn đánh số thú tự trong 1 Group thì chon Over Group
Hình minh Họa:
Chúc may mắn!
Phục Hồi Table lỡ xóa
Trả lời: Ý tưởng đặt ra là ta sẽ tìm lại table bi xóa trong những file ~templete (được tạo ra khi access dang chạy). Bạn tạo một command button phuchoi gọi lệnh UndeleteTable () như sau nhé:
Private sub phuchoi_click ()
Call UnDeleteTable ()
End sub
Private sub phuchoi_click ()
Call UnDeleteTable ()
End sub
Enable phím shift khi lỡ chạy module khóa mà quên viết module mở khóa
(bài này là ý tưởng của bạn hungtano)
Hỏi:
Tôi đã xây dựng xong CT nhân sự (C:\QLNS.mdb). Tôi tạo 1 custom menu bar, giấu đi Main menu của Access, tạo form startup, disable phím Shift để không ai có thể mở được cửa sổ database. Sau một thời gian CT bị lỗi nhưng hỡi ơi tôi lại quên viết code enable phím Shift nên không tài nào mở của sổ database, mở cửa sổ viết code để sửa lại CT. Tôi phải làm sao đây ?
Đáp:
Rất đơn giản, bạn tạo 1 file .mdb mới , viết code để can thiệp vào file QLNS.mdb, enable phím Shift.
Cách làm:
Trong file .mdb mới, bạn tạo 1 form, tạo 1 command button và :
Hỏi:
Tôi đã xây dựng xong CT nhân sự (C:\QLNS.mdb). Tôi tạo 1 custom menu bar, giấu đi Main menu của Access, tạo form startup, disable phím Shift để không ai có thể mở được cửa sổ database. Sau một thời gian CT bị lỗi nhưng hỡi ơi tôi lại quên viết code enable phím Shift nên không tài nào mở của sổ database, mở cửa sổ viết code để sửa lại CT. Tôi phải làm sao đây ?
Đáp:
Rất đơn giản, bạn tạo 1 file .mdb mới , viết code để can thiệp vào file QLNS.mdb, enable phím Shift.
Cách làm:
Trong file .mdb mới, bạn tạo 1 form, tạo 1 command button và :
Private Sub EnableSHIFTButton_Click()Thảo luận thêm: http://thuthuataccess.com/forum
On Error GoTo ErrHandler
Dim db As Database
Dim ThuocTinh As Property
Set db = OpenDatabase("C:\QLNS.mdb")
db.Properties("AllowBypassKey") = True
Set db = Nothing
Exit Sub
ErrHandler:
MsgBox Err.Number
If Err.Number = 3270 Then ' Property not found.
Set ThuocTinh = db.CreateProperty("AllowBypassKey", dbBoolean, True)
db.Properties.Append ThuocTinh
Resume Next
Else
MsgBox Err.Description
End If
End Sub
nén file Access bằng VBA
Bình thường,khi mà các câu lệnh Make, Append, delete thực hiện nhiều lần thì file access của bạn sẽ phình to không tưởng tượng được, có khi lên tới hàng GB, để nén access ta vào menu tool-->database Ulities-->Compact and repair Database
Nhưng đôi khi chúng ta cần thực hiện điều đó bằng VBA vì đã khóa Menu, thay bằng customise menu, hoặc với mục đích thân thiện với người dùng chỉ trên một nút nhấn.
hãy copy đoạn code sau của tác giả Juan M. Afan de Ribera để làm điều đó
Code:
' ***** Code Start ***** Public Sub CompactDB() CommandBars("Menu Bar"). _ Controls("Tools"). _ Controls("Database utilities"). _ Controls("Compact and repair database..."). _ accDoDefaultAction End Sub ' ***** Code End *****
Website : http://www.khoahocphothong.net [/right]
Hiện duy nhất một cửa sổ khi mở nhiều form
Trích:
Các bạn giúp mình với, làm sao khi mở một From VD From này la From Main, trong From Main này có các Nút lệnh để mở các From khác. Thì làm sao khi mở một From khác thì trên Takbar không xuất hiện From này mà vẩn còn From Main hiện diện trên Taskbar. Vì nếu tôi mở nhiều Fron trên một chương trình thì Taskbar sẻ đầy. |
Bỏ dấu check ở mục Windows on Taskbar. khi đó trên Task bar chỉ còn duy nhất 1 màn hình Access thôi, bạn thư nhé.
----------------------
sanyovietnam in MaNguon
Trích:
Nguyên văn bởi hungtano Bổ sung : Vì Access luôn chọn Check box Windows on Taskbar = True (default) nên nếu đem file mdb của bạn sang máy khác thì sẽ gặp lại trường hợp nhiều cửa sổ trên taskbar. Cách tổng quát hơn : Khi mở form Startup bạn thêm dòng lệnh : Private Sub Form_Open(Cancel As Integer) Application.SetOption "ShowWindowsInTaskbar", False End Sub Xem thêm : http://msdn.microsoft.com/library/de...baloptions.asp |
Website : http://www.khoahocphothong.net [/right]
Thảo luận thêm: http://thuthuataccess.co.cc/forum
Kiểm tra 1 form trong chương trình đã được mở hay chưa!
Trong access, đôi khi bạn cần kiểm tra một form có đang load hay chưa để lấy về thông số, tránh động tác thừa vì đôi khi load lên một form dạng bảng, có nhiều đối tượng là rất lâu.
Function dưới đây sẽ giúp bạn giải quyết vấn đề đó một cách dễ dàng
Code:
Function fIsLoaded(ByVal strFormName As String) As Boolean 'Giá trị trả về là 0 nếu chưa mở, -1 là đã mở rồi If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> 0 Then If Forms(strFormName).CurrentView <> 0 Then fIsLoaded = True End If End If End Function '****** Code End ********
Website : http://www.khoahocphothong.net [/right]
Xuống dòng trong Msgbox
Access 97 trở về trước khi xuống dòng dùng ký tự @. Access gần đây dùng vbCrLf để xuống dòng. Việc chủ động xuống dòng trong Msgbox giúp hiển thị thông báo rõ ràng hơn.
MsgBox "1. Hello!" & vbCrLf & "2. Xin chào các bạn!" & vbCrLf & "3. Seeuagain!", vbInformation, "Message"
Thảo luận thêm: http://thuthuataccess.com/forum
MsgBox "1. Hello!" & vbCrLf & "2. Xin chào các bạn!" & vbCrLf & "3. Seeuagain!", vbInformation, "Message"
Thảo luận thêm: http://thuthuataccess.com/forum
Export dữ liệu ra excel
Không phải mọi thứ Access đều có thể giúp được bạn, đôi khi phải vận dụng linh hoạt với Excel.
Câu lệnh Export một đối tượng Access ra Excel
DoCmd.OutputTo Kiểu đối tượng, "tên đối tượng", "MicrosoftExcelBiff8(*.xls)", "", True, "", 0
Ví dụ bạn đẩy một query tên là DThutheothang ra excel:
DoCmd.OutputTo acQuery, "DThutheothang", "MicrosoftExcelBiff8(*.xls)", "", True, "", 0
Thảo luận thêm ở:Diễn đàn Access
Câu lệnh Export một đối tượng Access ra Excel
DoCmd.OutputTo Kiểu đối tượng, "tên đối tượng", "MicrosoftExcelBiff8(*.xls)", "", True, "", 0
Ví dụ bạn đẩy một query tên là DThutheothang ra excel:
DoCmd.OutputTo acQuery, "DThutheothang", "MicrosoftExcelBiff8(*.xls)", "", True, "", 0
Thảo luận thêm ở:Diễn đàn Access
Convert Null thành zero
Khi bạn phải cộng trừ với 1 giá trị rỗng, lập tức sẽ bị báo lỗi dữ liệu. Nhất là trường hợp các bạn dùng left join sẽ bị cộng khi bên kia không tìm thấy khóa. Vì vậy một mẹo nhỏ là bạn tạo một hàm đển convert giá trị null thành số 0. Sau đó, mỗi khi cộng trừ nhân chia thì ta thêm trước field đó dòng NZ([field chứa giá trị])
Convert Null-Zero
[right] Nguồn Từ : Khoa Học Phổ Thông.
Website : http://www.khoahocphothong.net [/right]
Thảo luận thêm: http://thuthuataccess.com/forum
Convert Null-Zero
Trích:
Function NZ(anyValue As Variant) As Variant NZ = IIf(IsNull(anyValue), 0, anyValue) End Function |
Website : http://www.khoahocphothong.net [/right]
Ký Tự xuống dòng trong SQL
Hỏi
Cho tôi hỏi khi mình nhập bằng textare có ký bấm enter để xuống dòng vậy phim enter này lưu xuống SQl bằng ký tự gì vậy? bạn nào biết chỉ dùm nha, tôi đã dùng thử "\n" nhưng không đúng
Đáp
[right] Nguồn Từ : Khoa Học Phổ Thông.
Website : http://www.khoahocphothong.net [/right]
Thảo luận thêm: http://thuthuataccess.com/forum
Cho tôi hỏi khi mình nhập bằng textare có ký bấm enter để xuống dòng vậy phim enter này lưu xuống SQl bằng ký tự gì vậy? bạn nào biết chỉ dùm nha, tôi đã dùng thử "\n" nhưng không đúng
Đáp
Trích:
Nguyên văn bởi huynhvantham Nó là kết hợp 2 ký tụ: CHAR(13) và CHAR(10) Ví dụ bạn muốn Insert: Chạy trong Sql Query: In sert into tablename(firstname,lastname) values('Nguyen' + CHAR(13) + CHAR(10) + 'Van', 'A') Nếu bạn dùng TEXTAREA thì khi insert vào database thì bạn không cần phài thêm ký tụ xuống dòng. Vì TEXTAREA nó đả hổ trợ bạn chỉ cần gán giá trị của TEXTAREA cho Field dưới database là ok. |
Website : http://www.khoahocphothong.net [/right]
Tạo Dòng Chữ chạy trên form
Hỏi
Tạo dòng chữ chạy trên Form của Access: Cũng như mong muốn ở trên, trên 1 Form bất ký mình muốn chạy một dòng chữ để cần thông tin về vấn đề nào đó ví dụ như là "Chương trình này được tạo bởi...."
Đáp:
[right] Nguồn Từ : Khoa Học Phổ Thông.
Website : http://www.khoahocphothong.net [/right]
Thảo luận thêm: http://thuthuataccess.co.cc/forum
Tạo dòng chữ chạy trên Form của Access: Cũng như mong muốn ở trên, trên 1 Form bất ký mình muốn chạy một dòng chữ để cần thông tin về vấn đề nào đó ví dụ như là "Chương trình này được tạo bởi...."
Đáp:
Trích:
Nguyên văn bởi HungTano Hùng Tano + Bạn tạo 1 label , tên : LblWelcome - 1 nút lịnh, tên CmdRun Nhập các đoạn code sau : Private Sub CmdRun_Click() LblWelcome.Caption = "This program is designed by ..." & Space(3) Me.TimerInterval = 200 End Sub Private Sub Form_Timer() Dim x, y As String x = Left(LblWelcome.Caption, 1) y = Right(LblWelcome.Caption, Len(LblWelcome.Caption) - 1) LblWelcome.Caption = y + x End Sub |
Website : http://www.khoahocphothong.net [/right]
Sử dụng Unicode tiếng Việt trong MS Access
TG:Võ hùng- PC world
Trong Access 2K trở lên chạy trên Windows XP/2K, không cần phải thay thế font hệ thống bằng các font TCVN, VNI, Vietware..., bạn vẫn có thể sử dụng font Unicode tiếng Việt trong các thành phần từ khi lập trình cho đến khi sử dụng: ô nhập liệu, tiêu đề trên form, menu, toolbar... Quan trọng nhất, bạn có thể viết code sử dụng font Unicode để tạo các message box hiển thị tiếng Việt. Điểm mấu chốt là khi tạo các form, report, menubar, toolbar, bạn sử dụng font Unicode dựng sẵn, nhưng khi lập trình (viết code) bạn dùng font Unicode tổ hợp. Lưu ý: khi viết code nhớ chọn font có chữ Vietnamese ở đằng sau, ví dụ font Times New Roman (Vietnamese).
Cài đặt hệ điều hành 2K/XP
Vào Control panel->Regional and Language Options. Trong bảng này có 3 tab:
+ Tab Regional options (gọi là Tab 1)
+ Tab Languages (gọi là Tab 2)
+ Tab Advanced (gọi là Tab 3)
- Đầu tiên bạn vào Tab 2, đánh dấu chọn "Install files for complex script and right-to-left languages (including Thai)" (nếu chưa chọn). Có thể chương trình yêu cầu bạn đưa vào đĩa cài đặt WinXP(2K). Lưu ý: không nên dùng các đĩa cài đặt XP đã được chỉnh sửa như Wesmosiss WinXP,...
- Chọn OK và khởi động lại máy.
- Vào lại Tab 1, chọn Vietnamese.
- Vào Tab 3, chọn Vietnamese.
- Chọn OK và khởi động lại máy.
Cài đặt MS Office
Sau khi đã cài đặt MS Office, bạn vào Start -> Programs -> Microsoft Office Tools -> Microsoft Office Language Settings, chọn ngôn ngữ mặc định là Vietname
Trong Access 2K trở lên chạy trên Windows XP/2K, không cần phải thay thế font hệ thống bằng các font TCVN, VNI, Vietware..., bạn vẫn có thể sử dụng font Unicode tiếng Việt trong các thành phần từ khi lập trình cho đến khi sử dụng: ô nhập liệu, tiêu đề trên form, menu, toolbar... Quan trọng nhất, bạn có thể viết code sử dụng font Unicode để tạo các message box hiển thị tiếng Việt. Điểm mấu chốt là khi tạo các form, report, menubar, toolbar, bạn sử dụng font Unicode dựng sẵn, nhưng khi lập trình (viết code) bạn dùng font Unicode tổ hợp. Lưu ý: khi viết code nhớ chọn font có chữ Vietnamese ở đằng sau, ví dụ font Times New Roman (Vietnamese).
Cài đặt hệ điều hành 2K/XP
Vào Control panel->Regional and Language Options. Trong bảng này có 3 tab:
+ Tab Regional options (gọi là Tab 1)
+ Tab Languages (gọi là Tab 2)
+ Tab Advanced (gọi là Tab 3)
- Đầu tiên bạn vào Tab 2, đánh dấu chọn "Install files for complex script and right-to-left languages (including Thai)" (nếu chưa chọn). Có thể chương trình yêu cầu bạn đưa vào đĩa cài đặt WinXP(2K). Lưu ý: không nên dùng các đĩa cài đặt XP đã được chỉnh sửa như Wesmosiss WinXP,...
- Chọn OK và khởi động lại máy.
- Vào lại Tab 1, chọn Vietnamese.
- Vào Tab 3, chọn Vietnamese.
- Chọn OK và khởi động lại máy.
Cài đặt MS Office
Sau khi đã cài đặt MS Office, bạn vào Start -> Programs -> Microsoft Office Tools -> Microsoft Office Language Settings, chọn ngôn ngữ mặc định là Vietname
Phân quyền sửa Chương trình trong Access
Hỏi
Bạn nào có biết cách phân quyền sử dụng trong Access không chỉ cho mình với. Có nghĩa là với chương trình mình tạo ra thì chỉ có mình mới có thể sửa source code được, có thể sửa design... được thôi, người sử dụng chỉ được quyền sử dụng và không có quyền truy cập vào source code cũng như table... để sửa chương trình. Ở bên mình mọi người cũng có kiến thức về Access nên biết là cứ bấm F11 là vào được data của chương trình.
Đáp
[right] Nguồn Từ : Khoa Học Phổ Thông.
Website : http://www.khoahocphothong.net [/right]
Thảo luận thêm: http://thuthuataccess.co.cc/forum
Bạn nào có biết cách phân quyền sử dụng trong Access không chỉ cho mình với. Có nghĩa là với chương trình mình tạo ra thì chỉ có mình mới có thể sửa source code được, có thể sửa design... được thôi, người sử dụng chỉ được quyền sử dụng và không có quyền truy cập vào source code cũng như table... để sửa chương trình. Ở bên mình mọi người cũng có kiến thức về Access nên biết là cứ bấm F11 là vào được data của chương trình.
Đáp
Trích:
Nguyên văn bởi hungtano Bạn phải làm 2 việc : 1) Vào Tools --> Startup : bỏ chọn tất cả các check box trên biểu mẫu này. (không cho users sử dụng các phím tắt) Còn muốn triệt để hơn, không cho xem code thì .mdb --> .mde 2) Disable phím SHIFT Nguyên lý : trong database có 1 thuộc tính (property) gọi là : AllowBypassKey. Thuộc tính này cho phép bạn enable/disable phím SHIFT. + Nếu AllowBypassKey = False --> disable phím SHIFT + Nếu AllowBypassKey = True --> enable phím SHIFT Cách làm : bạn tạo 1 Form (tạm gọi : F_ShiftKey) có 2 nút lịnh : 1 để enable và 1 disable phím SHIFT. Đưa 2 private sub dưới đây vào.......... Private Sub DisableSHIFTButton_Click() On Error GoTo ErrHandler Dim db As Database Dim ThuocTinh As Property Set db = CurrentDb db.Properties("AllowBypassKey") = False Set db = Nothing Egress: On Error Resume Next Set db = Nothing Set ThuocTinh = Nothing Exit Sub ErrHandler: MsgBox Err.Number If Err.Number = 3270 Then ' Property not found. Set ThuocTinh = db.CreateProperty("AllowBypassKey", dbBoolean, False) db.Properties.Append ThuocTinh Resume Next Else MsgBox Err.Description Resume Egress End If End Sub ================================================= Private Sub EnableSHIFTButton_Click() On Error GoTo ErrHandler Dim db As Database Dim ThuocTinh As Property Set db = CurrentDb db.Properties("AllowBypassKey") = True Set db = Nothing Egress: On Error Resume Next Set db = Nothing Set ThuocTinh = Nothing Exit Sub ErrHandler: MsgBox Err.Number If Err.Number = 3270 Then ' Property not found. Set ThuocTinh = db.CreateProperty("AllowBypassKey", dbBoolean, True) db.Properties.Append ThuocTinh Resume Next Else MsgBox Err.Description Resume Egress End If End Sub ++++++++++++++++++++++++++++++++++++++++++++++++++ OK chưa bạn ? .............................................. Chưa đâu ! Bây giờ đặt F_ShiftKey ở đâu trong chương trình để không ai được quyền mở ngoại trừ Admin ? Có nhiều cách : cách đơn giản nhất là đặt ….ở đâu cũng được với 1 điều kiện : để mở F_ShiftKey cần phải biết password. Ở sự kiện Form_Open, bạn yêu cầu nhập đúng password : Lambada mới cho mở form này. Private Sub Form_Open(Cancel As Integer) Dim Message, Title, MyValue Message = "Ban vui long cho biet mat khau :" ' Set prompt. Title = "Kiem tra" ' Set title. MyValue = InputBox(Message, Title) If MyValue <> "Lambada" Then DoCmd.Close End If End Sub |
Website : http://www.khoahocphothong.net [/right]
Tính số ngày sử dụng chương trình
Mình có một chương trình Access tự viết nhỏ, mình muốn chương trình tính được số ngày sử dụng hoặc số lần đã mở chương trình nhưng không phụ thuộc vào ngày của hệ thống
[right] Nguồn Từ : Khoa Học Phổ Thông.
Website : http://www.khoahocphothong.net [/right]
Thảo luận thêm: http://thuthuataccess.com/forum
Trích:
Nguyên văn bởi hungtano Trả lời bạn tạo 1 table, tạo field có tên là userTime, kiểu number Khi user mở starup form, ở sự kiện open của form, bạn viết 1 đoạn code mở table trên và edit thêm sự kiện như sau: Private Sub Form_Open(Cancel As Integer) Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset("T2") With rs .MoveFirst .Edit !UserTime = !UserTime + 1 .Update End With rs.Close End Sub |
Website : http://www.khoahocphothong.net [/right]
9/11/09
Truyền thông số từ Combobox
Hỏi: Các Huynh chỉ dùm trong Access khi chọn 1 mục trong Combo box VD: MANV nào đó thì ở TextBox kế bên hiển thị ngay tên nhân viên theo MANV đó.
Thảo luận thêm: https://thuthuataccess.com/forum
Trích:
Nguyên văn bởi ndtoan123 :Cách 1 Mình cho vd nhé: Giả sử bạn có bảng nhân viên(MaNV;TenNV) bây giờ tại Form: Frmnhanvien bạn có 1 combobox(tên là Cboma) để gõ mã nhân viên và 1 Textbox(tên là txttenNV) để hiển thị tên nhân viên ứng với mã NV đã chọn. VD khi gõ vào combobox mã nhân viên NV01 thì textbox sẽ hiển thị là Nguyễn Văn A; khi gõ vào nhân viên NV02 thì textbox hiển thị là Nguyễn văn B... Muốn vậy tại textbox trên Form frmnhanvien: chọn Text txttenNV gõ vào công thức: =Dlookup("tenNV","nhanvien","nhanvien!maNV=[Forms]![frmNhanvien]![Cboma]") thì bạn sẽ có được kết quả ngay nhưng nhớ đặt thuộc tính Looked= Yes cho Textbox txttenNV (Mục đích là textbox này chỉ để hiển thị kết quả, không cho sửa đổi) |
Trích:
Nguyên văn bởi pinkair Cách 2 Ví dụ bạn có Table la NhanVien gồm hai trường MaNV, TenNV Bạn tạo Form có 1 Combo la CmbMaNV; 1 Text Box là txtTenNV Source của CmbMaNV là table NhanVien trên. Đoạn code như sau: Private Sub cmbMaNV Click() Me.txtTenNV.Value = Me.cmbMaNV.Column(1) End Sub Mình đã làm rồi, rất là OK bạn ah, bạn có thể sử dung |
Cách chuyển số sang tỷ lệ phần trăm
Bình thường trong excel khi chia hai số cho nhau ta được số thập phân ví dụ 2/3=0.66666. Nếu ta Format lại ra dạng phần trăm thì có thể ra 66.6666%. Vậy trong Access có thể format như vậy được không?
[right] Nguồn Từ : Khoa Học Phổ Thông.
Website : http://www.khoahocphothong.net [/right]
Writen Site: https://thuthuataccess.com/forum
Trích:
Nguyên văn bởi Duytuannguyen Trả lời
bạn dùng hàm format(number, kiểu format) thử xem.
Ví dụ trong trường hợp của bạn, bạn gọi như sau: Format(0.25,"Percent") ==>kết quả sẽ cho ra : 25.00% |
Trích:
Nguyên văn bởi hungtano Trả lời
=(Q1/Q2)*100 & "%"
|
Website : http://www.khoahocphothong.net [/right]
Đăng ký:
Bài đăng (Atom)