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

Cơ Sở Dữ Liệu Hướng Đối Tượng

77 568 4

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Cơ sở dữ liệu hướng đối tượng cung cấp cho bạn đọc những kiến thức cơ bản vè sử dụng và quản trị cơ sở dữ liệu hướng đối tượng, cách xây dựng một mô hình cơ sở dữ liệu hướng đối tượng thực tế. Một tài liệu được viết bởi các thầy vien công nghệ thông tin.

Phương Đông ICT – Nơi tụ hội người yêu công nghệ http://phuongdongict.net cL c Ch ng Ch ng u CSDL H ng iT ng ng Và H Qu n Tr ObjectStore PSE Pro .5 2.1 C S D Li u H iT ng 2.2 Các Khái Ni m C B n Trong CSDL H ng iT ng 2.2.1 it ng (Object) 2.2.2 nh danh it ng (Object Identifier) 2.2.3 Thu c tính it ng (Attribute) 2.2.4 Tr ng thái it ng (State) 2.2.5 Hành vi 2.2.6 L p it it ng (Behaviour) ng (Class) 2.2.7 óng gói d li u (Data Encapsulation) 2.2.8 Th a k (Inheritance) 2.2.9 a hình (Polymorphism) 11 2.3 Chu n CSDL H 2.3.1 it ng iT ng ODMG 12 ng Literal 12 2.3.2 Giao di n l p 2.3.3 T p Ch a 15 2.3.4 2.3.5 2.4 Ch it it ng nguyên t 16 T p ch a lâu b n khoá H Qu n Tr CSDL H ng ng 13 it ng iT Xây D ng CSDL H ng 3.1 nh Ngh a Các 3.2 Thi t K CSDL H iT ng it ng 18 ng ObjectStore PSE Pro 18 iT ng 20 ng Trong CSDL B ng ODL 20 iT ng B ng ObjectStore Database Designer 23 3.2.1 Thi t k ng 23 3.2.2 Thi t k Quan h 26 Khoá lu n T t nghi p 3.3 Cài ih c H Công Ngh - HQGHN t C S D Li u H ng ng 32 3.3.1 Sinh mã l p 3.3.2 Giao di n l p it ng CSDL 35 3.3.3 N i dung l p it ng 40 3.3.4 Các ki u quan h ObjectStore 43 3.3.5 M t s T khoá Ph 3.3.6 Cài 3.3.7 Biên d ch CSDL 47 Ch ng 4.1 Cài it iT t n i dung ph Cài ng CSDL 32 ng th c m r ng cho CSDL 45 ng th c c a l p t Và Th c Thi Ch t Ch ng Trình ng Trình it ng 46 ng D ng CSDL 49 ng D ng CSDL 49 4.1.1 T o giao di n ch 4.1.2 Khai báo bi n truy xu t CSDL 50 4.1.3 T o m m t CSDL 51 4.1.4 Thi t l p giao tác CSDL 52 4.1.5 T o 4.1.6 Th c thi hành vi 4.1.7 Thi t l p quan h CSDL 55 4.1.8 C p nh t Xoá m t 4.2 it Th c Thi Ch ng trình ng d ng 50 ng thi t l p d li u thành viên 52 ng Trình Menu ch 4.2.2 Qu n lý 4.2.3 Th c thi hành vi 4.2.4 Thi t l p quan h ng it ng 54 ng CSDL 56 ng D ng 56 4.2.1 Ch it ng trình 56 it ng d li u 58 it it ng 58 ng ki m tra tính toàn v n tham chi u 59 ng k t 62 Ph l c A Giao di n m t s Form qu n lý ng it ng ch ng trình ng 63 Ph l c B Mã ngu n ch ng trình ng d ng VB Qu n lý m t s it ng 68 Tài li u tham kh o TH&XD CSDL H T Cao Xuân Vinh Khoá lu n T t nghi p Ch ng M ih c H Công Ngh - HQGHN u s d li u (CSDL) ã tr thành m t b ph n ch y u, không th thi u h u h t h th ng thông tin D li u CSDL m c ích, m c tiêu, tr ng tâm, c s cho vi c v n hành, phát tri n c a h th ng thông tin c ng nh ch ng trình, ph n m m ng d ng Hi n nay, h th ng thông tin hay CSDL u ch y u s d ng m t ki u CSDL truy n th ng CSDL Quan h , m t ki u CSDL ã c phát tri n ng d ng r ng rãi Tuy nhiên v i s phát tri n r t nhanh chóng c a Công ngh thông tin, CSDL quan h ã d n b c l nh ng y u m r t nhi u h n ch , c bi t vi c xây d ng ng d ng có d li u ph c t p, d li u a chi u, d li u có nhi u m i quan h , hay d li u “ a ph ng ti n” (multi-media) nh hình nh, âm thanh, video CSDL H ng i t ng gi i pháp cho v n Trong CSDL h ng i t ng, d li u c l u tr d i d ng i t ng c a ngôn ng l p trình nên cho phép l u tr c d ng d li u ph c t p, l ng thông tin l n, a chi u, a quan h , hay có th m r ng l u tr d li u a ph ng ti n nh hình nh, âm thanh, video Các d li u không ch c l u tr n thu n, mà c hành vi c a i ng d li u c ng c l u tr CSDL Trên th gi i, nhi u h qu n tr CSDL h ng i t ng c phát tri n, nhiên vi c ng d ng l i òi h i nhi u hi u ch a c ph bi n r ng rãi Vi t nam, CSDL h ng i t i, ho c m i ch c nghiên c u m c r t ít, t p chung ch có nh ng ng d ng th c s c th ã, ang, s ti p t c bi t công s c, nên ng m t v n r t y u lý thuy t, ch a Do v y, vi c Tìm hi u Xây d ng C s d li u H ng i t ng m t n c n c quan tâm, tìm hi u th c hi n ây m t v n khó, òi h i nh ng hi u bi t sâu s c v CSDL ph ng pháp H ng i t ng M c dù r t nhi u h n ch , nh ng tài s c g ng tìm hi u t t ng cách xây d ng m t CSDL h ng i t ng, m c dù m c r t n gi n, nh m d n a nh ng t ng chung nh ng k thu t c b n c a vi c xây d ng CSDL h ng i t ng tài s th c hi n xây d ng m t CSDL h ng it ng, CSDL Qu n lý c t p (Learning Manager), nh m minh ho vi c s d ng h qu n tr CSDL h ng i t ng ObjectStore PSE Pro for C++ quy trình xây d ng m t CSDL h ng i TH&XD CSDL H T Cao Xuân Vinh Khoá lu n T t nghi p ih c H Công Ngh - HQGHN ng Do có nhi u h n ch , nên tài s không i sâu vào trình mô hình hoá, phân tích, thi t k h ng i t ng, mà i tr c ti p vào trình xây d ng CSDL Trong CSDL Qu n lý H c t p, m t s là: it ng d li u s • Student: it ng Sinh viên • Teacher: it ng Giáo viên • Class: it ng L p h c • Department: it • Subject: ng Môn h c • Mark: it it c xây d ng qu n lý ng ng Phòng B môn, Khoa m c a Môn h c c a Sinh viên Các thu c tính, hành vi c a i t ng, c ng nh quan h i t ng xây d ng m c n gi n, nh m minh ho m t s v n c a CSDL h ng ng TH&XD CSDL H T c i Cao Xuân Vinh Khoá lu n T t nghi p Ch ih c H Công Ngh - HQGHN ng CSDL H ng i T ng Và H Qu n Tr ObjectStore PSE Pro 2.1 C S D Li u H ng iT ng s d li u H ng i t ng (Object-Oriented Database) m t ki u CSDL, mà ó, d li u c l u tr d i d ng i t ng Hay C s d li u H ng i t ng c xây d ng b ng cách k t h p y u t c a C s d li u k thu t c a L p trình H ng i t ng nh m m c ích l u tr i t ng li u T ó, có th t n d ng, phát huy c nh ng u m, l i ích, th m nh a k thu t, công ngh c s d ng, kh n c a ki u CSDL khác ng th i kh c ph c nh ng y u m, khó Hình sau minh ho vi c t h p y u t c a CSDL k thu t c a l p trình h ng i t ng xây d ng nên CSDL h ng i t ng: nh danh i t ng (Object Identity) Th a k (Inheritance) óng gói (Encapsulation) a hình (Polymorphism) p trình H ng i t ng Toàn v n (Integrity) s d li u H An toàn (Security) ng it u tr (Archive) ng Khôi ph c (Recover) s d li u Giao tác (Transaction) Phiên b n (Versioning) ng b (Concurrency) n t i lâu (Persistence) Hình 1: Các thành ph n c a CSDL h TH&XD CSDL H T Truy v n (Query) ng it ng Cao Xuân Vinh Khoá lu n T t nghi p ih c H Công Ngh - HQGHN Các u m c a CSDL h óng i t ng, có th th c hi n k thu t c a l p trình h ng i t ng K thu t l p trình H ng c s d ng i t ng hi n ã có m t n n t ng lý thuy t v ng ch c, k thu t l p trình ã tr thành c s cho m i ngôn ng l p trình Có nhi u ngôn ng l p trình ang c s d ng r ng rãi ch u nh C++, Java, SmallTalk, g n ây nh t công ngh NET c a Microsoft Vi c xây d ng d li u CSDL H ng i t ng có m t s ng nh t, hay c th h n s d ng tr c ti p k thu t ngôn ng l p trình h ng i t ng xây ng lên i t ng d li u Do ó, có th d dàng c s d ng ph n m ng d ng l p trình h ng i t ng xây d ng, truy v n thao tác d li u mà không g p khó kh n, h n ch nh s d ng CSDL quan h 2.2 Các Khái Ni m C B n Trong CSDL H 2.2.1 it ng iT ng ng (Object) i t ng m t khái ni m c th ho c tr u t ng, ch m t ng i, m t a m, hay m t v t ó t n t i th gi i th c i t ng th gi i th c c xác nh nh t, ch a m t t p nh t nh thông tin v i t ng hành vi d a thông tin ó M t i t ng c ng có th có m i quan h hay có kh ng trao i thông tin v i i t ng khác Ví d : m t i t ng Sinh viên m t ng i ang h c m t tr ng i c, c xác nh nh t th gi i th c, ch a m t t p nh t nh thông tin Sinh viên ó, nh Mã Sinh viên, H tên, Ngày sinh, Tr ng i h c mà Sinh viên ang theo h c M t i t ng Sinh viên có th có quan h v i i t ng khác, nh quan h v i i t ng L p h c, hay i t ng m môn h c c a Sinh viên Các hành vi d a thông tin ó nh hành vi thay i Mã s Sinh viên c a i ng, tr v giá tr Tu i, hay tính m trung bình môn h c c a Sinh viên Trong CSDL h ng i t ng, i t ng th gi i th c c mô hình hoá, bi u di n vào CSDL theo úng c tr ng c a i t ng, trì t ng ng tr c ti p gi a i t ng CSDL v i i th gi i th c 2.2.2 nh danh it ng (Object Identifier) t i t ng c xác nh nh t th gi i th c, ó, c ng ph i c bi u di n nh t CSDL Vi c xác nh nh t i t ng CSDL c th c hi n b ng cách s d ng nh danh i t ng (Object Identifier) hay OID M t OID m t giá tr c gán cho m t i t ng, dùng xác nh nh t i t ng ó h th ng Hai i t ng khác không th có OID TH&XD CSDL H T Cao Xuân Vinh Khoá lu n T t nghi p ih c H Công Ngh - HQGHN i hoàn c nh, c m t i t ng ã b xoá kh i h th ng, u nh m m b o tính nh t t ng ng v i tính nh t c a i t ng th gi i th c Do ó, m t OID c gán cho m t i t ng th i m kh i t o, không b thay i cho n i t ng b hu b , không c gán l i cho i t ng khác c i t ng ã b hu b OID c a i t ng c h th ng sinh không ph thu c vào c tr ng c a i t ng Chú ý, nh danh i t ng OID khác v i khoá c a i t ng Khoá c a i t ng m t thu c tính c a i t ng, c ng i dùng gán giá tr , có th nhìn th y, thay i c, có th c c p l i, OID không th Ví d : m t Sinh viên c bi u di n CSDL có m t OID nh t, xác nh s t ng ng v i Sinh viên ó th gi i th c M t Sinh viên khác th gi i th c n u c bi u di n CSDL ph i có m t OID khác v i OID c a Sinh viên trên, th m chí c Sinh viên ã b xoá kh i h th ng u m b o s ng ng c a CSDL v i th gi i th c, tránh s nh m l n v i t ng c bi u di n CSDL 2.2.3 Thu c tính it ng (Attribute) Các i t ng ch a m t t p thông tin nh t nh v i t ng, hay g i thu c tính i t ng M i thu c tính có m t tên nh t i t ng giá tr c bi u di n mi n giá tr c a m t ki u d li u ó Các ki u d li u có th ki u d li u c b n, nh ki u s nguyên, s th c, ki u xâu kí t …, ho c ki u d li u ph c t p ng i dùng nh ngh a, ki u i t ng, ho c c ng có th tr hay vector n ki u d li u ó Ví d : thu c tính Mã Sinh viên c a i t ng Sinh viên có ki u d li u m t xâu kí t , có giá tr nh “SV0122177”, thu c tính N m sinh c a Sinh viên có ki u t s nguyên, nh 1983 Hay thu c tính L p tr ng c a m t i t ng L p h c t tr n m t i t ng Sinh viên 2.2.4 Tr ng thái it ng (State) Tr ng thái c a m t i t ng th hi n c a i t ng t i m t th i m nh t nh, bao g m m t t p giá tr c a thu c tính i t ng t i th i m ó Tr ng thái c a i t ng có th thay i theo th i gian, t ng ng v i s thay i giá tr c a thu c tính i t ng T p t t c tr ng thái có th c a i t ng c g i ng tr ng thái (State Net) thay i tr ng thái c a i t ng (thay i giá tr TH&XD CSDL H T Cao Xuân Vinh Khoá lu n T t nghi p ih c thu c tính), c n g i thông vi c a i t ng 2.2.5 Hành vi it H Công Ngh - HQGHN ph pl n it ng, hay yêu c u th c thi hành ng (Behaviour) Hành vi c a m t i t thu c tính c a i t ng, ng thao tác h p l c a i t ng ó c s d ng kh i t o hay thay i giá tr c a thu c tính, ho c tr v m t giá tr ó d a giá tr thu c tính c a i t ng Các i t ng khác có th truy n thông p, hay yêu c u i t ng th c thi hành vi b ng vi c g i tên c a hành vi ó tham s n u có Trong CSDL h ng i t ng, h u h t i t ng u c nh ngh a tr c m t s hành vi c b n s d ng cho CSDL, nh hành vi t o m i i t ng, p nh t thông tin, xoá i t ng Các hành vi ng i dùng nh ngh a có th c s d ng cho vi c truy v n hay c p nh t i t ng Ví d , m t i t ng Sinh viên có hành vi getAverageMark() setName(char Name), l n l t tr v giá tr trung bình c a m môn h c c a Sinh viên, thi t l p Tên c a Sinh viên theo tham s truy n vào t hành vi i t ng có th cg it i t ng b ng s d ng d u ch m (.) tên c a hành vi tham s Ví d n u aStudent m t i t ng Student, l i g i aStudent.getAverageMark(), aStudent.setName (char Name) s g i th c thi hành vi tính m trung bình thi t l p Tên c a Sinh viên 2.2.6 L p it ng (Class) p i t ng m t khái ni m tr u t ng mô t m t c u trúc d li u, bi u th u trúc chung c a m t t p i t ng ki u, hay có c u trúc thu c tính hành vi M i i t ng m t th hi n c th c a l p, có thu c tính hành vi nh c khai báo l p Trong mô hình ngôn ng l p trình h ng i ng, l p th ng c mô t b ng t khoá class Ví d : l p Sinh viên mô t c u trúc chung c a khai báo ngôn ng l p trình C++ nh sau: class Student { private: // Khai báo thu c tính char StudentID; char Name; char Birthday; TH&XD CSDL H T it it ng Sinh viên, c ng: Cao Xuân Vinh Khoá lu n T t nghi p ih c H Công Ngh - HQGHN char Gender; char Address; public: // Khai báo hành vi i t ng: void setStudentID (char SID); void setName (char Name); float getAverageMark (); } 2.2.7 óng gói d li u (Data Encapsulation) truy v n hay c p nh t thu c tính c a m t i t ng, i t ng khác ch có th truy n thông p hay yêu c u th c thi hành vi c a i t ng, mà không th truy c p n c u trúc d li u bên c a i t ng, c ng không c n bi t n chi ti t th c hi n c a i t ng u nh m m b o tính toàn v n a i t ng, che gi u thông tin, c g i óng gói d li u (Data Encapsulation) óng gói m t c m c a CSDL h ng i t ng không c s d ng ki u CSDL truy n th ng Do ó CSDL truy n th ng, ng i dùng hay ch ng trình ng d ng có th nhìn th y, truy c p thay i d li u c a i t ng, làm nh h ng n vi c m b o tính toàn v n c a d li u Ví d : Các i t ng khác không th truy c p c p nh t giá tr c a thu c tính ã c óng gói i t ng Sinh viên, nh vi c tính m trung bình hay thi t l p giá tr Tên c a Sinh viên Các hành vi c i t ng Sinh viên ó th c hi n, nh m ch cho phép c p nh t h p l c th c hi n, hay che d u chi ti t th c hi n bên c a 2.2.8 it ng Th a k (Inheritance) Các d li u CSDL h ng i t ng i t ng ki u nh tr c th ng có c u trúc ph c t p, nhi u i t ng l i có m t c u trúc ho c m t ph n c u trúc d li u Do ó, vi c s d ng l i, m r ng m t ki u d li u, hay ki u i t ng có s n r t c n thi t quan tr ng u có th c th c hi n h th ng h ng i t ng b ng cách s d ng k thu t th a k Th a k k thu t cho phép m t l p i t ng có kh n ng th a h ng t t c tính ch t c tr ng c a m t l p i t ng khác, bao g m t t c thu c tính, hành vi quan h i t ng Do ó, th a k cho phép i t ng m i ct o TH&XD CSDL H T Cao Xuân Vinh Khoá lu n T t nghi p Ch ih c H Công Ngh - HQGHN ng T ng k t c dù nhi u thi u xót h n ch , nh ng tài c ng ã thu cm ts t qu vi c “Tìm hi u Xây d ng CSDL h ng i t ng” M t s k t qu chính, c th là: Th nh t, tài ch ng t c CSDL h ng i t ng m t v n quan tr ng, c n nghiên c u, tìm hi u k c v t t ng quy trình, k thu t xây d ng CSDL h ng i t ng Ch c u m c a CSDL h ng i t ng so v i CSDL quan h , c bi t h th ng v i d li u ph c t p Th hai, tài a m t s khái ni m c b n, c s cho vi c xây d ng CSDL h ng i t ng Ngoài ra, tài c ng gi i thi u cm ts c mc a chu n CSDL h ng i t ng ODMG, hay h qu n tr CSDL h ng i t ng nh ObjectStore PSE Pro Th ba, tài ã xây d ng c m t ví d , minh ho quy trình k thu t xây ng CSDL h ng i t ng Bao g m vi c nh ngh a, thi t k , xây d ng CSDL, minh ho b ng m t ch ng trình ng d ng c th u nh m c th hoá m t minh ho CSDL h ng i t ng, nh m th hi n tr c quan ch c t tính th c t , có th th c hi n c c a CSDL h i t ng mang l i ng it Trên ây m i ch m t s v n ng c ng nh l i ích mà CSDL h kh i ng u c a vi c tìm hi u xây d ng CSDL h ng i t ng tài c n ti p t c c tìm hi u sâu h n c v t t ng l n thu t, c ng nh vi c áp d ng CSDL h ng i t ng vào th c t Trong t ng lai không xa, ch c ch n CSDL h ng i t ng s c phát tri n nhanh chóng c ng d ng r ng rãi h th ng thông tin, ch ng trình, ph n m m ng ng, khoa h c công ngh c i s ng… TH&XD CSDL H T 62 Cao Xuân Vinh Khoá lu n T t nghi p ih c H Công Ngh - HQGHN Ph l c A Giao di n m t s Form qu n lý i t ch ng trình ng d ng ng Form Student: Form Teacher: TH&XD CSDL H T 63 Cao Xuân Vinh Khoá lu n T t nghi p TH&XD CSDL H T ih c H Công Ngh - HQGHN 64 Cao Xuân Vinh Khoá lu n T t nghi p ih c H Công Ngh - HQGHN Form Class: Form Subject: TH&XD CSDL H T 65 Cao Xuân Vinh Khoá lu n T t nghi p ih c H Công Ngh - HQGHN Form Mark: Form Department: TH&XD CSDL H T 66 Cao Xuân Vinh Khoá lu n T t nghi p ih c H Công Ngh - HQGHN Form Search Student: Form Database Browser: TH&XD CSDL H T 67 Cao Xuân Vinh Khoá lu n T t nghi p ih c H Công Ngh - HQGHN Ph l c B Mã ngu n ch ng trình ng d ng VB Qu n lý m t s i t ng Form Student: Private Sub cmdCreate_Click() On Error GoTo RB: If txtStudentID = "" Then MsgBox "The Student ID can not be empty!" Exit Sub End If If CheckExistedID(txtStudentID) Then MsgBox "The Student ID has existed, Please use anothe ID" Exit Sub End If Dim aStudent As IStudent Dim aClass As IClass Set aClass = getClassHasName(cboClass.Text) ObjectStore.BeginTrans Set aStudent = ObjectDB_Server.CreateStudentEmpty(ObjectDB, 1) With aStudent StudentID = OsStr(txtStudentID) Name.FirstName = OsStr(txtFirstName) Name.MidName = OsStr(txtMidName) Name.LastName = OsStr(txtLastName) Birthday.Day = OsNumber(txtDay) Birthday.Month = OsNumber(txtMonth) Birthday.Year = OsNumber(txtYear) Gender = OsStr(cboGender.Text) Address.DoorNo = OsStr(txtNo) Address.Street = OsStr(txtStreet) Address.City = OsStr(txtCity) TH&XD CSDL H T 68 Cao Xuân Vinh Khoá lu n T t nghi p ih c H Công Ngh - HQGHN Address.Province = OsStr(txtProvince) Phone = OsStr(txtPhone) Email = OsStr(txtEmail) If aClass Is Nothing Then Else aStudent.belongToClass = aClass End If End With ObjectStore.CommitTrans lstStudentRefresh setSelectedList (aStudent.StudentID) Exit Sub RB: MsgBox "Error: " & Err.Description ObjectStore.Rollback End Sub Private Sub cmdDelete_Click() On Error GoTo RB Dim aStudent As IStudent Set aStudent = getCurrentStudent ObjectStore.BeginTrans 'aStudent.belongToClass = Nothing CStudent.GetExtents(ObjectDB).Remove aStudent ObjectStore.CommitTrans lstStudentRefresh Exit Sub RB: MsgBox "Error: " & Err.Description ObjectStore.Rollback End Sub Private Sub cmdGetFullName_Click() Dim aStudent As IStudent Set aStudent = getCurrentStudent ObjectStore.BeginTrans MsgBox aStudent.Name.getFullName ObjectStore.CommitTrans TH&XD CSDL H T 69 Cao Xuân Vinh Khoá lu n T t nghi p ih c H Công Ngh - HQGHN End Sub Private Sub cmdRefresh_Click() lstStudentRefresh End Sub Private Sub cmdShowMark_Click() Dim aForm As New treeHasMarks aForm.Show Dim aStudent As IStudent Set aStudent = getCurrentStudent aForm.lblTitle = aStudent.StudentID aForm.TreeRefresh aStudent.hasMarks End Sub Private Sub cmdUpdate_Click() Dim aStudent As IStudent Set aStudent = getCurrentStudent Dim aClass As IClass Set aClass = getClassHasName(cboClass.Text) On Error GoTo RB ObjectStore.BeginTrans With aStudent StudentID = OsStr(txtStudentID) Name.FirstName = OsStr(txtFirstName) Name.MidName = OsStr(txtMidName) Name.LastName = OsStr(txtLastName) Birthday.Day = OsNumber(txtDay) Birthday.Month = OsNumber(txtMonth) Birthday.Year = OsNumber(txtYear) Gender = OsStr(cboGender.Text) Address.DoorNo = OsStr(txtNo) Address.Street = OsStr(txtStreet) Address.City = OsStr(txtCity) Address.Province = OsStr(txtProvince) Phone = OsStr(txtPhone) TH&XD CSDL H T 70 Cao Xuân Vinh Khoá lu n T t nghi p ih c H Công Ngh - HQGHN Email = OsStr(txtEmail) If Not aClass Is Nothing Then aStudent.belongToClass = aClass End If End With ObjectStore.CommitTrans lstStudentRefresh setSelectedList (aStudent.StudentID) Exit Sub RB: MsgBox "Error: " & Err.Description ObjectStore.Rollback End Sub Private Sub cmdGetAvgMark_Click() On Error GoTo er: Dim aStudent As IStudent Set aStudent = getCurrentStudent MsgBox aStudent.getAverageMark, , "Behaviour: Student.getAverageMark()" Exit Sub er: MsgBox Err.Description End Sub Private Sub cmdGetInfo_Click() On Error GoTo er: Dim aStudent As IStudent Set aStudent = getCurrentStudent ObjectStore.BeginTrans MsgBox aStudent.getInfo, , "Behaviour: Student.getInfo()" ObjectStore.CommitTrans Exit Sub er: MsgBox Err.Description End Sub Private Sub Form_Load() lstStudentRefresh TH&XD CSDL H T 71 Cao Xuân Vinh Khoá lu n T t nghi p ih c H Công Ngh - HQGHN ObjectDB.SetUndoMarker End Sub Private Sub lstStudent_Click() loadStudentInfo getCurrentStudent End Sub Public Function lstStudentRefresh() On Error GoTo er cboClass.Clear ObjectStore.BeginTrans Dim aClass As IClass For Each aClass In CClass.GetExtents(ObjectDB) cboClass.AddItem (aClass.Name) Next ObjectStore.Rollback lstStudent.Clear ObjectStore.BeginTrans Dim aStudent As IStudent For Each aStudent In CStudent.GetExtents(ObjectDB) lstStudent.AddItem (aStudent.StudentID & ": " & aStudent.Name.FirstName & " " & aStudent.Name.MidName & " " & aStudent.Name.LastName) Next ObjectStore.Rollback If lstStudent.ListCount = Then DisableBtn Else EnableBtn lstStudent.ListIndex = End If loadStudentInfo getCurrentStudent Exit Function er: MsgBox Err.Description ObjectStore.Rollback End Function Private Function loadStudentInfo(aStudent As IStudent) On Error GoTo EX: If aStudent Is Nothing Then ClearText TH&XD CSDL H T 72 Cao Xuân Vinh Khoá lu n T t nghi p ih c H Công Ngh - HQGHN With aStudent txtStudentID.Text = StudentID txtFirstName = Name.FirstName txtMidName = Name.MidName txtLastName = Name.LastName txtDay = Birthday.Day txtMonth = Birthday.Month txtYear = Birthday.Year cboGender.Text = Gender txtNo = Address.DoorNo txtStreet = Address.Street txtCity = Address.City txtProvince = Address.Province txtPhone = Phone txtEmail = Email cboClass.Text = "" If belongToClass Is Nothing Then cboClass.Text = "" Else cboClass.Text = aStudent.belongToClass.Name End If End With EX: End Function Private Function getCurrentStudent() As IStudent Dim sID As String sID = lstStudent.List(lstStudent.ListIndex) sID = Left$(sID, InStr(1, sID, ":", vbTextCompare) - 1) Set getCurrentStudent = getStudentHasID(sID) End Function Private Function setSelectedList(sID As String) Dim getID As String For i = To lstStudent.ListCount - getID = lstStudent.List(i) getID = Left$(getID, InStr(1, getID, ":", vbTextCompare) - 1) If getID = sID Then TH&XD CSDL H T 73 Cao Xuân Vinh Khoá lu n T t nghi p ih c H Công Ngh - HQGHN lstStudent.Selected(i) = True Exit For End If Next End Function Private Sub cmdFirst_Click() lstStudent.ListIndex = End Sub Private Sub cmdLast_Click() lstStudent.ListIndex = lstStudent.ListCount - End Sub Private Sub cmdNext_Click() If lstStudent.ListIndex = lstStudent.ListCount - Then lstStudent.ListIndex = Else lstStudent.ListIndex = lstStudent.ListIndex + End If End Sub Private Sub cmdPrev_Click() If lstStudent.ListIndex = Then lstStudent.ListIndex = lstStudent.ListCount - Else lstStudent.ListIndex = lstStudent.ListIndex - End If End Sub Private Sub DisableBtn() cmdUpdate.Enabled = False cmdDelete.Enabled = False End Sub Private Sub EnableBtn() cmdUpdate.Enabled = True cmdDelete.Enabled = True End Sub Private Function CheckExistedID(ID As String) As Boolean CheckExistedID = False ObjectStore.BeginTrans Dim aStudent As IStudent TH&XD CSDL H T 74 Cao Xuân Vinh Khoá lu n T t nghi p ih c H Công Ngh - HQGHN For Each aStudent In CStudent.GetExtents(ObjectDB) If aStudent.StudentID = ID Then CheckExistedID = True Exit For End If Next ObjectStore.CommitTrans End Function Public Sub ClearText() txtCity.Text = "" txtDay.Text = "" txtEmail.Text = "" txtFirstName.Text = "" txtLastName.Text = "" txtMidName.Text = "" txtMonth.Text = "" txtNo.Text = "" txtPhone.Text = "" txtProvince.Text = "" txtStreet.Text = "" txtStudentID.Text = "" txtYear.Text = "" cboClass.Clear cboGender.Clear End Sub TH&XD CSDL H T 75 Cao Xuân Vinh Khoá lu n T t nghi p ih c H Công Ngh - HQGHN Tài li u tham kh o: [1] David W Emplay Object Database Development, Concepts and Principles [2] ActiveX Interface for PSE Pro C++ Document, ObjectStore PSE Pro for C++ 3.0 [3] ObjectStore PSE Pro for C++ Collections User Guide Document, ObjectStore PSE Pro for C++ 3.0 [4] PSE/PSE Pro for C++ API User Guide Document, ObjectStore PSE Pro for C++ 3.0 [5] PSE/PSE Pro for C++ Building Applications Document, ObjectStore PSE Pro for C++ 3.0 [6] Rapid Database Development for PSE Pro C++ Document, ObjectStore PSE Pro for C++ 3.0 [7] Website: http://objectstore.net [8] An V n Minh Phát tri n ph n m m ng d ng theo mô hình H ng Lu n v n t t nghi p i h c Hà n i 2001 [9] Nguy n Th Phi Nga Mô hình C s d li u H t nghi p i h c Hà n i 2002 TH&XD CSDL H T 76 ng it ng i ng Lu n v n Cao Xuân Vinh

Ngày đăng: 27/03/2017, 10:58

TỪ KHÓA LIÊN QUAN

w