1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Phần Tạo CSDL docx

7 513 2
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Phần Tạo Cơ Sở Dữ Liệu
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Công Nghệ Thông Tin
Thể loại Bài Tập
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 7
Dung lượng 134 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Xem thuộc tính liên kết của SubForm/SubReport có trường liên kết chung là: Sodonhang + Link Child Fields: Sodonhang + Link Master Fields: Sodonhang B1: Chọn thành phần Forms\ New\ Form W

Trang 1

I Phần Tạo Cơ Sở Dữ Liệu

Thiết lập mối quan hệ

+ Dùng chuột chọn các khóa từ table có quan hệ 1 kéo sang table có quan hệ nhiều

+ Nếu giữa 2 table có liên kết chung từ 2 khóa trở lên thì chọn tất cả các khóa đó luôn 1 lần rồi drag chuột kéo từ table có quan hệ 1 sang table có quan hệ nhiều.

Nhập dữ liệu:

+ Table có quan hệ 1 nhập dữ liệu trước, table có quan hệ nhiều nhập dữ liệu sau.

+ Nhập 2 biên trái + phải từ ngoài vào trong theo mô hình sắp xếp sau đây:

II PhầnThiết kế Form

FORM NHẬP DỮ LIỆU

I Phần Thiết kế giao diện

Thiết kế Form Main-Sub

A Thiết kế cơ bản bằng chức năng form Wizard :

1 Form Main: chọn Table có quan hệ 1 và Form Sub: chọn Table có quan hệ nhiều

2 Giữa Form Main và Form Sub phải có trường chung.

3 Xem thuộc tính liên kết của SubForm/SubReport có trường liên kết chung là: Sodonhang

+ Link Child Fields: Sodonhang

+ Link Master Fields: Sodonhang

B1: Chọn thành phần Forms\ New\ Form Wizard

B2: Chọn Table làm nguồn cho Form Main (chọn Table có quan hệ 1)

Chọn các trường hiển thị trên Form Main.

B3: Chọn Table làm nguồn cho Form Sub (chọn Table có quan hệ nhiều)

Chọn các trường hiển thị trên Form Sub.

B4: Chọn dạng thể hiện (Để mặc định, nhấn Next)

Chọn kiểu trình bày cho Form-Sub (Để mặc định là DataSheet)

Chọn dạng hiển thị cho Form Main-Sub (mỗi lệnh thể hiện 1 dạng)

B5: Đặt tên: Form (Tên của form Main), Subform (Tên của form Sub)

B Thiết kế hoàn chỉnh Form Main-Sub

B1: Chọn Form Main-Sub ở chế độ Design

B2: Bổ sung thêm các trường khác cho Form Main, chọn thuộc tính Record Source

B3: Bổ sung thêm các trường khác cho Form Sub:

+ Chọn Form Sub

+ Chọn lệnh View\ SubForm In New Window

+ Chọn thuộc tính Record Source

B4: Tạo các Text Box tính toán ở vùng Form Footer của Form Sub, Name: Đặt tên cho TextBox, Control Source: Nhập công thức tính toán.

1 Thiết kế bảng

2 Thiết lập mối quan hệ giữa các bảng

3 Nhập dữ liệu vào bảng

Trang 2

B5: Thực hiện truyền các kết quả tính toán từ Text Box tính toán ở vùng Form Footer của Form Sub sang Form Main Công thức tham chiếu:

=Tên của SubForm/SubReport Form!Tên của Text Box chứa kết quả đã tính toán

B6: Chuyển các TextBox ở Form Main và Form Sub sang Combo Box.

+ Click phải chuột vào TextBox cần chuyển, chọn lệnh Change to\ Combo Box

+ Chọn nguồn cho Combo Box, chọn thuộc tính Row Source, chọn Table làm nguồn (chọn Table có

quan hệ 1)

B7: Tạo các nút di chuyển và nút điều khiển: Tới, Lui, Thêm, Sửa, Xóa, In, Ghi, Không ghi :

+ Tắt chức năng Control Wizard, dùng chuột drag tạo trên vùng của Form Main

+ Đặt tên cho từng nút tại thuộc tính Name: CmdToi, CmdLui, CmdThem, CmdSua, CmdXoa, CmdIn,

CmdGhi, CmdKhongGhi

Thiết kế Form Tab-Control B1: Thiết kế cơ bản và hoàn chỉnh Form Main-Sub (Xem lại phần thiết kế Form Main-Sub)

B2: Tạo Tab Control:

+ Click chuột vào công cụ Tab-Control, drag chuột tạo các Tab-Control trên vùng Detail của Form

Main-Sub

+ Đặt tên hiển thị cho các Tab-Control, Gõ tên vào thuộc tính Caption

+ Thêm các Tab-Control, click phải chuột vào Tab-Control, chọn lệnh Insert Page.

+ Xóa các Tab-Control, click phải chuột vào Tab-Control, chọn lệnh Delete Page.

B3: Cắt dữ liệu trên phần Form Main vào 1 Tab-Control

Dữ liệu phần Form Sub để ngoài Tab-Control hoặc cắt vào Tab-Control khác tùy theo yêu cầu bài

Các bước tiếp theo: Bổ sung thêm các trường khác cho Form Main, Form Sub - Tạo các Text Box tính toán ở vùng Form Footer của Form Sub - Truyền các kết quả tính toán từ Text Box tính toán ở vùng Form Footer của

Form Sub sang Form Main … : đều thực hiện giống ở phần Thiết kế Form Main-Sub

Tạo liên kết

Tạo liên kết giữa List Box với Form-Sub và giữa 2 Tab Control (List Box với Form-Main)

1 Viết Code vào biến cố On Current của Form Tab-Control

ListDH = Sodonhang

2 Viết Code vào biến cố On Click của List Box

Sodonhang.SetFocus

DoCmd.FindRecord ListDH

ListDH.SetFocus

Thiết kế Report

A Thiết kế cơ bản bằng chức năng Report Wizard:

B1: Chọn thành phần Reports\ New\ Report Wizard

B2: Chọn Table làm nguồn cho Phân nhóm chính (chọn Table có quan hệ 1)

Chọn các trường hiển thị trên Phân nhóm chính.

B3: Chọn Table làm nguồn cho Phân nhóm phụ (chọn Table có quan hệ nhiều)

Chọn các trường hiển thị trên Phân nhóm phụ.

B4: Chọn dạng thể hiện (Để mặc định, nhấn Next)

Chọn trường làm phân nhóm (Để mặc định, nhấn Next)

Chọn trường cần sắp xếp (Để mặc định, nhấn Next)

Chọn dạng trình bày cho bản báo cáo, chọn dạng OutLine

B5: Đặt tên cho Report.

B Thiết kế hoàn chỉnh Report.

B1: Chọn Report ở chế độ Design.

Trang 3

B2: Bổ sung thêm các trường khác cho Report, chọn thuộc tính Record Source

(Chú ý: Trong Report: Nguồn dữ liệu cho Phân nhóm chính và Phân nhóm phụ chung Ngược lại trong Form

Main – Sub, nguồn dữ liệu Form Main riêng và Form Sub riêng.)

B3: Tạo TextBox Số thứ tự, chọn thuộc tính Control Source: = 1, Running Sum: Over Group

B4: Tạo các Text Box thống kê

+ Ở cuối của mỗi phân nhóm: Hiện vùng Footer của phân nhóm: click chuột vào biểu tượng Sorting and

Grouping hoặc click phải chuột vào Report chọn lệnh Sorting and Grouping, chọn Group Footer: Yes Tạo

text Box và lập công thức

+ Ở cuối của bản báo cáo: Tạo text Box và lập công thức ở vùng Report Footer.

II, Phần Lập trình:

1 Khóa dữ liệu khi mở Form: Viết Code vào biến cố On Load của Form Main-Sub hoặc Form Tab-Control + Gọi tên của tất cả Text Box chứa các trường hiển thị trên Form Main và Tên của SubForm/SubReport + Làm mờ 2 nút Lưu và Không

Private Sub Form_Load()

Sodonhang.Locked = True 'Khoa du lieu lai,Sodonhang'

Ngay.Locked = True 'Khoa du lieu lai, Ngay'

KhachhangID.Locked = True 'Khoa du lieu lai:'

Tenkhachhang.Locked = True 'Khoa du lieu lai'

FrmDonhangchitiet.Locked = True 'Khoa du lieu lai'

CmdLuuFrmNhap.Enabled = False 'Nut Luu mo di'

CmdKhongFrmNhap.Enabled = False 'Nut Khong Luu mo di'

End Sub

2 Các nút di chuyển (hiện thông báo và mờ đi khi đang ở đầu và cuối bảng): Viết Code vào biến cố On Click

của Các nút di chuyển

Private Sub cmdfirst_Click()

If CurrentRecord = 1 Then

MsgBox "Ban dang o mau tin dau.Khong di chuyen duoc nua", vbCritical + vbOKOnly, "thong bao"

Sodonhang.SetFocus

cmdtruoc.Enabled = False

cmdfirst.Enabled = False

Else

DoCmd.GoToRecord , , acFirst

Sodonhang.SetFocus

cmdnext.Enabled = True

cmdlast.Enabled = True

End If

End Sub

Private Sub cmdtruoc_Click()

If CurrentRecord = 1 Then 'Kiem tra xem con tro co dang o mau tin dau hay khong'

MsgBox "Ban dang o mau tin dau.Khong di chuyen duoc nua", vbCritical + vbOKOnly, "thong bao"

Sodonhang.SetFocus 'Truoc khi cho nut CmdTruoc mo di phai tra con tro ve Sodonhang'

cmdtruoc.Enabled = False 'Cho nut Lui ve truoc mo di'

cmdfirst.Enabled = False 'Cho nut CmdVe dau mo di'

Else

DoCmd.GoToRecord , , acPrevious 'Thuc hien lui con tro ve dong truoc'

Sodonhang.SetFocus

cmdnext.Enabled = True 'Cho nut toi dong ke tiep sang len'

cmdlast.Enabled = True 'Cho nut Ve cuoi sang len'

End If

End Sub

Trang 4

Private Sub cmdlast_Click()

If CurrentRecord = DCount("*", "donhang") Then

MsgBox "Ban dang o mau tin cuoi.khong di chuyen duoc nua", vbCritical + vbOKOnly, "thong bao"

Sodonhang.SetFocus

cmdnext.Enabled = False

cmdlast.Enabled = False

Else

DoCmd.GoToRecord , , acLast

Sodonhang.SetFocus

cmdtruoc.Enabled = True

cmdfirst.Enabled = True

End If

End Sub

Private Sub cmdnext_Click()

If CurrentRecord = DCount("*", "donhang") Then

MsgBox "Ban dang o mau tin cuoi.khong di chuyen duoc nua", vbCritical + vbOKOnly, "thong bao"

Sodonhang.SetFocus

cmdnext.Enabled = False

cmdlast.Enabled = False

Else

DoCmd.GoToRecord , , acNext

Sodonhang.SetFocus

cmdtruoc.Enabled = True

cmdfirst.Enabled = True

End If

End Sub

3 Nút thêm: Cập nhật dữ liệu trên cả 2 form Main và Sub Các nút Lưu và Không lưu sáng lên Các nút thêm, sửa, xóa, in và di chuyển mờ đi: Viết Code vào biến cố On Click của nút thêm

Private Sub cmdThem_Click()

If MsgBox("Ban co muon them mau tin moi?", vbInformation + vbYesNo, "Chu y") = vbNo Then

Cancel = True

Else

DoCmd.GoToRecord , , acNewRec

Sodonhang.SetFocus

Sodonhang.Locked = False 'Mo khoa du lieu: Sodonhang'

Ngay.Locked = False 'Mo khoa du lieu: Ngay'

Ngay.Value = Date 'Cap nhat Ngay = Ngay hien hanh'

KhachhangID.Locked = False 'Mo khoa du lieu: KhachhangID'

Tenkhachhang.Locked = False 'Mo khoa du lieu: Tenkhachhang'

FrmDonhangchitiet.Locked = False 'Mo khoa du lieu cua SubForm/SubReport ten la: FrmDonhangchitiet' CmdLuuFrmNhap.Enabled = True 'Nut Luu sang len'

CmdKhongFrmNhap.Enabled = True 'Nut KhongLuu sang len'

cmdfirst.Enabled = False 'Nut VeDau mo di'

cmdlast.Enabled = False 'Nut Ve Cuoi mo di'

cmdnext.Enabled = False 'Nut Toi mo di'

cmdtruoc.Enabled = False 'Nut Nut Lui mo di'

CmdInFrmNhap.Enabled = False 'Nut In mo di'

cmddelete.Enabled = False 'Nut Xoa mo di'

CmdSuaFrmNhap.Enabled = False 'Nut Sua mo di'

cmdexit.Enabled = False 'Nut Thoay mo di'

Sodonhang.SetFocus 'Tra con tro ve Sodonhang'

cmdThem.Enabled = False 'Nut Them mo di'

Trang 5

End If

End Sub

4 Nút Sửa: Sửa dữ liệu trên cả 2 form Main và Sub Các nút Lưu và Không lưu sáng lên Các nút thêm, sửa, xóa, in và di chuyển mờ đi: Viết Code vào biến cố On Click của nút Sửa

Private Sub CmdSua_Click()

If MsgBox("Ban co muon sua du lieu khong", vbInformation + vbYesNo, "Chu y") = vbNo Then

Cancel = True

Else

Sodonhang.SetFocus

Sodonhang.Locked = False 'Mo khoa du lieu: Sodonhang'

Ngay.Locked = False 'Mo khoa du lieu: Ngay'

Ngay.Value = Date 'Cap nhat Ngay = Ngay hien hanh'

KhachhangID.Locked = False 'Mo khoa du lieu: KhachhangID'

Tenkhachhang.Locked = False 'Mo khoa du lieu: Tenkhachhang'

FrmDonhangchitiet.Locked = False 'Mo khoa du lieu cua SubForm/SubReport ten la: FrmDonhangchitiet'

CmdLuu.Enabled = True 'Nut Luu sang len'

Cmdkhong.Enabled = True 'Nut KhongLuu sang len'

cmdfirst.Enabled = False 'Nut VeDau mo di'

cmdlast.Enabled = False 'Nut Ve Cuoi mo di'

cmdnext.Enabled = False 'Nut Toi mo di'

cmdtruoc.Enabled = False 'Nut Nut Lui mo di'

CmdIn.Enabled = False 'Nut In mo di'

cmddelete.Enabled = False 'Nut Xoa mo di'

cmdaddnew.Enabled = False 'Nut Them mo di'

cmdexit.Enabled = False 'Nut Thoay mo di'

Sodonhang.SetFocus 'Tra con tro ve Sodonhang'

CmdSua.Enabled = False 'Nut Sua mo di'

End If

End Sub

5 Nút In Báo Cáo: In dữ liệu đúng Số đơn hàng hiện hành trên Form Main: Viết Code vào biến cố On Click

của nút In

Private Sub CmdIn_Click()

DoCmd.OpenReport "RptDonhangchitiet", acViewPreview, [Sodonhang], "Sodonhang=forms!

FrmNhapdonhang!Sodonhang"

End Sub

6 Kiểm tra lỗi khi nhập dữ liệu vào bằng nút thêm

a Kiểm tra lỗi dữ liệu nhập vào Số đơn hàng có”trùng” và “rỗng” hay không: Viết Code vào biến cố BeforeUpdate của TextBox Số đơn hàng trên Form Main

Private Sub Sodonhang_BeforeUpdate(Cancel As Integer)

If DCount("*", "Donhang", "Sodonhang = Forms!FrmNhapdonhang!Sodonhang") > 0 Then

MsgBox "Trung So Don Hang, nhaplai", vbCritical

Cancel = True

Exit Sub

End If

If IsNull(Sodonhang) Then 'kiem tra rong khoa chinh

MsgBox "Khong duoc de trong So don hang,nhaplai", vbCritical

Cancel = True

End If

End Sub

b Kiểm tra lỗi dữ liệu nhập vào Combo Mã khách hàng trên Form Main (Combo Box chỉ cho phép chọn các giá trị trong Combo này Nếu nhập vào các giá trị không có trong Combo thì sẽ hiện thông báo lỗi)

Trang 6

Private Sub KhachhangID_AfterUpdate()

If IsNull(DLookup("[KhachhangID]", "[DMKhachhang]", "[KhachhangID]=khachhangid.Value")) Then

Response = MsgBox("Khach hang chua dang ky, Chon lai", vbOKOnly, "Chu y")

KhachhangID.SetFocus

Tenkhachhang.Locked = True

End If

End Sub

c Kiểm tra lỗi dữ liệu nhập vào Combo Mã hàng hóa trên Form Sub (Combo Box chỉ cho phép chọn các giá trị trong Combo này Nếu nhập vào các giá trị không có trong Combo thì sẽ hiện thông báo lỗi) Private Sub HanghoaID_AfterUpdate()

If IsNull(DLookup("[HanghoaID]", "[DMHanghoa]", "[HanghoaID]=Hanghoaid.Value")) Then

Response = MsgBox("Hang hoa chua dang ky, Chon lai", vbOKOnly, "Chu y")

HanghoaID.SetFocus

Tenhanghoa.Locked = True

End If

End Sub

7 Nút Lưu: Lưu dữ liệu nhập vào Trả Form trở về trạng thái ban đầu: Khóa dữ liệu lại 2 nút Lưu và không lưu mờ đi Các nút di chuyển, thêm, sửa, xóa, in sáng lên

Private Sub CmdLuu_Click()

DoCmd.RunCommand acCmdSaveRecord 'Thuc hien luu du lieu'

Sodonhang.Locked = True 'Khoa du lieu lai'

Ngay.Locked = True 'Khoa du lieu lai'

KhachhangID.Locked = True 'Khoa du lieu lai'

Tenkhachhang.Locked = True 'Khoa du lieu lai'

FrmDonhangchitiet.Locked = True 'Khoa du lieu lai'

cmdfirst.Enabled = True 'Nut Ve dau sang len'

cmdlast.Enabled = True 'Nut Ve cuoi sang len'

cmdnext.Enabled = True 'Nut Toi sang len'

cmdtruoc.Enabled = True 'Nut Lui sang len'

CmdIn.Enabled = True 'Nut In sang len'

cmddelete.Enabled = True 'Nut Xoa sang len'

CmdSua.Enabled = True 'Nut Sua sang len'

cmdexit.Enabled = True 'Nut Thoat sang len'

cmdaddnew.Enabled = True 'Nut Them sang len'

Sodonhang.SetFocus 'Tra con tro ve Sodonhang'

CmdLuu.Enabled = False 'Nut Luu mo di'

Cmdkhong.Enabled = False 'Nut Khong Luu mo di'

End Sub

8 Nút Không: Không Lưu dữ liệu nhập vào Trả Form trở về trạng thái ban đầu: Khóa dữ liệu lại 2 nút Lưu và không lưu mờ đi Các nút di chuyển, thêm, sửa, xóa, in sáng lên

Private Sub Cmdkhong_Click()

If Me.Dirty = True Then

Me.Undo

Else

SendKeys "{ESC}", True

End If

Sodonhang.Locked = True 'Khoa du lieu lai'

Trang 7

Ngay.Locked = True 'Khoa du lieu lai'

KhachhangID.Locked = True 'Khoa du lieu lai'

Tenkhachhang.Locked = True 'Khoa du lieu lai'

FrmDonhangchitiet.Locked = True 'Khoa du lieu lai'

cmdfirst.Enabled = True 'Nut Ve dau sang len'

cmdlast.Enabled = True 'Nut Ve cuoi sang len'

cmdnext.Enabled = True 'Nut Toi sang len'

cmdtruoc.Enabled = True 'Nut Lui sang len'

CmdIn.Enabled = True 'Nut In sang len'

cmddelete.Enabled = True 'Nut Xoa sang len'

CmdSua.Enabled = True 'Nut Sua sang len'

cmdexit.Enabled = True 'Nut Thoat sang len'

cmdaddnew.Enabled = True 'Nut Them sang len'

Sodonhang.SetFocus 'Tra con tro ve Sodonhang'

CmdLuu.Enabled = False 'Nut Luu mo di'

Cmdkhong.Enabled = False 'Nut Khong Luu mo di'

End Sub

9 Nút Xóa: Xóa dữ liệu, hiện thông báo lỗi khi form Sub có dữ liệu, không xóa được Viết Code trên 3 biến cố: On Click của nút Xóa và 2 biến cố BeforeDelConfirm, On Delete của Form Main

Private Sub cmddelete_Click()

On Error GoTo LOI

DoCmd.SetWarnings (False)

DoCmd.RunCommand acCmdDeleteRecord

If Me.Recordset.RecordCount > 0 Then

Me.Recordset.MovePrevious

End If

Exit Sub

LOI:

MsgBox "Khong the xoa mau tin"

End Sub

Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer)

If MsgBox("Ban co muon xoa mau tin nay khong?", vbQuestion + vbYesNo, "Thong bao xoa") = vbNo Then Cancel = True 'Huy bien co

Else

Response = acDataErrContinue 'Tat thong bao cua Access

End If

End Sub

Private Sub Form_Delete(Cancel As Integer)

If DCount("*", "Donhangchitiet", "Sodonhang=forms!FrmNhapdonhang!Sodonhang") > 0 Then

MsgBox "Khong the xoa So don hang nay vi da co nhap hang hoa ", vbCritical + vbOKOnly, "Khong the xoa" Cancel = True

End If

End Sub

10 Nút Thoát: Đóng Form

Private Sub cmdexit_Click()

If MsgBox("Ban co muon thoat khoi form khong", vbInformation + vbYesNo, "Chu y") = vbNo Then

Cancel = True

Else

DoCmd.Close , , acSaveYes

End If

End Sub

Ngày đăng: 13/12/2013, 01:16

TỪ KHÓA LIÊN QUAN

w