• Thứ Tư, 20/09/2006 14:51 (GMT+7)

    Lookup listbox trong Access

    Lượt xem 4153
    Đánh giá

    Câu hỏi :
    Tôi có một CSDL Access có 2 bảng Lop và Hocsinh. Tôi muốn thiết kế 1 trang web động có 2 comboBox là comboLop và comboHocsinh, khi nhấn vào comboBoxLop thì sẽ tự động lọc các học sinh của lớp đó và đưa vào comboHocsinh. Xin hướng dẫn. 
     

    Trả lời :

    Tôi có một CSDL Access có 2 bảng Lop và Hocsinh. Tôi muốn thiết kế 1 trang web động có 2 comboBox là comboLop và comboHocsinh, khi nhấn vào comboBoxLop thì sẽ tự động lọc các học sinh của lớp đó và đưa vào comboHocsinh. Xin hướng dẫn.

     Trang web, nhất là trang web động, là 1 ứng dụng giống như 1 ứng dụng truyền thống, nghĩa là bạn có thể thực hiện bất kỳ chức năng nào bạn muốn trong trang web. Để dễ hiểu, bạn có thể coi 1 trang web động như 1 Form (1 hộp thoại) nới rộng, nó chứa nhiều đối tượng giao diện để tương tác với người dùng hầu thực hiện từng chức năng mà người dùng muốn tại mỗi thời điểm. Do đó việc xây dựng trang web động rất giống với việc xây dựng 1 Form giao diện của ứng dụng truyền thống, vấn đề cơ bản nhất là phải phân tích, thiết kế được trang web hay Form trước khi hiện thực nó bằng môi trường cụ thể. Sau đây là qui trình điển hình để xây dựng trang Web động giải quyết yêu cầu của bạn bằng môi trường ASP .Net:

     1. Trước hết bạn phải định nghĩa được cấu trúc của 2 table Lop và Hocsinh, số field và ngữ nghĩa của từng field phụ thuộc vào yêu cầu xử lý của bạn. Thí dụ, chúng tôi định nghĩa table Lớp đơn giản gồm 2 field sau: Mãlớp và Tênlớp, còn table Hocsinh đơn giản gồm 3 field: Mãlớp, MãHọcsinh và TênHọcsinh. Kế tiếp chạy Access (hay bất kỳ hệ quản trị database nào) để tạo database mới (hay dùng lại database đã có), tạo mới từng table dữ liệu rồi nhập thông tin theo yêu cầu quản lý. Việc hiển thị danh sách các lớp lên trang web gồm 2 công đoạn: truy xuất các record chứa thông tin về các lớp cần hiển thị trong table Lớp rồi hiển thị nội dung từng record tìm được lên đối tượng hiển thị tương ứng. Việc hiển thị danh sách học sinh của 1 lớp nào đó lên ComboBox cũng tương tự như vậy.

     2. để truy xuất database dễ dàng, độc lập với công nghệ quản lý database, bạn hãy kết hợp database của bạn với DSN tên là "DbAccess" bằng cách vào Control Panel, chạy icon "Administrative Tools", chọn mục DataSource và khai báo các thông tin liên quan đến database.

     3. Chạy Visual Studio .Net, chọn menu File.New.Projects..., chọn kiểu "Visual Basic project", chọn icon "ASP .NET Web Application", hiệu chỉnh lại Location của website thành "http://localhost/QLHocsinh", chọn button OK để máy tạo Project mới theo các thông số khai báo.

     4. Khi trang ASP với tên mặc định là WebForm1.aspx hiển thị, bạn hãy thiết kế giao diện của trang ASP như hình sau:

     Lưu ý rằng 2 DropDownList miêu tả danh sách lớp và danh sách học sinh có tên (ID) là cbLop và cbHocsinh, thiết lập thuộc tính AutoPostBack cho cả 2 dropdownlist về giá trị TRUE.

     5. Hãy chọn menu View.Code để hiển thị cửa sổ code của trang web rồi tạo hàm xử lý sự kiện InitializeComponent cho WebForm1 (bằng cách chọn mục WebForm1 trong listbox bên trên trái cửa sổ code và chọn mục InitializeComponent trong listbox bên trên phải cửa sổ code) rồi viết code VB .Net để đọc và hiển thị danh sách lớp vào dropdownlist cbLop như sau:
     Private Sub InitializeComponent()
     Try
     'Connection string truy xuất DSN
     Dim MyConString As String = "DSN=DbAccess"
     'tạo 1 connection đến database
     Dim MyConnection As New OdbcConnection(MyConString)
     MyConnection.Open()
     'tạo 1 command chứa lệnh SQL truy xuất database
     Dim MyCommand As New OdbcCommand
     MyCommand.Connection = MyConnection
     'Tìm các record của table DSLop
     MyCommand.CommandText = "SELECT * FROM DSLop"
     Dim MyDataReader As System.Data.Odbc.OdbcDataReader
     MyDataReader = MyCommand.ExecuteReader
     Dim strNV As String
     'duyệt từng record và add mã lớp vào dropdownlist
     While MyDataReader.Read
     strNV = CStr(MyDataReader("MaLop"))
     cbLop.Items.Add(strNV)
     End While
     'đóng các đối tượng đã dùng
     MyConnection.Close()
     MyDataReader.Close()
     'Catch ODBC Exception
     Catch MyOdbcException As OdbcException
     Dim i As Integer
     Console.Write(MyOdbcException.ToString)
     'Catch program exception
     Catch MyException As Exception
     Console.Write(MyException.ToString)
     End Try
     End Sub

     6. Tạo hàm xử lý sự kiện SelectedIndexChanged cho dropdownlist cbLop (bằng cách chọn mục cbLop trong listbox bên trên trái cửa sổ code và chọn mục SelectedIndexChanged trong listbox bên trên phải cửa sổ code) rồi viết code VB .Net để đọc và hiển thị danh sách học sinh của lớp mới được chọn vào dropdownlist cbHocsinh như sau:

     Private Sub cbLop_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cbLop.SelectedIndexChanged
     Dim MaLop As String
     'tìm mã lớp vừa được chọn bởi người dùng
     MaLop = CType(cbLop.SelectedValue, String)
     Try
     'Connection string truy xuất DSN
     Dim MyConString As String = "DSN=DbAccess"
     'tạo 1 connection đến database
     Dim MyConnection As New OdbcConnection(MyConString)
     MyConnection.Open()
     'tạo 1 command chứa lệnh SQL truy xuất database
     Dim MyCommand As New OdbcCommand
     MyCommand.Connection = MyConnection
     'Tìm các học sinh của lớp được chọn
     MyCommand.CommandText = "SELECT * FROM DSHocsinh where Malop = '" & MaLop & "'"
     Dim MyDataReader As System.Data.Odbc.OdbcDataReader
     MyDataReader = MyCommand.ExecuteReader
     Dim strNV As String
     'xóa nội dung cũ
     cbHocsinh.Items.Clear()
     'duyệt từng record và add tên HS vào dropdownlist
     While MyDataReader.Read
     strNV = CStr(MyDataReader("TenHocsinh"))
     cbHocsinh.Items.Add(strNV)
     End While
     'đóng các đối tượng đã dùng
     MyConnection.Close()
     MyDataReader.Close()
     'Catch ODBC Exception
     Catch MyOdbcException As OdbcException
     Dim i As Integer
     Console.Write(MyOdbcException.ToString)
     'Catch program exception
     Catch MyException As Exception
     Console.Write(MyException.ToString)
     End Try
     End Sub

     7. Dời chuột về mục "WebForm1.apsx" trong cửa sổ "Solution explorer" rồi ấn phải chuột và chọn option "Set As StartPage" để thiết lập trang bắt đầu chạy của ứng dụng.

     8. Chọn menu Debug.Start để chạy thử trang web quản lý học sinh vừa xây dựng được. Nếu có lỗi thì sửa lỗi cho đến khi hết lỗi.
     

    Ý kiến phản hồi và bình luận      Gởi ý kiến của bạn ?
    Chuyên mục: Cơ sở dữ liệu