Chào mừng các bạn đã ghé thăm blog của tôi

Diễn đàn dành cho những người yêu công nghệ số

Thứ Bảy, 12 tháng 3, 2011

Hướng dẫn tạo form chỉ cho phép mở một số lần cố định


hướng dẫn này cho phép chúng ta tạo 1 form chỉ cho phép người dùng mở 5 lần.
Có thể dùng ràng buộc người dùng phải đăng ký để dùng tiếp.

----------------------------------------------------------
Tác giả và demo: Cafe Via He
Site: http://thuthuataccess.co.cc/forum
Vui lòng giữ tên tác giả và site nếu bạn dùng hoặc chia sẻ code này.
------------------------------------------------
Tạo 1 table tên là FormInfo(FormName,times)
Formname: Text
Times: number

1 Form tên là demo
Trong đó, vẽ 1 textbox tên là txtT để thể hiện số lần mở form. Các yếu tố màu mè khác. Form sẽ có dung nhan như sau

Trong sự kiện Openform, bạn dùng code sau:
Mã:
Private Sub Form_Open(Cancel As Integer)
DoCmd.SetWarnings False
Dim frm As String
Dim t As Integer

    frm = DCount("formname", "Forminfo", "formname='" & Me.Name & "'")
    t = Nz(DLookup("times", "Forminfo", "formname='" & Me.Name & "'"), 0)
    
If frm = 0 Then 'Neu form chua mo lan nao
    t = t + 1
    DoCmd.RunSQL "Insert into Forminfo(formname,times) values('" & Me.Name & "'," & t & ")"
    txtT = t    
ElseIf frm > 0 And t < 100 Then 'Cong don so lan mo form
    t = t + 1
    DoCmd.RunSQL "Update FormInfo set Times =" & t
    txtT = t
ElseIf frm > 0 And t = 100 Then ' Neu da mo form duoc 5lan
    MsgBox "BAN DA HET THOI GIAN DUNG THU- HAY DANG KY BAN QUYEN VOI TAC GIA" & vbCrLf & vbCrLf
    Cancel = True
End If

End Sub
( Lưu ý: không cần tạo form nào cả mà muốn khóa form nào chỉ cần copy code dán vào form đó là được,và tạo một textbox có tên là txtT trên form đó là xong)

Và nếu form này mở quá 5 lần thì chương trình sẽ không cho mở form nữa!

Hiện thông báo không có dữ liệu khi in report


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



Private Sub In_Click()
dim rec as Recordset
dim db as Database
set db = CurrentDB()
set rec = db.Openrecordset("tên bảng")
If rec.recordcount> o then
[in report]

else

[thong bao]

end if

End Sub

HIỂN THỊ ĐỒNG HỒ TRÊN FORM


Để hiển thị ngày giờ hệ thống trên Form main rất đơn giản. Trước tiên, bạn hãy kẻ một label có tên là L1, sau đó viết thủ tục Form_Timer(), Form_load() như sau:

Private Sub Form_Timer()
L1.Caption = "Bây giờ là " & Format(Time, "HH:MM:SS") & " ngày "& Format(Date, "DD/MM/YYYY")

End Sub

Private Sub Form_Load()
Me.TimerInterval = 100
End Sub

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


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




Chú Thích: Hàm này dùng hiệu quả trong việc tách tên họ. Truyền đối số như sau:
Ten: Tên đầy đủ ( fullname)
Kiểu: 0 : Tách Tên, 1 Tách Họ

Ví Dụ:

Name=Hoàng Ngọc Lâm
msgbox Split(Name,0)  => Lâm
msgbox Split(Name,1) => Hoàng Ngọc

Gắn một số phím tắt cho các command button


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



Một Cách khác (spammail - khoahocphothong.net)

Tạo 1 macro tên phải là AutoKeys :

Macro Name________Action
{F7}_______________Open Report (Nhấn F7 để mở report nào đó)
^{F7}_____________ Open Report (Nhấn Ctrl+ F7 để mở report nào đó)
+{F1}______________Open Report (Nhấn Shift + F7 để mở report nào đó)
^A_________________Msgbox (Nhấn Ctrl+ A sẽ hiện thông báo gì đó) 

Đánh Số Thứ Tự Cho report


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!

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

Cách tạo form thời gian cho phần mềm dùng thử


Tôi đọc trên mạng thấy nói là vào Propertier của Form, lập thủ tục xử lý tình huống Ontimer và cài đặt giá trị thuộc tính TimerIntreval là 60000( tương ứng 1 phút), nếu đặt dài hơn thì cứ xác định giá trị tương ứng. sau đó viết code cho thủ tục sự kiện đếm lùi thời gian, khi nào hết giờ sẽ ngừng Timer
Form trong access có 1 thủ tục xử lý tình huống Ontimer, thủ tục này được xử l;ý theo chu kỳ được xác định bằng thuộc tính TimerInterval của Form. Mặc định thuộc tính này có giá trị 0 ( đơn vị tính là 1/1000 giấy) tương ứng với tình huống Ontimer không hoạt động. Muón đếm lùi sau 1 phút, bạn đặt trị 60000 cho thuộc tính TimerInterval, rồi viết câu lệnh xử lý đếm lùi trong thủ tục xử lý tình huống Ontimer. Ví dụ : Bạn thiết kế 2Textbox có tên txtTongThoiGian và txtConLai, 1 nút lệnh CmdBamGio rồi gõ đoạn mã sau đây:
Dim nDaQua As Interger 'Để tính số giây đã qua
Private sub cmdBamGio_Click()
nDaQua=0 'Bắt dầu đếm là 0 giây
Me.TimerInterval=60000 'Sau 1 giây thì sử lý
end sub
Private Sub Form_timer()
nDaQua=nDaQua+1
txtConLai=txtTongThoiGian - nDaQua
If txtConLai=0 then 'Đã hết giờ
Me.TimerInterval=0 'Ngừng timer
MsgBox " Hết giờ"
End If
End sub
Tuy nhiên nếu làm thế này thì thời gian được tính từ lúc bấm vào cmdBamgio

CÁCH TẠO CHữ CHẠY TRÊN FORM


Code:
Private Sub Form_Timer()
Dim S As String
S = Me.Caption
S = Right(S, Len(S) - 1) & Left(S, 1)
Me.Caption = S
End Sub

và đặt thời gian tại timer interval: 200 or 300

Lưu ý là bạn phải gõ tiêu đề của form và set timer của form là 100 nhé.


·        Cách tạo
-         Nháy đúp lên màn hình Rorm, trong ô của sổ ta chọn rorm.
-         Vào thẻ format gõ tiêu đề.
-         Vào ovel để đặt thời gian
-         Ta vào menu view chọ code copy đoạn mã đó xuống cuối cùng rồi save là xong.

Bắt lỗi khi nhập liệu sai và người dùng đóng form


Hỏi: Tôi tạo form nhập liệu, và muốn bắt lỗi khi người dùng nhập sai nhưng muốn đóng form thì hiện ra thông báo : " Có dữ liệu bị lỗi, Bạn có muốn đóng không?" Vậy tôi phải bắt lỗi thế nào?

Đáp:
(theo hướng dẫn anh phatnq2002 trên DKT)
Để bắt được lỗi này, bạn phải kết hợp hai sự kiện Form_Error và Form_UnLoad.


Bạn nên tạo một biến dùng chung cho module (nghĩa là khai báo ở vùng Declaration của Form Module), ví dụ Dim hasError As Boolean chẳng hạn

Cái sự kiện bạn bắt bao gồm 2 cái:

1. là Form_Unload: sự kiện này xảy ra trước Close. Do vậy nếu Cancel=True ở đây đồng nghĩa với việc hủy Close.
Private Sub Form_Unload(Cancel As Integer)
If hasError Then
If MsgBox("Có dữ liệu bị lỗi, Bạn có muốn đóng không?", vbYesNo) = vbNo Then
Cancel = True
Else
DoCmd.RunCommand acCmdUndo
End If
End If
End Sub

2. là Form_Error
Private Sub Form_Error(DataErr As Integer, Response As Integer)
Respponse = acDataErrContinue
hasError = True
Select Case DataErr
Case 2169
MsgBox "Co loi khi luu du lieu."
Case Else
MsgBox "Err No." & DataErr & vbCrLf & "Err Mess: " & Error(DataErr)
End Select
End Sub
__________________________________________

Bảo mật các thư mục, tập tin


Bảo mật các thư mục, tập tin chứa những thông tin quan trọng luôn được người sử dụng PC đặc biệt quan tâm. Các công cụ quản lý thư mục, tập tin trong nhiều phiên bản hệ điều hành Windows không bao gồm chức năng chống xem các thông tin chứa bên trong thư mục, tập tin. Do đó, để đáp ứng mục tiêu bảo mật thông tin, các hãng sản xuất phần mềm luôn tìm cách tạo ra các sản phẩm có khả năng giúp người dùng bảo mật tốt nhất thông tin của họ, và Flexcrypt Folder (FF) là một sản phẩm phải kể đến bởi tính dễ sử dụng và hiệu quả nó mang lại.
Nhắp đúp tập tin tải về để cài đặt, trong quá trình cài đặt FF sẽ tự động tải và cài bộ Microsoft .NET Framework 2.0, ta chỉ nhắp vào các nút next và finish để hoàn thành các bước cài đặt.

Cách sử dụng rất đơn giản, gần giống như thao tác trên các chương trình nén thư mục, tập tin thông thường, nhưng FF tạo ra một tập tin thực thi có đuôi exe. Sau khi cài đặt xong, nhắp chuột phải lên thư mục hay tập tin cần bảo mật, chọn Encrypt using Flexcrypt Folder. Cửa sổ chính của FF xuất hiện, đặt tên tập tin đóng gói bảo mật (File name, mặc nhiên FF lấy tên giống với tập tin hay thư mục đã chọn bảo mật), nhập mật khẩu (Password, nên sử dụng những mật khẩu gợi nhớ, phòng trường hợp quên mật khẩu sẽ không giải mã được tập tin đã đóng gói), xác nhận lại mật khẩu (Retype), cuối cùng OK. Sau khi hoàn tất, ta có thể yên tâm xóa đi tập tin hay thư mục ban đầu (phòng ai đó mở xem) mà không sợ mất vì tất cả các tập tin hay thư mục đó đã được FF đóng gói thành tập tin mới có đuôi exe. Khi cần mở lại, nhắp đúp vào tập tin exe đã lưu, nhập mật khẩu giải mã, cuối cùng nhắp OK. FF sẽ trả về nguyên mẫu thư mục, tập tin ban đầu để ta có thể xem hoặc chỉnh sửa một cách bình thường.
sponsored links
Dưới đây là đường dẫn để tải phần mềm Flexcrypt Folder - Bảo mật các thư mục, tập tin. Bạn hãy bấm trực tiếp lên liên kết để tải về.
http://file001.phanvien.com/Data/Data%206/phanvien.com%20flexcrypt_folder.rar
Nếu bạn không Download được hoặc gặp khó khăn gì, mời bạn vào diễn đàn để gởi câu hỏi. Xin đừng gởi qua Form liên hệ vì Phan Viễn rất bận, không thể trả lời hết các câu hỏi của quý vị!

CÁC TẠO THỨ TỰ CHO ENTER TRONG ACCESS


Bạn mở form chính ở chế độ Design. Chọn 1 Textbox bất kỳ, mở bảng Property (nếu chưa), chọn tab Other. Bấm vào nút 3 chấm (...) bên phải Tab Index. Trong mục Custom Order bạn sẽ thấy thứ tự các điều khiển trong form (kể cả tên Subform) khi nhấn Tab hoặc Enter. Chọn từng mục và sắp xếp lại theo ý muốn của bạn.
Muốn di chuyển giữa form chính và subform bạn nhấn tổ hợp phím Ctrl+Enter hoặc Ctrl+Tab.