Giáo trình Visual Basic

259 1.3K 22
Giáo trình Visual Basic

Đ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

Giáo trình Visual Basic

Giáo trình đào tạo Visual Basic 6.01 Mục lục1 Mục lục .12 Làm quen với visual basic 6.0 .92.1 Xây dựng ứng dụng ban đầu 92.1.1 Viết ứng dụng ban đầu 92.1.2 Xây dựng tính năng Calendar .92.1.3 Thêm tính năng Clock .112.2 Các tính năng mới trong Visual basic 6.0 112.2.1 Khái quát vắn tắt về Visual basic 6.0 .112.2.2 Khai thác thế mạnh của các điều khiển mở rộng .112.3 Làm việc với môi trường lập trình trong Visual basic .122.3.1 Tìm hiểu các phần của IDE .122.3.2 Thêm và xoá các thanh công cụ trong IDE của Visual basic .132.3.3 Thêm các điều khiển vào hộp công cụ .142.3.4 Định hướng thông qua cửa sổ form và code 142.3.5 Quản lý ứng dụng với project explorer 142.3.6 Cửa sổ properties .142.3.7 Hiển thị IDE 142.3.8 Trợ giúp .153 Tìm hiểu Visual basic 6 163.1 Thuộc tính phương thức và sự kiện .163.1.1 Đối tượng 163.1.2 Thuộc tính 163.1.3 Phương thức 173.1.4 Sự kiện .183.1.5 Mối quan hệ giữa phương thức, thuộc tính và sự kiện .183.1.6 Cửa sổ Properties 193.1.7 Viết chương trình sử dụng thuộc tính, phương thức và sự kiện 203.2 Làm việc với một đề án .243.2.1 Định nghĩa .243.2.2 Cửa sổ Project Explorer 253.2.3 Tạo đề án .253.2.4 Đổi thuộc tính đề án 253.2.5 Lưu và đặt tên đề án 26FPT Software Solution Trang:1/259 Giáo trình đào tạo Visual Basic 6.03.2.6 Mở đề án có sẵn 263.2.7 Thêm xoá và lưu tập tin trong đề án .273.2.8 Thêm điều khiển vào đề án 293.2.9 Tạo tệp tin EXE .303.2.10 Sửa đổi thuộc tính đề án .313.3 Làm việc với nhiều đề án .323.3.1 Sử dụng Project Group 323.3.2 Thêm đề án vào nhóm đề án .323.3.3 Xoá đề án trong nhóm đề án .334 Làm việc với các điều khiển 344.1 Các loại điều khiển 344.1.1 Thao tác với điều khiển .344.2 Các điều khiển nội tại 374.2.1 Nút lệnh .374.2.2 Hộp văn bản 384.2.3 Điều khiển thanh cuộn 384.2.4 Điều khiển Timer 394.2.5 Điều khiển nhãn .394.2.6 Checkbox: .394.2.7 Một số thuộc tinh thông dụng: 394.2.8 4.2.9 Hộp danh sách (Listbox) 394.3 Các điều khiển M ới .405 Nhập môn lập trình .415.1 Chuẩn lập trình (Coding convention) 415.1.1 Coding conventions .415.1.2 Form design standard 465.1.3 Report design standard (for Crystal Report) .495.1.4 Database design standards 505.2 Thiết kế trước khi viết chương trình .515.3 Các thao tác thông dụng trong cửa sổ Code 515.3.1 Soạn thảo Code .515.3.2 Một số chức năng tự động .525.4 Biến hằng và các kiểu dữ liệu 525.4.1 Khai báo biến 525.4.2 Khai báo ngầm 525.4.3 Khai báo tường minh 53FPT Software Solution Trang:2/259 Giáo trình đào tạo Visual Basic 6.05.4.4 Khai báo biến Static 535.4.5 Hằng 535.5 Hàm và thủ tục .605.6 Cấu trúc điều khiển 605.6.1 Cấu trúc chọn 605.6.2 Cấu trúc lặp .625.6.3 Làm việc với cấu trúc 635.7 Gỡ rối chương trình .635.7.1 Một số giải pháp giảm lỗi .635.7.2 Gỡ rối .645.8 Bẫy lỗi 655.8.1 Lệnh On Error .655.8.2 Kết thúc bẫy lỗi .656 Lập trình xử lý giao diện .666.1 Menu .666.1.1 Dùng trình soạn thảo menu để tạo menu .666.1.2 Viết chương trình điều khiển menu 676.2 Hộp thoại 676.2.1 Thông điệp(Message box) 676.2.2 Hộp nhập(Input box) .686.2.3 Các hộp thoại thông dụng(Common dialog) 686.2.4 Hộp thoại hiệu chỉnh .686.3 Thanh công cụ(ToolBar) 696.3.1 Trong ứng dụng đơn giản .696.3.2 Nhúng đối tượng .696.4 Thanh trạng thái .696.5 Xử lý chuột và bàn phím 696.5.1 sự kiện chuột .696.5.2 Hiệu chỉnh con trỏ chuột .706.5.3 Sự kiện bàn phím 707 Xử lý tập tin 727.1 Mô hình FSO(File System Object model) .727.2 Xử lý các tập tin với các dòng lệnh và hàm I/O cổ điển .727.2.1 Các kiểu truy cập tập tin .727.3 Các điều khiển trên hệ thống tập tin 757.3.1 Hộp danh sách ổ đĩa 757.3.2 Hộp danh sách thư mục .75FPT Software Solution Trang:3/259 Giáo trình đào tạo Visual Basic 6.07.3.3 Hộp danh sách tập tin 767.4 Điều khiển richtextbox 767.4.1 Phương thức loadfile .767.4.2 Phương thức savefile .778 Sử dụng DLL và Windows API .788.1 DLL và cấu trúc của Windows 788.1.1 Các hộp thoại thông dụng 788.2 WIN API 798.3 Sử dụng API .808.3.1 Tìm kiếm API 808.3.2 Các DLL của Windows .808.3.3 Gọi API 818.4 Dùng API khai thác khả năng Multimedia 848.4.1 Lớp multimedia .849 Thêm trợ giúp vào ứng dụng 969.1 Thêm hỗ trợ cho Help 969.1.1 Thuộc tính HelpFile 969.1.2 Thuộc tính HelpContextID .969.2 Thêm hỗ trợ cho WHAT’S THIS HELP .979.2.1 Kích hoạt What’s This Help cho biểu mẫu 979.3 Cung cấp help cùng với ứng dụng .989.3.1 Cung cấp WinHelp 989.3.2 Cung cấp HTML Help 9810 Lập trình hướng đối tượng .9910.1 Giới thiệu về đối tượng 9910.1.1 Đối tượng trong VB 10010.1.2 Modul Lớp .10010.1.3 Tham số tuỳ chọn 10510.1.4 Sự kiện của lớp 10610.1.5 Huỷ đối tượng .10710.2 Biến đối tượng 10810.2.1 Tạo điều khiển lúc thi hành 10810.2.2 Sự kiện của mảng điều khiển 10910.2.3 Quản lý điều khiển như biến đối tượng 11010.2.4 Khai báo biến đối tượng 11210.3 Tập hợp .11410.3.1 Thuộc tính Controls 114FPT Software Solution Trang:4/259 Giáo trình đào tạo Visual Basic 6.010.3.2 Xác định điều khiển trên biểu mẫu .11410.4 Biểu mẫu MDI 11610.4.1 Biểu mẫu con (Child Form) 11710.4.2 Tạo Instance của biểu mẫu 11710.4.3 Xác định biểu mẫu 11810.4.4 Tạo danh sách cửa sổ 11811 Công cụ trong VB6 .12011.1 ADD-INS 12011.2 Các công cụ trong ADD-INS 12011.2.1 Trình cài đặt ứng dụng 12011.2.2 Trình đối tượng dữ liệu tự động .12011.2.3 Trình xây dựng dữ liệu tự động 12111.2.4 Trình thiết kế Add-ins tự động .12211.2.5 Trình thiết kế tự động .12211.2.6 Tiện ích xây dựng lớp .12311.2.7 Trình tạo thanh công cụ tự động .12311.3 Trình đóng gói và triển khai ứng dụng .12311.3.1 Phát hành ứng dụng .12311.3.2 Trình đóng gói và triển khai ứng dụng .12411.3.3 Mở trình đóng gói và triển khai trong VB 12411.3.4 Mở trình đóng gói và triển khai như một ứng dụng độc lập 12411.3.5 Thi hành Wizard dưới chế độ silent .12511.3.6 Setup toolkit 12511.4 Bài tập 12612 Những khái niệm cơ bản về CSDL .12712.1 Cơ sở dữ liệu là gì? 12712.1.1 Bộ máy (Engine) cơ sở dữ liệu là gì? .12712.1.2 Bản và trường 12812.1.3 Recordset là gì ? 12912.1.4 Các kiểu cơ sở dữ liệu .12912.1.5 Tạo lược đồ cơ sở dữ liệu .13012.1.6 Dùng Visual Basic để tạo một cơ sở dữ liệu 13012.1.7 Các mối quan hệ 14012.1.8 Chuẩn hoá 14112.2 Sử dụng cửa sổ xem dữ liệu 14312.3 Tạo trình thiết kế môi trường dữ liệu 145FPT Software Solution Trang:5/259 Giáo trình đào tạo Visual Basic 6.012.3.1 Tạo một giao diện người sử dụng với thiết kế DATAENVIRONMENT .14612.4 Sử dụng điều khiển dữ liệu để tạo giao diện người sử dụng 14712.4.1 Kết nối với một cơ sở dữ liệu và làm việc với các mẩu tin .14812.4.2 Tạo một giao diện người sử dụng cơ bản .14912.4.3 Thao tác trên các mẩu tin thông qua điều khiển ADO Data 15112.4.4 Các thuộc tính quan trọng khác của điều khiển ADO DATA .15512.5 Tổng kết .15612.6 Hỏi và Đáp .15613 Các đối tượng truy cập dữ liệu 15813.1 Sử dụng mô hình đối tượng DAO .15813.1.1 Lập trình với đối tượng .16013.1.2 Sử dụng điều khiển DAO Data 16013.1.3 Sử dụng thuộc tính Connect của điều khiển DAO Data để truy cập nguồn dữ liệu bên ngoài .16013.2 Sử dụng DAO để làm việc với dữ liệu .16113.2.1 Dùng đối tượng DataBase để kết nối với một CSDL 16113.2.2 Sử dụng đối tượng Recordset .16213.2.3 Chỉ ra các tuỳ chọn cho Recordset .16313.3 Sử dụng đối tượng Field để thao tác với các trường 16313.4 Sửdụng các phương thức duyệt với đối tượng Recorset 16413.4.1 Sử dụng BOF và EOF để duyệt qua Recordset .16413.4.2 Dùng BOF và EOF để xác định một Recordset có rỗng hay không 16413.4.3 Dùng thuộc tính RecordCout để xác định số mẩu tin trong một recordset. 16513.4.4 Dùng phương thức Edit để sửa đổi giá trị trong một mẩu tin .16513.4.5 Sử dụng phương thức AddNew và Update để tạo mẩu tin mới .16613.4.6 Sử dụng AppendChunk để nối dữ liệu vào một trường nhị phân 16713.4.7 Sử dụng phương thức Close để đóng Recordset .16813.5 Tìm kiếm dữ liệu trong Recordset và bảng .16813.5.1 Sử dụng phương thức Find để định vị mẩu tin trong một recordset 16813.5.2 Sử dụng phương thức Seek để thi hành tìm kiếm theo chỉ mục 16913.5.3 Lặp qua suốt tập hợp Indexes của TableDef 17013.5.4 Sử dụng thuộc tính Bookmark để ghi nhớ vị trí trong một Recordset .17113.5.5 sử dụng tập hợp Errors và đối tượng Error để xử lý lỗi .17113.6 Tạo đối tượng để thao tác trên cấu trúc của một CSDL .17213.6.1 Tạo một CSDL 17213.6.2 Sử dụng đối tượng TableDef để thao tác với bảng 173FPT Software Solution Trang:6/259 Giáo trình đào tạo Visual Basic 6.013.7 Làm việc với tài liệu và nơi chứa CSDL .17813.8 Tạo và sử dụng các thuộc tính hiệu chỉnh của đối tượng DataBase .17913.9 Tổng kết .18013.10 Hỏi và đáp 18014 Thiết lập báo cáo và Xuất thông tin 18214.1 Sử dụng thiết kế DataReport .18214.1.1 Thiết kế với DataReport 18314.1.2 Xem và xuất DataReport 18414.2 Sử dụng Microsoft Access để làm báo cáo .18514.2.1 Thi hành báo cáo của Access từ Visual Basic 18514.3 Sử dụng Crystal report để lập báo cáo .19014.3.1 Cài đặt Crystal Reports .19014.3.2 Dùng Crystal Reports tạo báo cáo .19014.3.3 Thi hành báo cáo trong ứng dụng với điều khiển ActiveX của Crystal Reports 19314.3.4 Sử dụng bản mới hơn của Crystal Reports 19315 ODBC và các đối tượng dữ liệu từ xa .19415.1 Định cấu hình và sử dụng ODBC 19415.1.1 Kiến trúc của ODBC .19415.1.2 Tạo nguồn dữ liệu .19415.1.3 Truy cập nguồn dữ liệu với điều khiển DAO DATA và ODBCDIRECT .19715.2 Truy cập dữ liệu dùng điều khiển dữ liệu từ xa 19815.2.1 Sử dụng RDC .19815.3 Sử dụng RDO trong chương trình .19915.3.1 Quy định thuộc tính bộ máy cơ sở dữ liệu dùng đối tượng RDOENGINE.20015.3.2 Truy cập môi trường đối tượng rdoEnvironment 20015.3.3 Thiết lập kết nối dùng đối tượng rdoConnection .20115.3.4 Đáp ứng sự kiện trong RDO .20315.4 Tạo kết nốI với trình thiết kế uerconnecttion .20415.5 Truy cập truy vấn với trìng thiết kế UserConnection .20615.5.1 Gọi thủ tục chứa sẵn trong một trình thiết kế UserConnection 20615.5.2 Dùng Microsotf Query để xây dựng chuỗi SQL trong trình thiết kế UserConnection. .20815.6 Sử dụng dữ liệu với đối tượng rdorerultset .20915.7 Thi hành truy vấn với đối tượng rdoQuery .20916 Truy cập cơ sở dữ liệu với lớp .21116.1 Làm việc với lớp và đối tượng 21216.1.1 Tạo cây phân nhánh lớp với tiện ích xây dựng lớp 212FPT Software Solution Trang:7/259 Giáo trình đào tạo Visual Basic 6.016.1.2 Sử dụng biểu mẫu như lớp 21616.2 Tạo Intance bội cho biểu mẫu .21816.2.1 Sử dụng lớp và đối tượng trong truy cập cơ sở dữ liệu 21816.3 Tạo các lớp cần sử dụng dữ liệu 22116.3.1 Tạo lớp xuất dữ liệu 22316.3.2 Triển khai lớp thành Active Server .22416.4 Tổng kết .22917 Truy cập dữ liệu từ xa .23017.1 Client / Server và các thành phần 23017.1.1 Cấu trúc Cilent/Server Three- Tier .23018 Đối tượng dữ liệu ActiveX 25118.1 Xây dựng ứng dụng Visual basic với ADO 25118.1.1 Tìm hiểu cấu trúc OLE DB / ADO 25118.1.2 Cài đặt và thiết lập tham chiếu đến ADO trong ứng dụng Visual basic 25218.1.3 Sử dụng ADO với các thư viện đối tượng truy cập dữ liệu khác .25318.1.4 Dùng đối tượng connection của ADO để kết nối với nguồn dữ liệu 25318.1.5 Làm việc với con trỏ .25418.1.6 Khoá bản ghi trong ADO .25618.1.7 Sử dụng đối tượng Recordset của ADO để thao tác với dữ liệu 25618.1.8 Tạo Recordset ngắt kết nối .25718.2 Sử dụng dịch vụ dữ liệu từ xa của ADO .258FPT Software Solution Trang:8/259 Giáo trình đào tạo Visual Basic 6.02 Làm quen với visual basic 6.02.1 Xây dựng ứng dụng ban đầu2.1.1 Viết ứng dụng ban đầuCách tốt nhất để học lập trình là viết chương trình. Vậy hãy thử viết chương trình hiển thị lịch biểu, trong đó cho phép người sử dụng:• Hiển thị lịch biểu của tháng hiện hành• Duyệt qua các tháng• Hiển thị đồng hồ báo giờ hiện hànhNếu bạn cho rằng chương trình này có vẻ nặng nề cho người mới học, đừng lo lắng. Visual basic làm hết mọi việc cho bạn. Khác với ngôn ngữ C++, bạn phải viết mỗi thứ một ít, Visual basic cung cấp mức đọ cao hơn của lập trình tự động. Như vậy, bạn có thể làm nhiều thứ mà không phải lập trình nhiều.Tuy nhiên, đừng hiểu sai “không lập trình nhiều” nghĩa là “không có nhiều tính năng mạnh” Visual basic là một ngôn ngữ rất mạnh. Ta có thể lập trình để làm “mọi thứ” nếu cần. Ta cũng có thể khai thác khả năng tự động của Visual basic để viết chương trình thật nhanh. Chọn lựa là ở người lập trình. Visual basic đủ linh hoạt để hỗ trợ cho người lập trình từ người mới học đến lập trình chuyên nghiệp.2.1.2 Xây dựng tính năng CalendarBây giờ ta bắt đầu xây dựng các tính năng của ứng dụng. Đầu tiên, ta cần một lịch biểu. Ta có thể tự tạo nó hoặc sử dụng lịch biểu có sẵn của Visual basic (đây là một điều khiển ActiveX). Ta chọn cách thứ 2.Từ menu Project, chọn Components. Bởi vì, mặc định tất cả các điều khiển ActiveX của Visual basic không được nạp tự động. Muốn dùng bạn phải chọn từ menu Components.Trong hộp thoại Components chọn Windows Common Controls 2.6.0 và nhấn OK.FPT Software Solution Trang:9/259 Giáo trình đào tạo Visual Basic 6.0ActivateX là gì?ActivateX là sản phẩm của Microsoft cho phép ta tạo những chương trình nhỏ, gọi là các thành phần(componet) và các điều khiển (control) để có thể thêm vào các chương trình lớn. Đó có thể là các chương trình độc lập (Standalone program) hay các chương trình chạy trên Internet. Ta có thể dùng Visual basic để tự tạo các điều khiển ActivateX. Phần này sẽ được trình bày trong một riêng. Đến đây điều khiển lịch được nạp vào thanh công cụ. Tên chính thức của nó là điều khiển ActivateX MonthView.Kế tiếp ta đưa điều khiển vào biểu mẫu.Thêm điều khiển MonthView vào biểu mẫuChọn biểu tượng điều khiển MonthView từ hộp công cụNhấn đúp chuột lên biểu tượng điều khiển để đưa nó vào biểu mẫu.Bạn vừa tạo xong chương trình nhấn F5 để chạy.FPT Software Solution Trang:10/259 [...]... Trang:45/259 Giáo trình đào tạo Visual Basic 6.0 3.3.3 Xố đề án trong nhóm đề án 1. Trong cửa sổ Project Explorer, chọn đề án cần xoá 2. Từ menu file, chọn REMOVE Project Ta chỉ dùng nhóm đề án khi tạo các điều khiển ActiveX, vốn đòi hỏi nhiều đề án mở cùng một lúc. FPT Software Solution Trang:33/259 Giáo trình đào tạo Visual Basic 6.0 k. các điều khiển thông dụng là nút lệnh điều khiển khung được Visual Basic. .. án bị xoá Visual Basic sẽ cập nhật những thay đổi này trong tập tin.vbp khi ta lưu đề án. Do đó néu ta xố tệp tin bên ngồi Visual Basic, tệp tin đề án sẽ không được cập nhật. khi ta mở lại đề án Visual Basic sẽ báo lỗi là thiếu tệp tin 3.2.7.3 Lưu tệp tin a. Chọn tệp tin trong cửa sổ Project Explorer b. từ menu chọn Save FPT Software Solution Trang:28/259 Giáo trình đào tạo Visual Basic 6.0 Scope... Tools\option\ - Trên tang Advance, chọn hộp đánh dấu SDI development Enviroment; nhấn OK. IDE của Visual basic sẽ định lại cấu hình cho hiển thị SDI trong lần khởi động tiếp sau của Visual basic. - Nhấn OK, thoát và khởi động lại Visual basic FPT Software Solution Trang:14/259 Giáo trình đào tạo Visual Basic 6.0 3.2.8 Thêm điều khiển vào đề án 3.2.8.1 Thêm điều khiển ActiveX Ta có thể thêm vào đề... biểu mẫu. Khi Visual Basic được cài đặt, một số tệp tin dạng này kèm theo Visual Basic sẽ được chép vào trong máy h. đối tượng, như là Worksheet của Excel i. tham chiếu (Reference) j. trình thiết kế ActiveX : là cơng cụ dùng để thiết kế các lớp cho đối tượng. giao diện thiết kế biểu mẫu là một trình thiết kế mặc định FPT Software Solution Trang:27/259 Giáo trình đào tạo Visual Basic 6.0 List.AddItem... có một tệp tin tài nguyên, nếu thêm một tệp tin.RES thứ hai, Visual Basic sẽ báo lỗi 3.2.9 Tạo tệp tin EXE Các ví dụ trên đây được thi hành thơng qua nút Start của Visual Basic hoặc nhấn F5. Tuy nhiên khi chương trình hồn tất, ta cần có một tệp tin thi hành, hay tập tin EXE FPT Software Solution Trang:30/259 Giáo trình đào tạo Visual Basic 6.0 3. Hoặc là từ menu Properties, chọn Project Name Properties 3.2.5... đoạn chương trình chạy bên dưới biểu mẫu. Ta có thể mở cửa sổ code bằng cách nhấn đúp lên biểu mẫu hoặc điều khiển, hoặc chọn code từ menu. 2.3.5 Quản lý ứng dụng với project explorer Project explorer trong Visual basic giúp quản lý và định hướng nhiều đề án. Visual basic cho phép tổ chức nhiều đề án trong một nhóm gọi là project group. Ta có thể lưu tập hợp các đề án trong Visual basic thành một... cầu của chương trình Drag Thi hành hoạt động kéo và thả của người sử dụng SetFocus Cung cấp tầm ngắm cho đối tượng được chỉ ra trong lệnh gọi phương thức ZOrder quy định thứ tự xuất hiện của các điều khiển trên màn hình FPT Software Solution Trang:17/259 Giáo trình đào tạo Visual Basic 6.0 3.2.2 Cửa sổ Project Explorer Cửa sổ này thường được hiển thị bên góc phải trên màn hình Visual Basic. Project... Trang:3/259 Giáo trình đào tạo Visual Basic 6.0 3 Tìm hiểu Visual basic 6 3.1 Thuộc tính phương thức và sự kiện 3.1.1 Đối tượng Trong VB, đối tượng là những thành phần tạo nên giao diện giữa người sử dụng cho ứng dụng. Các điều khiển là những đối tượng. Những nơi chứa (container) như biểu mẫu(form), khung(frame), gay hộp ảnh (picture box) cũng là một đối tượng. VB 6 hỗ trợ một cách lập trình tương... một cách lập trình tương đối mới, lập trình hướng đối tượng (Object Oriented Programming). Trong lập trình cổ điển, ta có kiểu lập trình theo cấu trúc. Nếu như ứng dụng được thiết kế để giải quyết một vấn đề lớn, thì lập trình viên có thể chia thành nhiều vấn đề nhỏ và viết các đoạn chương trình nhỏ để giải quyết riêng từng cái. Với lập trình hướng đối tượng, lập trình viên sẽ chia nhỏ vấn đề cần giải... Points All color Default FPT Software Solution Trang:48/259 Giáo trình đào tạo Visual Basic 6.0 4 Làm việc với các điều khiển 4.1 Các loại điều khiển Trong Visual Basic có ba nhóm điều khiển • Điều khiển nội tại, ví dụ như là các điều khiển nút lệch và khung. Các điều khiển này được chứa trong các tập tin. EXE của Visual Basic. Các điều khiển nội tại luôn chứa sẵn trong hộp công cụ, ta không thể gỡ . Trang:14/259 Giáo trình đào tạo Visual Basic 6.02.3.8 Trợ giúpKhông những làm chủ ngôn ngữ lập trình Visual basic, bạn cũng cần phải sử dụng thuần thục môi trường Visual. tự động của Visual basic để viết chương trình thật nhanh. Chọn lựa là ở người lập trình. Visual basic đủ linh hoạt để hỗ trợ cho người lập trình từ người

Ngày đăng: 21/08/2012, 15:06

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan