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!