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.
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:

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)

Đồ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

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

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.

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 đó.

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.

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:

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


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

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?

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

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

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

Đó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

7/12/09

Hàm đọc số dùng mã Unicode trong Access

Do môi trường VBA chưa hỗ trợ Unicode đầy đủ nên việc thiết lập hàm đọc số tiếng Việt với mã (font) Unicode trong Access cũng như Excel có khó khăn. Bài viết này giới thiệu một cách thiết lập hàm đọc số dùng font Unicode trong Access (bạn cũng có thể áp dụng trong Excel, VB...).

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

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

Chọn mẫu tin bằng Listbox

Hỏi:Giúp em phần từ (Item) listbox sang textbox
Đáp:

View report ở chế độ cố định

Hỏi: Làm thế nào để View report ở chế độ cố định

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.

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)

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]]] )

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:
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?

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

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

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!
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.

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.

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

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 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

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



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é

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

Giáo Trình Access

Giáo trình Access DHSPHN
_____________________________________________________________
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

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

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ý ....

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.

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.

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ẻ:

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ũ.

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.

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".

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")

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

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:


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
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

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:


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]

Đá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!

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


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à :

Private Sub EnableSHIFTButton_Click()

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
Thảo luận thêm: http://thuthuataccess.com/forum

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  *****
[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

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ạn chỉ cần vào Tools/options

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
[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

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 ********
[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

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

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

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
Trích:
Function NZ(anyValue As Variant) As Variant
NZ = IIf(IsNull(anyValue), 0, anyValue)
End Function
[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

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

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.

[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

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:
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

[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

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

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
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
[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í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

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
[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

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 đó.
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
Thảo luận thêm: https://thuthuataccess.com/forum

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?
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 & "%"
[right] Nguồn Từ : Khoa Học Phổ Thông.
Website : http://www.khoahocphothong.net [/right]
Writen Site: https://thuthuataccess.com/forum

Danh Sách Thủ Thuật tren Blog thuthuataccess




Writen Site: http://thuthuataccess.com/forum