3. Kết quả thiết kế
Hình 18. Kết quả thiết kế form danh sách mặt hàng
4. Kết quả thực thi
Hình 19. Kết quả thực thi form danh sách mặt hàng
Công việc 3: Thiết kế form dạng kết hợp bản ghi và lưới có tên frmBanHang
Có thể bạn quan tâm!
- Thực hành lập trình CSDL với VB.net - 3
- Thực hành lập trình CSDL với VB.net - 4
- Thực hành lập trình CSDL với VB.net - 5
- Thực hành lập trình CSDL với VB.net - 7
- Thực hành lập trình CSDL với VB.net - 8
- Thực hành lập trình CSDL với VB.net - 9
Xem toàn bộ 318 trang tài liệu này.
Hình 20. Form chi tiết bán hàng
1. Phân tích yêu cầu
Theo yêu cầu trên thì phải có một form chứa:
- Các đối tượng có nội dung “CHI TIẾT BÁN HÀNG”, “Số hiệu hóa đơn”, “Mã khách hàng”, “Ngày mua bán”, là các Label.
- Các đối tượng ô nhập mã khách hàng, số hiệu hóa đơn, người bán hàng là các Textbox.
- Đối tượng lựa chọn ngày tháng là điều khiển DateTimePicker.
- Các nút “Thêm khách hàng”, Thêm, Sửa, Xóa, Lưu, “Tìm kiếm”, “Kết thúc” là các điều khiển Button
- Danh sách các mặt hàng trong một hóa đơn là một điều khiển DataGridView.
- Điều khiển cho phép di chuyển qua lại giữa các hóa đơn là BindingNavigator.
2. Hướng dẫn thao tác.
Để hoàn thành việc thiết kế form dạng kết hợp bản ghi và lưới có tên frmBanHang người lập trình đã tiến hành các công việc sau:
1. Tạo form mới với tên frmBanHang bằng cách thực hiện các thao tác: Trên thanh menu, chọn Project/Add New Item.
Xuất hiện cửa sổ Add New Item. Chọn loại Windows Form, sau đó nhập tên
frmBanHang vào ô Name rồi nhấn nút Add.
2. Từ cửa sổ Data Source chọn bảng tblBanHang. Nhấn vào mũi tên quay xuống bên phải của bảng tblBanHang chọn kiểu hiển thị là Details.
3. Kéo bảng tblBanHang và tblChiTietHoaDon từ cửa sổ Data Source vào form. Điều chỉnh vị trí và kích thước cho phù hợp với yêu cầu.
4. Sửa nhãn cho các label cho đúng yêu cầu.
5. Nháy chuột phải vào lưới hiển thị chi tiết hóa đơn chọn Properties để thiết lập các thuộc tính cho lưới:
RowHeadersVisible: False.
MultiSelect: False.
SelectionMode: FullRowSelect.
6. Nhấn vào nút ở thuộc tính Columns trong cửa sổ Properties của lưới. Xuất hiện cửa sổ Edit Columns.
Hình 21. Cửa sổ Edit Columns
Thay đổi thuộc tính HeaderText các cột cho phù hợp với yêu cầu. Thiết lập thuộc tính AutoSizeMode cho các cột “Số hóa đơn”, “Số lượng”, “Đơn giá” là ColumnHeader, cột “Mặt hàng” là DisplayedCells.
Để thay đổi kiểu hiển thị cho cột mặt hàng thành dạng ComboBox cần thiết lập các thuộc tính cho cột MaMH như sau:
DataPropertyName: MaMH.
DataSource: TblMatHangBindingSource.
DisplayMember: TenMatHang.
ValueMember: MaMH.
ColumnType: DataGridViewComboBoxColumn.
DisplayStyle: DropDownButton.
Các thuộc tính còn lại để giá trị mặc định. Nhấn OK để cập nhật lưới hiển thị chi tiết hóa đơn.
Điều khiển TblBanHangBindingNavigator để thực hiện việc di chuyển trên các bản ghi của bảng tblBanHang được VB.NET cung cấp sẵn, mặc định khi kéo bảng tblBanHang từ cửa sổ Data Source vào form thì đối tượng TblBanHangBindingNavigator cũng được thêm vào form chỉ việc kéo điều khiển này đặt vào vị trí theo yêu cầu.
Kéo điều khiển Button từ cửa sổ Toolbox vào form và thay đổi thuộc tính cho Button tương tự như phần trên.
Viết mã lệnh cho các điều khiển trên form như sau: Sự kiện form load.
Private Sub frmBanHang_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'QLYBHDataSet.tblMatHang' table. You can move, or remove it, as needed.
Me.TblMatHangTableAdapter.Fill(Me.QLYBHDataSet.tblMatHang) 'TODO: This line of code loads data into the
'QLYBHDataSet.tblChiTietHoaDon' table. You can move, or remove it, as needed.
Me.TblChiTietHoaDonTableAdapter.Fill(Me.QLYBHDataSet.tblChiTietHoaDon
)
'TODO: This line of code loads data into the 'QLYBHDataSet.tblBanHang' table. You can move, or remove it, as needed.
Me.TblBanHangTableAdapter.Fill(Me.QLYBHDataSet.tblBanHang)
End Sub
Sự kiện Click của nút Kết thúc:
Private Sub ButtonThemKH_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonThemKH.Click
'Khai báo đối tượng kiểu form thông tin khách hàng Dim frm As frmThongTinKhachHang
'Hiển thị form ở trên cùng frm.ShowDialog()
End Sub
Sự kiện TextChange của ô nhập mã khách hàng.
Private Sub MaKHTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MaKHTextBox.TextChanged
'Nếu mã khách hàng là số và khác 0 If MaKHTextBox.Text <> "0" And
IsNumeric(MaKHTextBox.Text) Then
'Khai báo đối tượng và biến cần sử dụng Dim sqlTimKiem As String
'Thiết lập câu lệnh tìm kiếm theo mã khác hàng sqlTimKiem = "SELECT * FROM tblKhachHang WHERE
MaKH=" & MaKHTextBox.Text
Using cn As New SqlConnection("Data Source=PHANDUCTHIEN;Initial Catalog=QLYBH;User ID=sa;Password=admin123@")
Using cmd As New SqlCommand(sqlTimKiem, cn) cmd.CommandType = CommandType.Text
cn.Open()
Dim ds As New DataSet()
Dim da As New SqlDataAdapter(cmd) da.Fill(ds)
'Nếu tồn tại mã khách hàng
If ds.Tables(0).Rows.Count > 0 Then TextBoxTenKH.Text =
ds.Tables(0).Rows(0).Item("HoTen").ToString()
Else
'Thông báo
MessageBox.Show("Mã khách hàng không đúng", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error)
MaKHTextBox.Focus()
End If cn.Close()
End Using End Using
End If End Sub
Sự kiện Click của nút Kết thúc:
Private Sub ButtonKetThuc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonKetThuc.Click
Me.Close() End Sub
Sự kiện Click của nút Tìm kiếm:
Private Sub ButtonTimKiem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
ButtonTimKiem.Click
If Not String.IsNullOrEmpty(SoHieuHDTextBox.Text) Then If IsNumeric(SoHieuHDTextBox.Text) Then
'Lọc dữ liệu nguồn với giá trị nhập vào ô số hóa đơn TblBanHangBindingSource.Filter = "SoHieuHD = '" &
SoHieuHDTextBox.Text & "'"
Me.TableAdapterManager.UpdateAll(Me.QLYBHDataSet) If TblBanHangBindingSource.Count <= 0 Then
MessageBox.Show("Số hóa đơn không đúng", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error)
MaKHTextBox.Text = "0" TextBoxTenKH.Text = Nothing SoHieuHDTextBox.Focus()
End If Else
'Thông báo
MessageBox.Show("Số hóa đơn phải là giá trị số.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error)
SoHieuHDTextBox.Focus() End If
Else
'Thông báo
MessageBox.Show("Chưa nhập số hóa đơn", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error)
SoHieuHDTextBox.Focus() End If
End Sub
Sự kiện Click của nút Lưu:
Private Sub ButtonLuu_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButtonLuu.Click
If MaKHTextBox.Text = "" Then
Dim kh As QLYBHDataSet.tblKhachHangRow
kh = Me.QLYBHDataSet.tblKhachHang.NewtblKhachHangRow() kh.Diachi = DiachiTextBox.Text
kh.DienThoai = DienThoaiTextBox.Text kh.Hoten = HotenTextBox.Text
kh.Gioitinh = GioitinhComboBox.SelectedItem.ToString() Me.QLYBHDataSet.tblKhachHang.Rows.Add(kh)
Me.TblKhachHangTableAdapter.Update(Me.QLYBHDataSet.tblKhachHang)
Me.TblKhachHangTableAdapter.Fill(Me.QLYBHDataSet.tblKhachHang)
Else
'TblKhachHangTableAdapter.UpdateKhachHang(HotenTextBox.Text, GioitinhComboBox.SelectedItem.ToString(), DiachiTextBox.Text, DienThoaiTextBox.Text, Convert.ToInt32(MaKHTextBox.Text))
Me.TblKhachHangTableAdapter.Update(Me.QLYBHDataSet.tblKhachHang)
Me.TblKhachHangTableAdapter.Fill(Me.QLYBHDataSet.tblKhachHang) End If