Luận văn Xây dựng từ điển MultiMedia

Tài liệu Luận văn Xây dựng từ điển MultiMedia: Bộ Giáo Dục và Đào tạo Trường Đại học Dân lập Đông Đô Khoa Công Nghệ Thông Tin luận văn tốt nghiệp Chuyên ngành: Công nghệ thông tin Giáo viên hướng dẫn: TS. Nguyễn Văn Xuất Giáo viên phản biện: TS. Đào Thanh Tĩnh Sinh viên: Nguyễn Quang Hưng - C2 – CNTT Hà Nội 2000 Mục lục Lời nói đầu....................................................................................................3 Chương I: Phát biểu bài toán.........................................................................4 Một số khái niệm...........................................................................4 Kĩ thuật và công nghệ multimedia............................................4 Từ điển multimedia...................................................................5 Những hệ thống đang sử dụng.......................................................6 Yêu cầu của hệ thống mới.............................................................6 Yêu cầu tra cứu...................................................

doc51 trang | Chia sẻ: hunglv | Lượt xem: 1043 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Luận văn Xây dựng từ điển MultiMedia, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Bộ Giáo Dục và Đào tạo Trường Đại học Dân lập Đông Đô Khoa Công Nghệ Thông Tin luận văn tốt nghiệp Chuyên ngành: Công nghệ thông tin Giáo viên hướng dẫn: TS. Nguyễn Văn Xuất Giáo viên phản biện: TS. Đào Thanh Tĩnh Sinh viên: Nguyễn Quang Hưng - C2 – CNTT Hà Nội 2000 Mục lục Lời nói đầu....................................................................................................3 Chương I: Phát biểu bài toán.........................................................................4 Một số khái niệm...........................................................................4 Kĩ thuật và công nghệ multimedia............................................4 Từ điển multimedia...................................................................5 Những hệ thống đang sử dụng.......................................................6 Yêu cầu của hệ thống mới.............................................................6 Yêu cầu tra cứu.........................................................................7 Yêu cầu dữ liệu.........................................................................7 Yêu cầu bảo mật.......................................................................7 Chương II: Phân tích hệ thống............................................................8 Phân tích dữ liệu............................................................................8 Phân tích chức năng.....................................................................10 2.1 Chức năng tổng quát.................... ...........................................10 2.2.1 Chức năng bảo mật........................ .........................................11 Chức năng cập nhật........................ .......................................11 Chức năng tra cứu....................................................................11 Chương III: Thiết kế hệ thống...........................................................14 Bảng dữ liệu.................................................................................15 Mô hình quan hệ..........................................................................16 Thiết kế giao diện.........................................................................17 Màn hình chính.......................................................................17 Mật khẩu.................................................................................18 Màn hình cập nhật thông tin...................................................19 Màn hình soan thảo các file âm thanh,video..........................20 Giao dien nhập nội dung text..................................................21 Giao diên cập nhật file ảnh.....................................................22 Kết luận.............................................................................................23 Phụ lục 1............................................................................................24 Phụ luc 2............................................................................................30 Tài liệu tham khảo............................................................................52 Lời nói đầu Ngày nay, không ai có thể phủ nhận vai trò của tin học trong mọi lĩnh vực khoa học kĩ thuật đời sống xã hội. Tin học được ứng dụng nhiều trong các công tác quản lí, phục vụ vui chơi giải trí, nghiên cứu khoa học và đặc biệt là tin học được ứng dụng khá nhiều trong kĩ thuật từ điển. Với khả năng lưu trữ lớn máy tính đã thay thế hoàn toàn những cuốn từ điển đồ sộ, hơn thế nữa với tốc độ tìm kiếm rất nhanh, chính sác máy tính đã trở thành một công cụ đắc lực giúp đỡ con người trong việc tra cứu và tìm kiếm thông tin đạt hiệu cao. Hiện nay, sự phát triển mạnh mẽ của công nghệ multimedia đã cung cấp một diện mạo mới cho từ điển. Với sự kết hợp đa dạng của âm thanh hình ảnh đã cung cấp cho người sử dụng nhiều thông tin hơn mở ra một hướng hoàn toàn mới trong việc tra cứu cung như trong thiết kế từ điển. “Xây dựng từ điển multimedia” là một đề tài mới mẻ bắt kịp sự phát triển của công nghệ thông tin nó cũng đáp ứng được nhu cầu ngày càng cao của xã hội. Mục tiêu của đề tài này là thiết kế một bộ công cụ để xây dựng dữ liệu cho từ điển có chủ đề về văn hoá với các dạng dữ liệu như hình ảnh (hội họa), phim video (sân khấu điện ảnh) nội dung bằng chữ (văn học thơ ca) và âm thanh (âm nhạc). Mặc dù có nhiều cố gắng nhưng do hạn chế về thời gian cũng như kinh nghiệm nên bản luận văn này chắc chắn còn nhiều thiếu sót. Em rất mong được sự góp ý kiến của các thầy và bè bạn để chương trình này được hoàn thiện hơn. Em xin chân thành cảm ơn thầy giáo Nguyễn Văn Xuất và các thầy giáo trong khoa Công Nghệ Thông Tin Trường Đại học Dân Lập Đông Đô đã hướng dẫn tận tình và tạo điều kiện cho em hoàn thành đề tài này. Hà nội ngày 30 tháng 05 năm 2000 Sinh viên Nguyễn Quang Hưng Chương I Phát Biểu bài toán Một số khái niệm a. Kỹ thuật và công nghệ Multimedia. Để hiểu thêm chi tiết về mô hình hệ thống multimedia ta đi sâu vào tìm hiểu các dạng file multimedia. Các ưu điểm, nhược điểm cũng như các ứng dụng của các dạng file dữ liệu. Từ đó đưa ra cách sử dụng thích hợp nhất. Các dạng file dữ liệu multimedia. Trong multimedia có các dạng dữ liệu lưu trữ trong máy tính như sau : Văn bản (text). Âm thanh (sound, void) Đối với dữ liệu dạng âm thanh có một số chuẩn để lưu trữ dữ liệu này. Phổ biến nhất hiện nay theo Microsoft đưa ra, theo chuẩn này, dữ liệu âm thanh phục vụ cho multimedia được cất giữ ở các file có phần mở rộng *.WAV và *.MID.Các file dạng *.WAV dùng để chứa dữ liệu âm thanh nói chung và không yêu cầu chất lượng cao. Các file MIDI.MID dùng chứa dữ liệu âm thanh đòi hỏi chất lượng cao thường là âm thanh có giai điệu (audio) như các bản hạc, bài hát, nhạc cụ ghi ta, piano.Các file dạng WAV ghi laị chính bản thân âm thanh còn các file dạng MIDI chỉ ghi lại các câu lệnh. Các câu lệnh này dùng để “nói chuyện” hay ra lệnh cho các thiết bị MIDI phát ra âm thanh. Mỗi câu lệnh trong file MIDI bao gồm các thông tin sau : nốt nhạc, loại nhạc cụ, nhịp điệu và một vài đặc trưng âm nhạc khác.Yêu cầu về phần cứng. Máy tính PC tương thích IBM 8 MR trở lên và chạy Windows 95. Microphone hoặc Recorder hay Cassette. Sound card. Âm điệu (audio) Hình ảnh (image) Các file dữ liệu ảnh được sử dụng trong các tài liệu multimedia rất đa dạng. Nhưng những hình ảnh mà Web Browser có thể hiển thị là các ảnh có dạng * . GIF, * JPEG, *.XBM.*.XBM là dạng ảnh Bitmap dùng cho hệ thống Windows và chỉ hỗ trợ cho 2 màu. Hầu hết các trình duyệt trên PC và Mac đều có thể sử dụng hiển thị dạng ảnh này. Nhưng dạng ảnh này được tạo trên hệ điều hành Unix.GIF : được hỗ trợ 256 màu, nói chung đây là dạng ảnh nén và là những ảnh có kích thước lớn. GIF bị giới hạn trong phạm vi hẹp hơn rất nhiều khi chọn màu. sử dụng GIF có nhiều điểm lợi hơn và là dạng đồ họa phổ biến nhất được dùng trên trang Web. GIF có hiệu quả cao và tính năng nén bên trong làm cho hình ảnh tương đối nhỏ. GIF hỗ trợ tính trong suốt và xen kẽ là các tính năng có thể nâng cao sự hấp dẫn. Video (hình ảnh động-motion image) Dạng dữ liệu kết hợp dữ liệu ảnh động và dữ liệu âm thanh động vào 1 file gọi là dữ liệu video. File chứa dữ liệu video gọi là file loại AVI. Ưu điểm của file loại AVI. Khi thể hiện các file AVI có cảm giác rất thực, mọi việc diễn ra như trong thực tế. Có được như thế là vì sự chuyển động của ẩnh trên màn hình và âm thanh phát ra từ card âm thanh đã đồng bộ với nhau. Nhược điểm của file loại AVI. Khó thay đổi dữ liệu. Animation (hình ảnh sử dụng theo nguyên tắc chiếu phim). Dạng dữ liệu kết hợp dữ liệu ảnh và dữ liệu âm thanh động trong quá trình thể hiện tạo ra dữ liệu animation.Ưu điểm của dữ liệu animation. Trong chế độ hiển thị theo nguyên tắc chiếu phim animation, các ảnh bitmap được chứa trong nhiều file, thứ tự xuất hiện của các ảnh theo kịch bản là thứ tự đọc các file ảnh. Tương tự như vậy đối với âm thanh. Các file âm thanh được chuẩn bị trước thường là file dạng wav. Thứ tự xuất hiện âm thanh tuân theo thứ tự đọc các file dạng wav.Điều này chứng tỏ dữ liệu animation dùng nhiều file vì vậy việc thay đổi rất đơn giản. Nhược điểm của dữ liệu animation. Nhược điểm duy nhất là do sử dụng nhiều file ảnh và âm thanh trong 2 quá trình độc lập nhau vì vậy tính đồng bộ không cao, chất lượng thể hiện không tốt, không có cảm giác thực. c. Từ điển mutimedia Ngày nay với sự phát triển như vũ bão của công nghệ thông tin nói chung và công nghệ multimedia nói riêng đã đem lại một hình thức mới cho từ điển - Từ điển Multimedia. Với khả năng lưu trữ lớn,tìm kiếm thông tin nhanh của máy tính, đa dạng về thông tin thì nguồn thông tin mà từ điển multimedia đem lại không chỉ là những tri thức được thể hiện bằng chữ mà còn kèm theo cả âm thanh hình ảnh một cách trực quan sinh động mang lại cho con người lượng thông tin nhiều hơn phong phú hơn. Các hệ thống đang sử dụng Hiện nay trong cuộc sống hàng ngày của con người không thể thiếu được các công cụ tra cứu, nhất là học sinh sinh viên các bộ từ điển đã phần nào thoả mãn được các nhu cầu tra cứu, hoc tập của họ. Cũng nằm trong việc đáp ứng nhu cầu bức xúc đó các bộ phần mềm từ điển ra đời. Ngay từ khi mới xuất hiện nó đã trở thành một công cụ đồng hành của giới nghiên cứu cũng như những người yêu thích tin học. Tuy nhiên với sự phát triển không ngừng của xã hội thì những phần mềm từ điển cũng phải không ngừng phát triển để bắt kịp vơi đà tăng trưởng đó. Từ điển multimedia ra đời không nằm ngoài xu hướng đó. Ngoài khả năng tra cứu bằng những đoạn văn bản thông thường thì nó còn cung cấp cho người sử dụng những thông tin được cập nhật bằng hình ảnh, âm thanh. Tuy nhiên một khó khăn cho người dùng là việc cập nhật thông tin cho từ điển. Với sự khác nhau về cách sử dụng của mỗi loại nguồn tin hình ảnh, âm thanh, tiếng nói thì đối với người không thạo sử dụng sẽ rất lúng túng trong quá trình cập nhật thông tin cho từ điển. 3. Yêu cầu của hệ thống từ điển multimedia Yêu cầu chung Để khắc phục những nhược điểm qua phần đánh giá ở phần trên, chương trình xây dựng từ điển multimedia được xây dựng với các yêu cầu như sau: Xây dựng phần mềm theo tiêu chuẩn hiện đại đáp ứng những nhu cầu về tra cứu của người sử dụng. Từ thực tế sử dụng chúng ta thấy rằng ngoài việc tra cứu và tìm kiếm thông tin thì người sử dụng cũng có nhu cầu cập nhật những thông tin mới. Để đáp ứng nhu cầu bức thiết đó chương trìng phải có những công cụ hỗ trợ cho việc cập nhật thông tin một cách dễ dàng hiệu quả. Chương trình phải được bảo mật về thông tin, có chế độ cảnh báo đối với người dùng lạ. Yêu cầu về tra cứu Tra cứu tác phẩm theo từng loại hình văn hoá nghệ thuật: Âm nhạc Văn thơ Phim ảnh Tranh ảnh b. Các yêu cầu dữ liệu vào của chương trình Dữ liệu mà chương trình sử dụng và quản lý rất đa dạng và phân tán cho nên phải đảm bảo một số các yêu cầu: Các định dạng file phải chính xác tuyệt đối. Mọi thay đổi về vị trí file dữ liệu đều cần phải cập nhật lại. c. Các yêu cầu bảo mật hệ thống Công nghệ bảo mật thông tin của hệ thông phải thuận tiện, chắc chắn tuy nhiên phải tránh gây phiền hà đối với người sử dụng. Chương II Phân tích hệ thống Phân tích dữ liệu hệ thống Trước hết thiết kế dữ liệu là phải tạo ra một cơ sở dữ liệu lưu trữ thông tin của các đối tượng quản lý như ấn phẩm, tác giả, thể loại... sao cho thông tin không bị lưu trữ dư thừa về mặt logic (không bị trùng lặp) và khi cần có thể truy xuất thông tin theo yêu cầu cho trước. Có nhiều cách thiết kế cơ sở dữ liệu ý niệm, tuy nhiên thông dụng và hữu hiệu nhất là sơ đồ thực thể quan hệ. Mục tiêu của phần này là phải xây dựng được sơ đồ quan hệ thực thể các ấn phẩm văn hoá.Cho phép biểu diễn các thông tin về những mối quan hệ quan trọng giữa chúng. Mô hình dữ liệu làm nền tảng cho việc thiết kế cơ sở dữ liệu trên máy tính. Định nghĩa những vùng dữ liệu chính xuất hiện trong bài toán, đối với việc quản lý các ấn phẩm văn hoá trong giới hạn của bài luận văn này tôi chỉ đề cập đến hệ thống dữ liệu tra cứu và cập nhật thông tin cho các ấn phẩm. Nghiên cứu trong trường hợp quản lý các ấn phẩm chúng ta thấy rằng những thực thể cần nghiên cứu như : Tác giả Tác phẩm Thể loại Nội dung tác phẩm Giữa các đối tượng này có mối quan hệ như sau: Một tác phẩm chỉ có duy nhất một tác giả ngược lại một tác giả lại có thể có nhiều tác phẩm, chúng có quan hệ một - nhiều. Mỗi thể loại cũng có nhiều tác phẩm nhưng mỗi tác phẩm chỉ được xếp vào một thể loại mà thôi, chúng có quan hệ một - nhiều. Giữa tác phẩm và nội dung có mối quan hệ nhiều - nhiều có nghĩa là một ấn phẩm có thể có nhiều nội dung khác nhau ngược lại một nội dung lại có thể xuất hiện ở nhiều ấn phẩm (ví dụ như một đĩa CD âm nhạc có thể có nhiều bài hát và một bài hát lại có thể xuất hiện ở nhiều đĩa CD khác nhau) Chúng ta có hình thể hiện sau đây: Đối với mỗi thực thể ta có những thuộc tính như sau: Tác giả Tên tác giả (*) Thể loại Thông tin tác giả Tác phẩm STT (*) Tên tác phẩm Thể loại Tác giả Năm xuất bản Nhà xuất bản Nội dung tác phẩm Thể loại Thể loại (*) Loại hinh Nội dung Nội dung Loại hình (loại hình của nội dung) Đường dẫn (đường dẫn tới file chứa nội dung) Phân tích các chức năng của hệ thống Qua khảo sát các yêu cầu đối với hệ thống từ điển ấn phẩm, phần này chúng ta tiếp tục phân tích cấu trúc logic của hệ thống. Qua đó có thể nhận biết được mối quan hệ trong hệ thống, làm tiền đề cho các bước tiếp theo. Cách tiếp cân bài toán ở đây là ta đi từ chức năng tổng quát, phân tích thành các chức năng nhỏ hơn. Chức năng tổng quát Đối với một hệ thống từ điển nói chung bao gồm các chức năng như sau: Chức năng bảo mật và an toàn hệ thống Chức năng tra cứu Chức năng cập nhật thông tin Các chức năng Chức năng bảo mật hệ thống: Đối với một ứng dụng liên quan đến cơ sở dữ liệu luôn đòi hỏi thông tin mà nó quản lý phải được bảo vệ chắc chắn. Có hai loại nguy cơ dẫn đến hư hỏng , mất mát thông tin là: nguy cơ từ các sự cố kĩ thuật như hỏng hóc về phần cứng, bộ phận lưu giữ thông tin(đĩa cứng, đĩa mềm ), các nguy cơ làm sai lạc thông tin từ những ý đồ xấu, từ sự sử dụng sai quy định hay thiếu hiểu biết. Đây là những nguy cơ không thể tránh khỏi đối với mọi hệ thông tin. Việc hạn chế tới mức tối đa thiệt hại do nguy cơ sự cố kĩ thuật được gọi là công tác an toàn thông tin của ứng dụng. Công việc phòng chống nguy cơ phá hoại, ăn cắp hoặc làm hỏng thông tin do sử dụng sai mục đích được gọi là công tác bảo mật. Để đảm bảo an toàn dữ liệu của hệ thống, trong sơ sở dữ liệu phải có cơ chế sao lưu định kì ra các công cụ lưu trữ và bảo quản nơi an toàn. Để thực hiện bảo mật dữ liệu chương trình phải tạo lập các kiểm soát đối với người dùng, trong đó có phân biệt rõ ràng đối với người sử dụng. Các thông tin về người dùng sẽ được lưu trữ có hệ thống trong cơ sở dữ liệu đặc trưng. Chức năng cập nhật thông tin. Làm nhiệm vụ cập nhật các dữ liệu đầu vào của chương trình. Do tính chất dữ liệu của hệ thống, chức năng này đòi hỏi người thực hiện phải có tinh thần trách nhiệm cao và có nghiệp vụ theo yêu cầu công việc. Nhìn từ phía phân tích hệ thống, chúng ta thấy nổi lên các vấn đề như sau: Trùng lặp về tên gọi của dữ liệu dẫn đến nhầm lẫn trong tìm kiếm và tra cứu thông tin. Dữ liệu của chương trình là các file nằm rải rác trên thiết bị lưu trữ (ổ cứng) cho nên không thể đảm bảo được việc mất mát thông tin sẽ không sảy ra. Do sự đa dạng và phong phú của dữ liệu hệ thống, chỉ mốt sai sót nhỏ cũng dẫn đến một khả năng là chương trình không nhận biết được về nhận dạng tập tin và sẽ hiển thị thông tin sai về mặt nội dung. Đối với các vấn đề trên chúng ta có cách giải quyết như sau: Xử lý trùng lặp về tên gọi của thông tin, xét về khía cạnh các ấn phẩm như ở phần phân tích dữ liệu chúng ta biết rằng một tác phẩm chỉ có một tác giả ngược lại một tác giả lại có nhiều tác phẩm vậy thì với khoá tìm kiếm gồm hai thuộc tính là tác giả và tác phẩm ta có thể xác định được chính xác một ấn phẩm như mong muốn. Vậy thì việc cập nhật thông tin cho một ấn phẩm nhất thiết phải đầy đủ hai thông tin là tên tác phẩm và tên tác giả. Xử lý về việc thông tin nằm phân tán trên các thiết bị lưu trữ, một giải pháp được đưa ra là sao lưu toàn bộ dữ liệu của chương trình vào một nơi quy định mà độ an toàn thông tin cao hơn (như đĩa CDROM hay băng từ) đề phòng trường hợp mất mát thông tin thì chương trình sẽ tìm trên các thiết bị lưu trữ và khôi phục lại dữ liệu đã bị mất. Việc này tỏ ra rất hữu ích tuy nhiên nó cũng có hạn chế là nó sẽ chiếm nhiều tài nguyên của hệ thống. Về sự đa dạng của thông tin cho nên phải có cơ chế kiểm tra nghiêm ngặt các thông tin đầu vào. Thứ hai phải phân loại thông tin theo các chủng loại sau: Hình ảnh(picture) Âm thanh (audio) Văn bản (text) Hình ảnh động (video) Khi cập nhật các thông tin này ta có cơ chế lọc thông tin cho từng chủng loại trên và cho phép người sử dụng có thể được xem thông tin trước khi nó được đưa vào cơ sở dữ liệu để quản lý. Điều này đảm bảo cho thông tin đầu vào luôn luôn đúng đắn về mặt nội dung cũng như cho logic của hệ thống . 2.2.3 Chức năng tra cứu thông tin. Đây là chức năng đáp ứng những yêu cầu về tra cứu thông tin của người sử dụng. Do tính chất cũng như nhu cầu của bài toán chức năng này phải đáp ứng những yêu cầu cụ thể sau: Có thể tra cứu các tác phẩm của một tác giả Có thể tra cứu các tác phẩm của một trong một giai đoạn (theo năm xuất bản). Liệt kê các tác phẩm của một nhà xuất bản đã từng ấn hành. Có thể truy xuất nội dung của một tác phẩm theo từng loại hình khác nhau có thể là một bức tranh, một đoạn truyện ngắn một bản nhạc hay một bộ phim. Tất cả những điều đó nằm trong chức năng tra cứu. Thao tac của chức năng này là truy xuất các thông tin của một ấn phẩm trong cơ sở dữ liệu sau đó thể hiện lên trên biểu mẫu. Chương III Thiết kế chương trình từ điển Sơ đồ thuật toán của chương trình 1. Thiết kế các bảng cơ sở dữ liệu Bảng là một đối tượng được định nghĩa và dùng để lưu giữ liệu mỗi bảng lưu giữ các thông tin về một chủ thể nhất định. Trên cơ sở phân tích dữ liệu ở trên ta thiết kế các bảng để lưu trữ dữ liệu trong chương trình như sau: * Dữ liệu đầu vào Bảng tacpham Tên Kiểu Độ rộng Khoá ý nghĩa Tentacpham Text 30 Tên tác phẩm stt Integer 4 * Mã tác phẩm tacgia Text 30 Tên tác giả theloai Text 4 Tên thể loại Noidung Integer 4 Nội dung Namsangtac Integer 4 Năm sáng tác Nhaxuatban Text 50 Nhà xuất bản * Dữ liệu trích rút ảng tacgia Tên Kiểu Độ rộng Khoá ý nghĩa Tentacgia Text 30 * Tên tác giả Theloai Integer 4 Thể loại Ghichu Text 50 Ghi chú Bảng tepnoidung Tên Kiểu Độ rộng Khoá ý nghĩa Noidung integer 4 * Mã tệp nội dung Tentep Text 30 Tên tệp Duongdan Text 50 Đường dẫn Loaihinh text 6 Định dạng tệp Bảng theloai Tên Kiểu Độ rộng Khoá ý nghĩa Tentheloai Text 30 * Tên thể loại Loaihnh Text 30 Loại hình Ghichu Text 50 Ghi chú e. Bảng mật khẩu Tên Kiểu Độ rộng Khoá ý nghĩa TenNguoiSuDung Text 30 Tên Người Sử Dụng Matkhau Text 8 Mật khẩu 2. Mô hình quan hệ cơ sở dữ liệu trong thiết kế 2.2.2 Thiết kế giao diện chương trình a. Màn hình chính b. Màn hình khai báo mật khẩu c. Màn hình cập nhật thông tin d. Các màn hình soạn thảo thông tin là các file âm thanh và phim e. Giao dien nhập nội dung text f. Giao diện nhập file ảnh Kết luận Qua thời gian thực tập và làm đồ án tốt nghiệp em đã nhận được sự chỉ bảo và giúp đỡ tận tình của thầy giáo hướng dẫn, với kiến thức thu được ở trường, cùng với sự cố gắng của bản thân em đã hoàn thành bản luận văn này. Theo đánh giá của bản thân em đã làm được các vẫn đề sau: Hoàn thành giai đoạn khảo sát và xác định mục tiêu của hệ thống từ điển. Phân tích hệ thống, xây dựng mô hình chức năng và mô hình dữ liệu . Tiến hành thết kế và cài đặt thử nghiệm chương trình. Tuy nhiên với thời gian và kinh nghiệm thực tế chưa nhiều nên trong bản đồ án còn nhiều thiếu sót. Một lần nữa em rất mong nhận được sự chỉ bảo của các thầy giáo để khắc phục những thiếu sót đó. Phụ lục I Giới thiệu về visual basic và ngôn ngữ sql 1. Visual Basic 5.0 Visual Basic đã trải qua một chặng đường dài từ khi ra đời vào đầu những năm 90. Là công cụ RAD(Rapid Application Development Phát triển ứng dụng nhanh), Visual Basic giúp cho quá trình phát triển các ứng dụng dưới môi trường Windows trở lên dễ dàng và hiệu quả. Phiên bản Visual Basic 5.0 có rất nhiều cải tiến, nhưng nổi bật nhất là khả năng biên dịch các ứng dụng thành mã bẩm sinh và khả năng tạo các thành phần ActiveX. Với nhiều tính năng mới, Visual Basic 5.0 đã trở thành một ngôn ngữ phát triển hệ khách/chủ đa dạng và toàn diện nhất trong giới tin học hiện nay. Tính năng biên dịch các ứng dụng thành mã bẩm sinh đã được công nhận là nhanh hơn 20% so với mã P trong phiên bản 4.0. Có rất nhiều Control mới được bổ sung vào phiên bản Visual Basic 5.0 Enterprise Edition. Khả năng tạo ra các lớp làm cho Visual Basic 5.0 trở thành một ngôn ngữ định hướng đối tượng thực sự. Visual Basic là một môi trường mở. Nó có thể hỗ trợ Client/Server, Architecture, ActiveX,Component Object Model (COM), Distributed Component Object Model (DOM), Open Database Connectivity(ODBC)... Với bộ công cụ mạnh, Visual Basic 5.0 có thể can thiệp khá sâu vào hệ thống, tạo ra các Control phục vụ trong các ứng dụng, hoặc cung cấp cho các nhà phát triển khác. Khả năng liên kết nhúng trong môi trường Windows là một thế mạnh của Visual Basic nói chung và Visual Basic 5.0 nói riêng. Nó có thể truy nhập được các chương trình khác như Microsoft Exel, Microsoft Word ... Bất chấp nhiều phê phán trong giai đoạn đầu, Visual Basic đã được thừa nhận trong giới tin học như là một ngôn ngữ thích ứng tốt trong việc phát triển các ứng dụng các ứng dụng. Visual Basic 5.0 được tích hợp các tính năng hỗ trợ Internet và Windows có thể cạnh tranh với các ngôn ngữ lập trình mạnh nhất hiện nay như C hay Java. II. Ngôn ngữ SQL SQL (Structured Query Language ) là ngôn ngữ để thao tác trên cơ sở dữ liệu chuẩn. Ngôn ngữ này cho phép thao tác trên hầu hết các hệ thống quản trị cơ sở dữ liệu chính như SQL Server, Access, Sybase, Oracle, SQL Base... Với Visual Basic, SQL có ý nghĩa quan trọng đặc biệt vì nó là kết nối chính trong giao tiếp giữa Visual Basic với Jet Database Engine. Nó là nền tảng để nhà sản xuất cơ sở dữ liệu quyết định cách thức điều khiển và vận hành cơ sở dữ liệu, cách thức lưu trữ dữ liệu, cách dùng các cú pháp và cách xử lý. Không giống Visual Basic 5.0, SQL là một chuẩn được phát triển bởi American National Standards Institute (ANSI). SQL là ngôn ngữ hướng văn bản thuộc loại ngôn ngữ thế hệ thứ tư. Các ngôn ngữ thế hệ thứ tư là các ngôn ngữ phi thủ tục vì các câu lệnh sẽ cho hệ quản trị cơ sở dữ liệu biết bạn muốn làm gì chứ không càn chỉ ra làm như thế nào. SQL có thể được gửi tới một Database Engine bằng nhiều biện pháp khác nhau. Database Engine lại có một kiểu công cụ tương tác nhất định để gửi đến các điều lệnh SQL nhằm đạt một kết quả nào đó. Đôi lúc điều này được xem là ISQL (Interactive Structured Query Language-Ngôn ngữ hỏi có cấu trúc tương tác). SQL rất mạnh nhưng súc tích, chỉ có 30 lệnh với 4 lệnh cơ bản: SELECT UPDATE DELETE INSERT Các loại truy vấn 1. Truy vấn chọn SELECT Đây là một trong những truy vấn quan trọng và được sử dụng nhiều nhất. Truy vấn này dùng để chọn ra các trường trên cùng một bảng hoặc trên nhiều bảng khác nhau với các điều kiện định trước. Cú pháp chung: SELECT (field list) FROM (table name [IN (database) ]) [WHERE (search conditions)] [GROUP BY (field list)] [ HAVING (search conditions)] [ORDER BY (field list)] [WITH (owwner access options)] Mỗi câu lệnh SELECT phải có ít nhất mệnh đề SELECT và FROM. Các mệnh đề khác là tuỳ chọn.Trật tự các mệnh đề là cố định, mệnh đề HAVING chỉ có khi có mệnh đề GROUP BY. Để thực hiện truy vấn chọn có một loạt các mệnh đề khác kèm theo, cụ thể là: FROM: là mệnh đề dùng để chỉ ra tên của bảng trong cơ sở dữ liệu IN: là một phần của mệnh đề FROM dùng để chỉ ra bảng nằm trong một cơ sở dữ liệu khác có thể gắn với truy vấn. WHERE: là mệnh đề quan trọng nhất của truy vấn chọn. Nó cho phép chỉ ra bộ điều kiện cho bộ kết quả. Trong truy vấn nếu ta không sử dụng mệnh đề WHERE thì kết quả nhận được sẽ là các bản ghi được chỉ ra trong trường SELECT. Toán hạng Mô tả = Bằng > Lớn hơn < Nhỏ hơn <= Nhỏ hơn hoặc bằng >= Lớn hơn hoặc bằng Khác GROUP BY: là mệnh đề không bắt buộc, dùng để sắp xếp các bản ghi với giá trị đồng nhất trong danh sách các trường vào một bản ghi đơn lẻ. HAVING: là mệnh đề dùng để thay đổi bộ bản ghi có sẵn. Sau khi mệnh đề GROUP BY được sử dụng với thời gian tìm kiếm điều kiện HAVING được sử dụng tương tự như mệnh đề WHERE. ORDER BY: là mệnh đề dùng để sắp xếp các bản ghi đã trả về sau khi truy vấn. Có ít nhất một trường phải được sử dụng làm khoá sắp xếp, với thứ tự tăng dần hoặc giảm dần (ngầm định là tăng dần). 2.Truy vấn INSERT Truy vấn này thêm bản ghi vào bảng Cú pháp chung: INSERT [INTO] (table) [column list] [VALUES {{insert values}] [SQL select statement] Trong đó: Table là tên bảng để thêm bản ghi Column list là một bảng kê các cột có dữ liệu được chèn, được tách biệt bằng dấu phẩy(,). Insert values là danh sach các giá trị được chèn vào các cột trong column list. Số lượng các giá trị trong insert values phải giống như trong column list. SQL select statement là một cách khác để chèn các giá trị vào một bảng. Có thể lựa các giá trị của một bảng khác để chèn. Trong trường hợp này không được dùng từ kháo VALUES. Chú ý số lượng cột trả về trong điều kiện SQL cũng giống với con số trong danh sách column list. Microsoft yêu cầu phải có từ khoá INTO trong khi SQL không yêu cầu điều đó. Đây là loại truy vấn thường dùng để truyền dữ liệu vào bảng dữ liệu chính. 3. Truy vấn cập nhật UPDATE Trong một số trường hợp, ta cần phải thực hiện cập nhật hàng loạt các giá trị mới cho các trường. Truy vấn cập nhật sẽ giúp thực hiện công việc này, ta phải chỉ rõ các bản ghi cập nhật bằng cách sử dụng mệnh đề WHERE. Truy vấn cập nhật sẽ không có kết quả trả về. Nếu cần biết có bao nhiêu bản ghi được cập nhật thành công bằng truy vấn này thì sau khi thực hiện xong phải thực hiện truy vấn chọn với các điều kiện như trong truy vấn cập nhật. Cú pháp chung: UPDATE (table) SET (assignment list) [WHERE (search conditions)] Trong đó: Table là tên bảng cập nhật Assignment list là danh sách mọi chi tiết cập nhật sẽ diễn ra. Search conditions là các biểu thức SQL hợp lệ để giới hạn số lượng cập nhật. 4. Truy vấn xoá DELETE Truy vấn này dùng để xóa các bản ghi từ một hay nhiều bảng. Các bản ghi được xóa phải thỏa mãn điều kiện trong mệnh đề WHERE. Đây là một truy vấn rất có ích, cho phép thực hiện xóa cùng một lúc nhiều bản ghi trong cơ sở dữ liệu thỏa mãn điều kiện nhất định. Trong truy vấn, khi xóa trên nhiều bảng và một trong các bảng đó chứa khóa chính thì truy vấn sẽ mắc lỗi. Cú pháp chung: DELETE FROM (table) [WHERE (search conditions)] Trong đó: Table là tên bảng để xóa. Search conditions là các biểu thức SQL hợp lệ để giới hạn số lượng bản ghi bị xóa. Phụ lục II Chương trình nguồn VB.Form frmmain Dim anpham As String Dim db As Database Dim login As Boolean Dim dkloc As String Dim rs As Recordset Dim tacgia As String Dim datra As Boolean Dim change As Boolean Sub listrefresh() ListTracuu.Clear For i = 0 To Listtemp.ListCount - 1 ListTracuu.AddItem Listtemp.List(i) Next End Sub Sub loaddata(v As String) If v "" Then DataTracuu.RecordSource = "select * from tacpham where " & v & " and tentacpham not like '*_'" Else DataTracuu.RecordSource = "select * from tacpham where tentacpham not like '*_'" End If DataTracuu.Refresh Call ShowList End Sub Sub ShowList() ListTracuu.Clear Listtemp.Clear With DataTracuu.Recordset If .RecordCount 0 Then .MoveFirst Do Until .EOF If .Fields(0).Value "" Then Listtemp.AddItem .Fields(0).Value & " - " & .Fields(2).Value ListTracuu.AddItem .Fields(0).Value & " - " & .Fields(2).Value End If .MoveNext Loop End If End With End Sub Sub ShowTracuu(anpham As String, tacgia As String) DataTracuu.Recordset.FindFirst ("tentacpham='" & anpham & "' and tacgia='" & tacgia & "'") Dim db As Database Dim rs As Recordset Set db = OpenDatabase(DataTracuu.DatabaseName) Set rs = db.OpenRecordset("select * from noidung where matacpham=" & DataTracuu.Recordset.Fields("noidung").Value) Dim item As ListItem Listnoidung.ListItems.Clear If rs.RecordCount 0 Then rs.MoveFirst Do Until rs.EOF Set item = Listnoidung.ListItems.Add(, , rs.Fields(2).Value) Select Case rs.Fields(1).Value Case "img" item.Icon = 1 Case "audio" item.Icon = 2 Case "video" item.Icon = 3 Case "text" item.Icon = 4 End Select rs.MoveNext Loop End If End Sub Private Sub cmdtracuu_Click(Index As Integer) Select Case Index Case 0 Call ListTracuu_DblClick If Not datra Then Call listrefresh datra = True End If Case 1 If Listdatra.ListCount 0 Then If Listdatra.ListIndex = Listdatra.ListCount - 1 Then Listdatra.ListIndex = 0 Else Listdatra.ListIndex = Listdatra.ListIndex + 1 End If For i = 0 To ListTracuu.ListCount - 1 If ListTracuu.List(i) = Listdatra.Text Then ListTracuu.ListIndex = i Exit For End If Next Call ListTracuu_DblClick End If Case 2 If Listdatra.ListCount 0 Then ListTracuu.Clear For i = 0 To Listdatra.ListCount - 1 ListTracuu.AddItem Listdatra.List(i) Next datra = False End If Case 3 If login Then If ListTracuu.Text "" Then DataTracuu.Recordset.Edit DataTracuu.Recordset.Fields(0).Value = DataTracuu.Recordset.Fields(0).Value & "_" DataTracuu.Recordset.Update Call loaddata("") If Listdatra.ListCount 0 Then For i = 0 To Listdatra.ListCount - 1 If Listdatra.List(i) = v Then Listdatra.RemoveItem (i) Exit For End If Next End If End If End If End Select End Sub Private Sub cmdtracuu_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) cmdtracuu(Index).BorderStyle = 1 End Sub Private Sub Command1_Click(Index As Integer) Select Case Index Case 0 i = 0 While Listdaxoa.ListCount > i If Listdaxoa.Selected(i) = True Then change = True db.Execute "update tacpham set tentacpham='" & Left(Listdaxoa.List(i), Len(Listdaxoa.List(i)) - 1) & "' where tentacpham='" & Listdaxoa.List(i) & "'" Listdaxoa.RemoveItem i Else i = i + 1 End If Wend Case 1 i = 0 While Listdaxoa.ListCount > i If Listdaxoa.Selected(i) = True Then db.Execute "delete * from tacpham where tentacpham='" & Listdaxoa.List(i) & "'" change = True Listdaxoa.RemoveItem i Else i = i + 1 End If Wend Case 2 Picture2.Enabled = True PicXoa.Visible = False If change Then Call loaddata("") End If End Select End Sub Private Sub Form_Load() pathdata = "c:\vb5\newtd\an pham.mdb" DataTracuu.DatabaseName = pathdata Set db = OpenDatabase(DataTracuu.DatabaseName) login = False Call loaddata("") End Sub Sub adddatra(v As String) For i = 0 To Listdatra.ListCount - 1 If Listdatra.List(i) = v Then Exit Sub End If Next Listdatra.AddItem v End Sub Private Sub Image4_Click(Index As Integer) If Index = 0 Then dkloc = "" If Cmbtacgia.Text "" Then dkloc = dkloc & " tacgia='" & Cmbtacgia.Text & "' " End If If Cmbnamsangtac.Text "" Then If dkloc "" Then dkloc = dkloc & " and " End If dkloc = dkloc & " namxuatban=" & Cmbnamsangtac.Text End If If cmbNXB.Text "" Then If dkloc "" Then dkloc = dkloc & " and " End If dkloc = dkloc & " nhaxuatban='" & cmbNXB.Text & "' " End If Call loaddata(dkloc) End If Pickhoatracuu.Visible = False Picture2.Enabled = True End Sub Private Sub lblkhoatracuu_Click() Pickhoatracuu.Top = 1500 Pickhoatracuu.Left = 2000 Pickhoatracuu.Visible = True Picture2.Enabled = False Set rs = db.OpenRecordset("select distinct tacgia from tacpham") If rs.RecordCount 0 Then Cmbtacgia.Clear rs.MoveFirst Do Until rs.EOF Cmbtacgia.AddItem rs.Fields(0).Value rs.MoveNext Loop End If Set rs = db.OpenRecordset("select distinct nhaxuatban from tacpham") If rs.RecordCount 0 Then rs.MoveFirst cmbNXB.Clear Do Until rs.EOF cmbNXB.AddItem rs.Fields(0).Value rs.MoveNext Loop End If Set rs = db.OpenRecordset("select distinct namxuatban from tacpham") If rs.RecordCount 0 Then Cmbnamsangtac.Clear rs.MoveFirst Do Until rs.EOF Cmbnamsangtac.AddItem rs.Fields(0).Value rs.MoveNext Loop End If Cmbtacgia.AddItem "" cmbNXB.AddItem "" Cmbnamsangtac.AddItem "" End Sub Private Sub ListNoidung_ItemClick(ByVal item As ComctlLib.ListItem) Dim Filename As String Filename = item.Text Select Case item.Icon Case 1 Case 2 mp.Visible = True mp.Filename = Filename mp.Play Case 3 End Select End Sub Private Sub ListTracuu_DblClick() Call adddatra(ListTracuu.Text) ShowTracuu anpham, tacgia End Sub Private Sub ListTracuu_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) t = InStr(ListTracuu.Text, "-") If t 0 Then tacgia = Right(ListTracuu.Text, Len(ListTracuu.Text)-t - 1) anpham = Left(ListTracuu.Text, t - 1) DataTracuu.Recordset.FindFirst ("tentacpham='" & anpham & "' and tacgia='" & tacgia & "'") txtTracuu.Text = anpham End If End Sub Private Sub mnuCapnhat_Click() frmTacpham.Show (1) End Sub Private Sub mnuCapnhat_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) mnuCapnhat.BorderStyle = 1 End Sub Private Sub mnuDaxoa_Click() change = False Listdaxoa.Clear Set rs = db.OpenRecordset ("select * from tacpham where tentacpham like '*_'") If rs.RecordCount 0 Then rs.MoveFirst Do Until rs.EOF Listdaxoa.AddItem rs.Fields(0).Value rs.MoveNext Loop End If Picture2.Enabled = False PicXoa.Top = 1500 PicXoa.Left = 2200 PicXoa.Visible = True End Sub Private Sub mnuDaxoa_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) mnuDaxoa.BorderStyle = 1 End Sub Private Sub mnuGTCT_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) mnuGTCT.BorderStyle = 1 End Sub Private Sub mnumatkhau_Click() frmLogin.Show (1) login = frmLogin.ok End Sub Private Sub mnumatkhau_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) mnumatkhau.BorderStyle = 1 End Sub Private Sub mnuTracuu_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) mnuTracuu.BorderStyle = 1 End Sub Private Sub mp_EndOfStream(ByVal Result As Long) mp.Visible = False End Sub Private Sub Picture2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) For i = 0 To 3 cmdtracuu(i).BorderStyle = 0 Next mnuTracuu.BorderStyle = 0 mnuCapnhat.BorderStyle = 0 mnumatkhau.BorderStyle = 0 mnuDaxoa.BorderStyle = 0 mnuGTCT.BorderStyle = 0 End Sub Private Sub txtTracuu_Change() For i = 0 To ListTracuu.ListCount - 1 If Left(ListTracuu.List(i), Len(txtTracuu.Text)) = StrConv(txtTracuu.Text, 3) Then ListTracuu.ListIndex = i Exit Sub End If Next End Sub Private Sub txtTracuu_GotFocus() txtTracuu.SelStart = 0 txtTracuu.SelLength = Len(txtTracuu.Text) End Sub Private Sub txtTracuu_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then txtTracuu.Text = Left(ListTracuu.Text, InStr(ListTracuu.Text, "-") - 1) End If End SubVERSION 5.00 VB.Form frmTacpham Dim rs As Recordset Dim db As Database Private Sub CmAudio_Click() If Listnoidung.SelectedItem.Selected = True Then Call Removes(datPrimaryRS.Recordset.Fields("stt").Value, Listnoidung.SelectedItem.Text, Listnoidung.SelectedItem.Index) End If End Sub Private Sub cmdAdd_Click() datPrimaryRS.Recordset.AddNew End Sub Sub ShowTracuu() Dim db As Database Dim rs As Recordset Set db = OpenDatabase(datPrimaryRS.DatabaseName) Set rs = db.OpenRecordset("select * from noidung where matacpham=" & datPrimaryRS.Recordset.Fields("noidung").Value) Dim item As ListItem Listnoidung.ListItems.Clear If rs.RecordCount 0 Then rs.MoveFirst Do Until rs.EOF Set item = Listnoidung.ListItems.Add(, , rs.Fields(2).Value) If rs.Fields(1).Value = "img" Then 'Item.Icon = 1 Else 'Item.Icon = 2 End If rs.MoveNext Loop End If End Sub Private Sub cmdDelete_Click() With datPrimaryRS.Recordset .Delete .MoveNext If .EOF Then .MoveLast End With End Sub Private Sub Cmdseach_Click() Picture1.Visible = True End Sub Private Sub cmdUpdate_Click() datPrimaryRS.UpdateRecord datPrimaryRS.Recordset.Bookmark = datPrimaryRS.Recordset.LastModified End Sub Private Sub cmdClose_Click() Screen.MousePointer = vbDefault Unload Me End Sub Private Sub CmFind_Click(Index As Integer) Select Case Index Case 0 datPrimaryRS.Recordset.FindFirst ("tentacpham like'* " & Txseach.Text & " *'") Case 1 datPrimaryRS.Recordset.FindPrevious ("tentacpham like'* " & Txseach.Text & " *'") Case 2 datPrimaryRS.Recordset.FindNext ("tentacpham like'* " & Txseach.Text & " *'") Case 3 datPrimaryRS.Recordset.FindLast ("tentacpham like'* " & Txseach.Text & " *'") End Select End Sub Private Sub CmNoidung_Click() Picture2.Visible = True End Sub Private Sub Command1_Click() Picture1.Visible = False End Sub Private Sub Command2_Click(Index As Integer) Picture2.Visible = False If Index = 0 Then If Option1(0).Value = True Then Load frmOpenAVI frmOpenAVI.File.Pattern = "*.wav;*.mp3;*.mid" frmOpenAVI.Show (1) If frmOpenAVI.Filename "" Then Call Add(frmOpenAVI.Filename, datPrimaryRS.Recordset.Fields("stt").Value, "audio") Exit Sub End If End If If Option1(1).Value = True Then frmEditor1.Show (1) If frmEditor1.Filename "" Then Call Add(frmEditor1.Filename, datPrimaryRS.Recordset.Fields("stt").Value, "text") Exit Sub End If End If If Option1(2).Value = True Then frmOpenImage.Show (1) If frmOpenImage.Filename "" Then Call Add(frmOpenImage.Filename, datPrimaryRS.Recordset.Fields("stt").Value, "img") Exit Sub End If End If If Option1(3).Value = True Then Load frmOpenAVI frmOpenAVI.File.Pattern = "*.avi" frmOpenAVI.Show (1) If frmOpenAVI.Filename "" Then Call Add(frmOpenAVI.Filename, datPrimaryRS.Recordset.Fields("stt").Value, "video") Exit Sub End If End If End If End Sub Sub Add(v As String, i As Integer, k As String) Dim db As Database Set db = OpenDatabase(datPrimaryRS.DatabaseName) db.Execute ("insert into noidung values ("&i& ",'"& k &"','"& v &"')") Dim item As ListItem Set item = Listnoidung.ListItems.Add(, , v) End Sub Sub Removes(i As Integer, v As String, k As Integer) Dim db As Database Set db = OpenDatabase(datPrimaryRS.DatabaseName) db.Execute ("delete * from noidung where matacpham=" & i & " and duongdan ='" & v & "'") Dim item As ListItem Listnoidung.ListItems.Remove (k) End Sub Private Sub Command3_Click() If Listnoidung.SelectedItem.Selected = True Then 'Call Remove(datPrimaryRS.Recordset.Fields("stt").Value, Listnoidung.SelectedItem.Text, Listnoidung.SelectedItem.Index) End If End Sub Private Sub datPrimaryRS_Error(DataErr As Integer, Response As Integer) MsgBox "Data error event hit err:" & Error$(DataErr) Response = 0 End Sub Private Sub datPrimaryRS_Reposition() Screen.MousePointer = vbDefault On Error Resume Next datPrimaryRS.Caption = "Record: " & (datPrimaryRS.Recordset.AbsolutePosition + 1) Call ShowTracuu End Sub Private Sub datPrimaryRS_Validate(Action As Integer, Save As Integer) Select Case Action Case vbDataActionMoveFirst Case vbDataActionMovePrevious Case vbDataActionMoveNext Case vbDataActionMoveLast Case vbDataActionAddNew Case vbDataActionUpdate Case vbDataActionDelete Case vbDataActionFind Case vbDataActionBookmark Case vbDataActionClose Screen.MousePointer = vbDefault End Select Screen.MousePointer = vbHourglass End Sub Private Sub Form_Load() Set db = OpenDatabase(datPrimaryRS.DatabaseName) Set rs = db.OpenRecordset ("select distinct tacgia from tacpham") If rs.RecordCount 0 Then Cmbtacgia.Clear rs.MoveFirst Do Until rs.EOF Cmbtacgia.AddItem rs.Fields(0).Value rs.MoveNext Loop End If Set rs = db.OpenRecordset ("select distinct nhaxuatban from tacpham") If rs.RecordCount 0 Then rs.MoveFirst cmbNXB.Clear Do Until rs.EOF cmbNXB.AddItem rs.Fields(0).Value rs.MoveNext Loop End If Set rs = db.OpenRecordset ("select distinct theloai from tacpham") If rs.RecordCount 0 Then rs.MoveFirst Cmbtheloai.Clear Do Until rs.EOF Cmbtheloai.AddItem rs.Fields(0).Value rs.MoveNext Loop End If End Sub Private Sub Form_Unload(Cancel As Integer) Screen.MousePointer = vbDefault End Sub Attribute VB_Name = "Module1" Public pathdata As String Public Function msg(v As String, style As Integer) As Boolean Load frmMsg If style = 0 Then ' khong co nut bo qua frmMsg.Command2.Visible = False frmMsg.Label1.Caption = v frmMsg.Show (1) msg = True Else frmMsg.Command2.Visible = True frmMsg.Label1.Caption = v frmMsg.Show (1) msg = frmMsg.ok End If End Function VB.Form frmMsg Public ok As Boolean Private Sub Command1_Click() ok = True Unload Me End Sub Private Sub Command2_Click() ok = False Unload Me End Sub VB.Form frmOpenAVI Private Sub CmCancel_Click() Filename = "" Me.Hide End Sub Private Sub CmOk_Click() If Txtfile.Text "" Then Filename = Dir.Path & "\" & File.Filename End If Me.Hide End Sub Private Sub Dir_Change() File.Path = Dir.Path End Sub Private Sub Drive_Change() Dir.Path = Drive.Drive End Sub Private Sub File_Click() Txtfile.Text = File.Filename End Sub VB.Form frmOpenImage Public Filename As String Private Sub Chkhienthi_Click() If Txtfile.Text "" Then If Chkhienthi.Value 0 Then Set p = LoadPicture(Dir.Path & "\" & File.Filename) If p.Height > p.Width Then PictPreview.Width = PictPreview.Height * p.Width \ p.Height Else PictPreview.Height = PictPreview.Width * p.Height \ p.Width End If PictPreview.Picture = p End If Else PictPreview.Picture = LoadPicture("") End If End Sub Private Sub CmCancel_Click() Filename = "" Me.Hide End Sub Private Sub CmOk_Click() If Txtfile.Text "" Then Filename = Dir.Path & "\" & File.Filename End If Me.Hide End Sub Private Sub Dir_Change() File.Path = Dir.Path End Sub Private Sub Drive_Change() Dir.Path = Drive.Drive End Sub Private Sub File_Click() Dim p As Picture Txtfile.Text = File.Filename If Chkhienthi.Value 0 Then Set p = LoadPicture(Dir.Path & "\" & File.Filename) If p.Height > p.Width Then PictPreview.Width = PictPreview.Height * p.Width \ p.Height Else PictPreview.Height = PictPreview.Width * p.Height \ p.Width End If PictPreview.Picture = p End If End Sub Private Sub Form_Load() File.Pattern = "*.bmp;*.jpg;*.gif;*.pcx" End Sub VB.Form frmOpenText Public Filename As String Private Sub CmCancel_Click() Filename = "" Me.Hide End Sub Private Sub CmOk_Click() If Txtfile.Text "" Then If InStr(Txtfile.Text, ".rtf") = 0 Then Filename = Dir.Path & "\" & Txtfile.Text & ".rtf" Else Filename = Dir.Path & "\" & Txtfile.Text End If End If Me.Hide End Sub Private Sub Dir_Change() File.Path = Dir.Path End Sub Private Sub Drive_Change() Dir.Path = Drive.Drive End Sub Private Sub File_Click() Txtfile.Text = File.Filename End Sub Private Sub Form_Activate() Txtfile.SetFocus CmOk.Default = True Dir.Path = App.Path End Sub Private Sub Form_Load() File.Pattern = "*.txt;*.rtf" End Sub VB.Form frmEditor1 Public Filename As String Dim SavEdit As Boolean Private Sub CmCancel_Click() Me.Hide End Sub Private Sub CmEdit_Click(Index As Integer) Select Case Index Case 0 frmOpenText.Filename = "" frmOpenText.Dir.Path = App.Path frmOpenText.Caption = "Mở tệp" frmOpenText.Show (1) Filename = frmOpenText.Filename If Filename "" Then Editor.LoadFile (Filename) End If Case 1 If Filename "" Then Editor.SaveFile (Filename) SavEdit = True Else frmOpenText.Filename = "" frmOpenText.Dir.Path = App.Path frmOpenText.Caption = "Lưu trữ" frmOpenText.Show (1) Filename = frmOpenText.Filename If Filename = "" Then SavEdit = False Else Editor.SaveFile (Filename) SavEdit = True End If End If Case 2 Case 3 Case 4 Case 5 End Select End Sub Private Sub CmOk_Click() If Not SavEdit Then ask = MsgBox("ban co muon save khong", vbYesNo) If ask = vbYes Then Call CmEdit_Click(1) End If Else Me.Hide End If End Sub Private Sub Editor_Change() SavEdit = False End Sub Private Sub Form_Load() If Filename "" Then Editor.LoadFile (Filename) Else Editor.Text = "" End If End Sub Tài liệu tham khảo Giáo trình Visual Basic 6 – Nhà xuất bản giáo dục Giáo trình công nghệ multimedia trường đại học dân lập Đông Đô

Các file đính kèm theo tài liệu này:

  • docphantich1.doc
  • docTomtatHung.doc
Tài liệu liên quan