- ComboBox "Mã số NV" sẽ hiển thị danh sách "nv – ten nv" hiện có trong table EMPLOYEE (lấy từ 2 field có tên là EmployeeID, EmployeeName).

- Khi người dùng chọn 1 nhân viên trong ComboBox thì chương trình gán tên nhân viên được chọn vào textbox "họ và tên" và "người trước", gán giờ hiện hành vào textbox "giờ chấm" và "người trước".

Xin chỉ cách hiển thị đồng thời 2 cột dữ liệu của 1 table vào ComboBox như Form trên." />
  • Thứ Tư, 18/10/2006 09:17 (GMT+7)

    Tạo form nhập liệu trong VB.NET

    Câu hỏi :
    Tôi muốn xây dựng 1 form VB .Net có các thành phần sau:

    - 2 textbox "ngày" sẽ hiển thị ngày/giờ hiện hành của máy.
    - ComboBox "Mã số NV" sẽ hiển thị danh sách "nv – ten nv" hiện có trong table EMPLOYEE (lấy từ 2 field có tên là EmployeeID, EmployeeName).

    - Khi người dùng chọn 1 nhân viên trong ComboBox thì chương trình gán tên nhân viên được chọn vào textbox "họ và tên" và "người trước", gán giờ hiện hành vào textbox "giờ chấm" và "người trước".

    Xin chỉ cách hiển thị đồng thời 2 cột dữ liệu của 1 table vào ComboBox như Form trên.

    Trả lời :

    VB .Net là ngôn ngữ hướng đối tượng rất trong sáng và an toàn để lập trình, hơn nữa Microsoft đã cung cấp sẵn 1 thư viện các đối tượng phổ dụng rất lớn, phong phú và phủ nhiều lĩnh vực lập trình khác nhau, trong đó có các đối tượng truy xuất database ADO .Net. Bạn có thể đọc các câu trả lời trong số báo trước để biết các đoạn code VB .Net thường dùng để truy xuất database. Cụ thể Form chương trình của bạn có 2 vấn đề chính cần giải quyết:

     - Hiển thị ngày/giờ thời gian thực. Để thực hiện chức năng này, bạn có thể tạo đối tượng Timer cho Form (với tên mặc định là Timer1), thiết lập bước đếm (Interval) = 1000 (ms) rồi viết hàm xử lý Timer1_Tick sẽ chạy mỗi khi Timer đếm 1 giây (1000 ms):

    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
     'hiển thị ngày hiện hành
     txtNgay.Text = DateTime.Now.ToShortDateString
     'hiển thị giờ/phút/giây hiện hành
     txtGio.Text = DateTime.Now.ToLongTimeString
     End Sub
     - truy xuất dữ liệu từ database và hiển thị nội dung lên các đối tượng giao diện trong Form. Bạn có thể dùng các đối tượng ODBC .Net như OdbcConnection, OdbcCommand, OdbcDataReader... để truy xuất dữ liệu trong database của bất kỳ server database nào (SQL, MySQL, Oracle, Access...). Thủ tục KhoidongCB() sau cho phép hiển thị thông tin trong 2 field EmployeeID và EmployeeName vào ComboBox để người dùng chọn:
     Sub KhoidongCB()
     Try
     'Connection string dùng DSN và ODBC Provider
     Dim MyConString As String = "DSN=MyDatabase"
     'tạo 1 connection đến database
     Dim MyConnection As New OdbcConnection(MyConString)
     MyConnection.Open()
     
     'Tạo Command để tìm các record trong table Employee
     Dim MyCommand As New OdbcCommand
     MyCommand.Connection = MyConnection
     MyCommand.CommandText = "SELECT * FROM EMPLOYEE"
     'Tạo DataReader để chứa các record trong table Employee
     Dim MyDataReader As System.Data.Odbc.OdbcDataReader
     MyDataReader = MyCommand.ExecuteReader
     'Hiển thị kết quả lên ComboBox
     cbDanhsachNV.ResetText()
     Dim strNV As String
     While MyDataReader.Read
     strNV = CStr(MyDataReader("EmployeeID")) & " - " & CStr(MyDataReader("EmployeeName"))
     cbDanhsachNV.Items.Add(strNV)
     End While
     '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
     Lưu ý rằng thủ tục trên sử dụng tên DSN để truy xuất database, do đó bạn phải tạo 1 DSN với tên là MyDatabase trước khi chạy ứng dụng (bằng cách vào Control Panel, mở icon "Administrative Tools", chạy mục "Data Source").
     

    Chuyên mục: Cơ sở dữ liệu