- taïo modul capnhat
Option Compare Database
Public Sub moirec()
'DoCmd.GoToRecord , , acNewRec
DoCmd.RunCommand acCmdRecordsGoToNew
End Sub
Public Sub luurec()
'DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70
DoCmd.RunCommand acCmdSaveRecord
End Sub
Public Sub huyrec()
'DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
DoCmd.RunCommand acCmdUndo
End Sub
Public Sub xoarec()
'DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
'DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
DoCmd.RunCommand acCmdDeleteRecord
End Sub
- tao module dichuyen
Option Compare Database
Public Sub daurec()
'DoCmd.GoToRecord , , acFirst
DoCmd.RunCommand acCmdRecordsGoToFirst
End Sub
Public Sub luirec()
'DoCmd.GoToRecord , , acPrevious
DoCmd.RunCommand acCmdRecordsGoToPrevious
End Sub
Public Sub toirec()
'DoCmd.GoToRecord , , acNext
DoCmd.RunCommand acCmdRecordsGoToNext
Trang 1
End Sub
Public Sub cuoirec()
'DoCmd.GoToRecord , , acLast
DoCmd.RunCommand acCmdRecordsGoToLast
End Sub
Public Sub thoatrec()
'DoCmd.Close
DoCmd.RunCommand acCmdClose
End Sub
Public Sub dichuyen(sukien As String)
Select Case sukien
Case "dau"
DoCmd.RunCommand acCmdRecordsGoToFirst
Case "lui"
DoCmd.RunCommand acCmdRecordsGoToPrevious
Case "toi"
DoCmd.RunCommand acCmdRecordsGoToNext
Case "cuoi"
DoCmd.RunCommand acCmdRecordsGoToLast
Case "thoat"
DoCmd.RunCommand acCmdClose
Case "moi"
DoCmd.RunCommand acCmdRecordsGoToNew
Case "xoa"
DoCmd.RunCommand acCmdDeleteRecord
Case "luu"
DoCmd.RunCommand acCmdSaveRecord
Case "huy"
DoCmd.RunCommand acCmdUndo
End Select
End Sub
* chú ý khi thiết kế không chọn đối tượng control wizard trên thanh công cụ toolbox
V/.
Thiết kế form giao diện:
1/.Thiết Kế Form Thay Đổi Ngày Hệ Thống
(Dùng làm form Startup trong chương trình)
- nhấn nút more control ở thanh công cụ toolbox,
chọn microsoft date and time picker control,
kéo thả vào form.
Private Sub cancel_Click()
Me.ok.SetFocus
Me.layngay.Visible = False
Me.NGAY.Visible = False
End Sub
Private Sub Form_Activate()
DoCmd.Maximize
End Sub
Private Sub ok_Click()
Me.ok.SetFocus
Me.NGAY.Visible = True
Me.layngay.Visible = True
Me.Refresh
Trang 2
Date = Me.layngay
Me.Refresh
End Sub
Đối tượng ngay: Hiển thò ngày hiện tại của hệ thống bằng cách dùng hàm Date()
Đối tượng layNgay: hiển thò ngày tháng năm cho người sử dụng chọn ngày mới nếu ngày hiện
tại của hệ thống không đúng thực tế.
Nút ok: Khi nhấn vào sẽ sửa ngày hệ thống là ngày mà người sử dụng chọn trong đối tượng
Nút cancel: không cho sữa đổi ngày hệ thống.
2/.Tạo Form Cập Nhật DMHH
- Vào Tab Form/New/Design View, record Source = DMHH.
- Bật Form Header và Form Footer.
- Thiết kế giống như sau:
Tạo 1 function trả về giá trò là mã hàng mới, tham số nhập vào là mã nhà cung cấp.
Mở Table DMHH ở chế độ Design, vào menu View/Index, tạo 1 Index mới tên STT, sắp xếp
field MAHANG giảm dần. Mục đích sắp xếp để khi Browse Table này thì các mẫu tin sẽ được
liệt kê theo MAHANG giảm dần.
Khi người sử dụng nhấn nút tạo mới, Focus sẽ được chuyển đến comboBox mã nhà cung
cấp cho người sử dụng chọn, sau khi chọn sẽ kích hoạt sự kiện After Update để tạo ra 1 mã
hàng mới.
Viết Code cho sự kiện After Update của combo MANCC như sau:
Private Sub MANCC_AfterUpdate()
MAHANG = MAHH(Me.MANCC)
End Sub
Ta chỉ muốn cho ComboBox MANCC hiện ra khi người sử dụng nhấn nút tạo mới, còn đối với
những mẫu tin đã có thì nó bò mờ đi bằng cách viết Code cho sự kiện Current của Form.
Viết Code cho sự kiện Current của Form:
Private Sub Form_Current()
If IsNull(Me.MAHANG) Then
Me.MANCC.Enabled = True
Else
Me.MANCC.Enabled = False
End If
End Sub
Chọn thẻ Module tạo một hàm, đặt tên là MAHH. Hàm này sẽ trả về mã hàng mới phụ thuộc
vào mã nhà cung cấp nên nó có 1 tham số là mã nhà cung cấp tương ứng mà ta sẽ đưa vào
sau.
Public Function MAHH(NCC As String)
Trang 3
Dim db As DAO.Database
Dim HH As DAO.Recordset
Set db = CurrentDb
Set HH = db.OpenRecordset("DMHH")
If HH.RecordCount = 0 Then
MAHH = NCC & "001"
Exit Function
Else
HH.Index = "STT"
HH.MoveFirst
MAHH = NCC & Format(Val(Right(HH!MAHANG, 3)) + 1, "000")
End If
End Function
Mã hàng sẽ được tạo tương ứng với nhà cung cấp đã cung cấp mặt hàng đó kết hợp với số
thứ tự tăng dần tương ứng với số mặt hàng mà nhà cung cấp đã cung cấp cho cửa hàng.
NCC01 cung cấp mặt hàng CocaCola => Mã hàng tương ứng là NCC01001
NCC01 cung cấp mặt hàng Pepsi => Mã hàng tương ứng là NCC01002
Giải thích các giải thuật trong hàm:
Khai báo biến DB kiểu Database (cơ sở dữ liệu), sau đó đặt biến DB tham chiếu đến cơ sở dữ
liệu hiện đang mở, có nghóa là DB chứa tất cả các Table từ DMKH đến CTPXK.
Khai báo biến RS kiểu Recordset (kiểu bảng), đặt biến RS tham chiếu đến bảng cần xử lý là
DMHH để tạo mã hàng tương ứng.
Kiểm tra Table DMHH có mẫu tin nào chưa, nếu chưa có sẽ phát sinh mã hàng = Tham số
nhập vào & “001” (tham số nhập vào chính là MANCC)
Nếu đã có mẫu tin thì sẽ sắp xếp Table DMHH theo field MAHANG giảm dần bằng cách gọi
một Index tên STT đã tạo sẵn phần trên, sau đó nhảy lên mẫu tin đầu tiên.
Thực hiện 1 vòng lặp tìm đến mã hàng nào có 5 ký tự đầu là mã nhà cung cấp đã nhập vào
hàm, nếu tìm thấy mẫu tin đầu tiên thoả có nghóa là mã hàng đó có 3 ký tự sau cùng là giá trò
lớn nhất, dùng hàm Right cắt 3 ký tự đó ra và cộng thêm 1, sau đó gắn vào bên trái nó mã nhà
cung cấp tương ứng, trả giá trò này về cho hàm MAHH và thoát khỏi hàm. Ngược lại, nếu tìm
đến cuối mẫu tin vẫn chưa thấy hoặc đến mẫu tin nào có 5 ký tự đầu của mã hàng nhỏ hơn nhà
cung cấp thì cho hàm MAHH trả về giá trò bằng nhà cung cấp ghép với số thứ tự 001.
- nút đầu: đặt thuộc tính enable=no
- nút lưu, huỷ:visabled=no
- đặt thuộc tính form: default view – continuous forms
- đặt thuộc tính các text box: locked=yes
- mã lệnh cho form CNDMHH
Option Compare Database
Private Sub dau_Click()
On Error GoTo Err_dau_Click
Me.MAHANG.SetFocus
Call daurec
Me.dau.Enabled = False
Me.lui.Enabled = False
Me.toi.Enabled = True
Me.cuoi.Enabled = True
Exit Sub
Err_dau_Click:
Trang 4
MsgBox ""
End Sub
Private Sub Form_Activate()
DoCmd.Maximize
End Sub
Private Sub lui_Click()
On Error GoTo Err_lui_Click
Me.MAHANG.SetFocus
Call luirec
Me.toi.Enabled = True
Me.cuoi.Enabled = True
Exit Sub
Err_lui_Click:
MsgBox "Da den mau tin dau tien", 64, "Th«ng B¸o"
Me.dau.Enabled = False
Me.lui.Enabled = False
End Sub
Private Sub MANCC_AfterUpdate()
MAHANG = MAHH(Me.MANCC)
End Sub
Private Sub toi_Click()
On Error GoTo Err_toi_Click
Me.MAHANG.SetFocus
Call toirec
Me.dau.Enabled = True
Me.lui.Enabled = True
Exit Sub
Err_toi_Click:
MsgBox "Da den mau tin cuoi cung", 64, "Thong bao"
Me.toi.Enabled = False
Me.cuoi.Enabled = False
End Sub
Private Sub cuoi_Click()
On Error GoTo Err_cuoi_Click
Me.MAHANG.SetFocus
Call cuoirec
Me.toi.Enabled = False
Me.cuoi.Enabled = False
Me.dau.Enabled = True
Me.lui.Enabled = True
Exit Sub
Err_cuoi_Click:
MsgBox Err.Description
End Sub
Private Sub thoat_Click()
On Error GoTo Err_thoat_Click
Trang 5