Lỗi về system.data.sqlclient mở table trong sql c năm 2024
Với sự ra đời của .Net và Visual Studio của Microsoft, việc xây dựng một chương trình quản lý với cơ sở dữ liệu đã đơn giản hơn rất nhiều. Bài này hướng dẫn bạn cách tạo ứng dụng quản lý bán hàng lưu niệm sử dụng ngôn ngữ lập trình C# và hệ quản trị cơ sở dữ liệu SQL Server. Tham khảo thêm khoá học đầy đủ lập trình .NET và khoá thành thạo với lập trình C#. Show
1. Yêu cầuXây dựng chương trình quản lý cửa hàng Bán hàng lưu niệm sử dụng ngôn ngữ C# và hệ quản trị cơ sở dữ liệu SQL Server. Hệ thống có các chức năng cơ bản như quản lý mặt hàng, quản lý khách hàng, quản lý hoá đơn bán. Cửa hàng có thể có một hoặc nhiều người bán, với mỗi hoá đơn bán hàng phải có thông tin của người bán cho khách hàng cụ thể. 2. Thiết kế cơ sở dữ liệua) Tạo ứng dụng mới– Tên project: QuanLyBanHang b) Tạo cơ sở dữ liệu– Trong cửa sổ Solution Explorer, nháy phải chuột lên tên ứng dụng, chọn Add ->New Item… Chọn Data -> Service-based Database (hoặc SQL Database trong Visual Studio Net 2005). – Đặt tên cơ sở dữ liệu: Quanlybanhang.mdf – Tạo các bảng: Trong cửa sổ Server Explorer, chọn cơ sở dữ liệu, nháy phải lên Tables, chọn Add New Table… Bảng tblChatLieu (chất liệu)Bảng tblKhach (khách)Bảng tblHang (hàng)Bảng tblNhanVien (nhân viên)Bảng tblHDBan (hoá đơn bán)Bảng tblChiTietHDBan (chi tiết hoá đơn bán)Quan hệ giữa các bảng (Relationship)Một số chú ý– Để cho phép người dùng sửa đổi thông tin của các bảng, thực hiện như sau: Vào Tools -> Options, chọn Database Tools ->Table and Database Designers, bỏ dấu chọn ở mục Prevent saving changes that require table re-creation. – Xoá liên kết tới bản sao cơ sở dữ liệu: trong cửa sổ Solution Explorer, nháy phải lên file dữ liệu (Quanlybanhang.mdf), chọn Exclude From Project – Thực hiện kết nối dữ liệu: Trong Server Explorer, nháy phải Data Connections, chọn Add Connection, chọn Microsoft SQL Server Database File, nhấn Continue. Trong hộp thoại Add Connection, nhấn Browse tìm file dữ liệu (Quanlybanhang.mdf) (tìm đến thư mục Project của bạn). Nhấn Test Connection, nếu thành công sẽ xuất hiện thông báo “Test connection succeeded”. – Nên tạo thư mục chứa ảnh: nháy phải lên tên project QuanLyBanHang, chọn Add, chọn New Folder, đặt tên thư mục là Images. Nháy phải lên thư mục Images, chọn Add, chọn Existing Item và duyệt chọn các file ảnh, nhấn Add để thêm vào thư mục Images. Xem video hướng dẫn3. Thiết kế giao diệna) Form chính– Tên form: frmMain Các thành phần của menu Name Text mnuFile Tập tin mnuThoat Thoát mnuDanhMuc Danh mục mnuChatLieu Chất liệu mnuNhanVien Nhân viên mnuKhachHang Khách hàng mnuHangHoa Hàng hoá mnuHoaDon Hoá đơn mnuHoaDonBan Hoá đơn bán mnuTimKiem Tìm kiếm mnuFindHoaDon Hoá đơn mnuFindHang Hàng mnuFindKhachHang Khách hàng mnuBaoCao Báo cáo mnuBCHangTon Hàng tồn mnuBCDoanhThu Doanh thu mnuTroGiup Trợ giúp mnuHienTroGiup Trợ giúp mnuVaiNet Vài nét Xem Video hướng dẫnb) Form Danh mục chất liệuTên form: frmDMChatLieu Các thành phần trên form: Điều khiển Name Text TextBox txtMaChatLieu txtTenChatLieu Button btnThem Thêm btnXoa Xoá btnSua Sửa btnLuu Lưu btnBoqua Bỏ qua btnDong Đóng DataGridView dgvChatLieu Xem Video hướng dẫnc) Form Danh mục nhân viênTên form: frmDMNhanvien Các thành phần trên form: Điều khiển Name Text TextBox txtMaNhanVien txtTenNhanVien txtDiaChi Button btnThem, btnXoa, btnSua, btnLuu, btnBoQua, btnDong CheckBox chkGioiTinh Nam MaskedTextBox mtbDienThoai Mask: Phone Number mskNgaySinh Mask: Short Date DataGridView dgvNhanVien Xem Video hướng dẫnd) Form Danh mục Khách HàngTên form: frmDMKhachHang Các thành phần trên form: Điều khiển Name Text TextBox txtMaKhach txtTenKhach txtDiaChi Button btnThem, btnXoa, btnSua, btnLuu, btnBoQua, btnDong MaskedTextBox mtbDienThoai Mask: Phone Number DataGridView dgvKhachHang Xem Video hướng dẫne) Form Danh mục hàng hoáTên form: frmDMHang Các thành phần trên form Điều khiển Name TextBox txtMaHang, txtTenHang, txtSoLuong, txtDonGiaNhap, txtDonGiaBan, txtAnh, txtGhiChu ComboBox cboMaChatLieu PictureBox picAnh (thuộc tính SizeMode = Zoom) DataGridView dgvHang Button btnThem, btnXoa, btnSua, btnLuu, btnBoQua, btnTimKiem, btnHienThi, btnDong, btnOpen Xem Video hướng dẫnf) Form Hoá đơn bán hàngTên form: frmHoaDonBan Các thành phần trên form Điều khiển Name Text Label lblBangChu Bằng chữ: TextBox txtMaHDBan, txtNgayBan, txtTenNhanVien,txtTenKhach, txtDiaChi, txtDienThoai, txtTongTien, txtTenHang, txtDonGiaBan, txtSoLuong, txtGiamGia, txtThanhTien. ComboBox cboMaNhanVien, cboMaKhach, cboMaHang, cboMaHDBan. DataGridView dgvHDBanHang Button btnNgay, btnThem, btnLuu, btnXoa, btnInHoaDon, btnDong, btnTimKiem Xem Video hướng dẫng) Form Tìm kiếm hoá đơnTên form: frmTimHDBan Các thành phần trên form Điều khiển Name TextBox txtMaHDBan, txtThang, txtNam, txtMaNhanVien, txtMaKhach, txtTongTien. DataGridView dgvTKHoaDon Button btnTimKiem, btnTimLai, btnDong Xem Video hướng dẫnChú ý: – Tất cả các form (trừ frmMain), thuộc tính StartPostion = CenterParent, ShowInTaskbar = False 4. Xử lý sự kiện4.1. Lớp Functions– Chứa các phương thức dùng chung – Trong khung Solution Explorer, nháy phải lên tên project, chọn Add -> New Folder, đặt tên thư mục là Class – Nháy phải thư mục Class, nháy phải chọn Add -> Class, đặt tên Functions.cs – Trong class Functions: + Khai báo bổ sung các thư viện:
+ Viết 2 phương thức: Connect() và Disconnect()
4.2. Form frmMaina) Sự kiện frmMain_Load
b) Sự kiện mnuThoat_Click
c) Hiển thị các form khácCú pháp: Hoặc + Hiển thị form frmChatLieu
4.3. Form Chất liệua) Khai báo– Khai báo
– Khai báo biến toàn cục
b) Sự kiện frmDMChatLieu_Load
Trong đó, phương thức LoadDataGridView có tác dụng lấy dữ liệu từ bảng tblChatLieu đổ vào DataGridView c) Phương thức LoadDataGridView
Với GetDataToTable được viết trong lớp Functions có tác dụng thực hiện câu lệnh SQL truy vấn dữ liệu từ CSDL đổ vào đối tượng bảng. d) Phương thức GetDataToTableMở cửa sổ lớp Class Functions viết mã lệnh như sau:
Hoặc có thể thực hiện ngắn gọn bằng cách gán tham số khi khai báo đối tượng như sau:
0 Xem Video hướng dẫne) Phương thức dgvChatLieu_ClickPhương thức này có tác dụng lấy nội dung dòng dữ liệu người dùng chọn trong lưới DataGridView và hiển thị lên các điều khiển trên Form.
1 f) Phương thức btnThem_Click
2 Với ResetValues là phương thức của form frmDMChatLieu có tác dụng xóa hết dữ liệu trong các điều khiển trên Form. g) Phương thức ResetValues
3 h) Phương thức btnLuu_ClickPhương thức này có tác dụng kiểm tra thông tin người dùng nhập vào các điều khiển trên Form trong trường hợp thêm mới và lưu các thông tin đó vào CSDL.
4 Với CheckKey và RunSQL là các phương thức được viết trong lớp Functions. CheckKey có tác dụng kiểm tra khóa trùng, RunSQL có tác dụng thực thi các câu lệnh SQL. i) Hàm CheckKeyMở cửa sổ lớp Class Functions viết mã lệnh:
5 j) Phương thức RunSQLMở cửa sổ lớp Class Functions viết mã lệnh như sau:
6 Chú ý: Đối tượng SqlCommand có hai phương thức để thực thi câu lệnh SQL, trong đó:
k) Phương thức btnSua_ClickKhi người dùng nháy chuột vào một dòng bản ghi bất kỳ trên lưới để hiển thị dữ liệu của bản ghi đó lên Form thì người dùng có thể chỉnh sửa các thông tin đó. Phương thức btnSua_Click có tác dụng lưu các thông tin người dùng đã sửa vào CSDL.
7 l) Phương thức btnXoa_Click
8 m) Phương thức RunSQLDelPhương thức RunSQLDel tương tự như RunSQL nhưng trong trường hợp xóa dữ liệu nếu dữ liệu đang được dùng bởi một đối tượng khác thì không được phép xóa. Mở cửa sổ lớp Class Functions viết mã lệnh như sau:
9 n) Phương thức btnBoQua_ClickPhương thức này được gọi khi người dùng muốn hủy bỏ các chức năng Thêm mới hoặc Sửa dữ liệu.
0 o) Phương thức dùng phím Enter thay cho phím Tab
1 Thực hiện tương tự cho txtTenChatLieu_KeyUp
2 Xem video hướng dẫn phần trên4.4. Form Danh mục Nhân viêna) Khai báo– Thư viện:
3 – Biến:
4 b) Phương thức frmDMNhanvien_Load
5 c) Phương thức LoadDataGridView – Hiển thị dữ liệu lên lưới
6 d) Phương thức dgvNhanVien_Click
7 e) Phương thức btnThem_Click
8 f) Phương thức ResetValues
9 g) Phương thức btnLuu_Click
0 Với IsDate và ConvertDateTime là các hàm được viết trong lớp Functions IsDate có tác dụng kiểm tra một biến có ở dạng ngày tháng không, ConvertDateTime có tác dụng đổi một chuỗi ngày tháng do người dùng nhập có dạng dd/mm/yyyy thành chuỗi ngày tháng có dạng mm/dd/yyyy để lưu vào CSDL. h) Hàm IsDateSoạn thảo trong lớp Functions:
1 i) Hàm ConvertDateTimeSoạn thảo hàm trong lớp Functions:
2 j) Phương thức btnSua_Click
3 k) Phương thức btnXoa_Click
4 l) Phương thức btnBoQua_Click
5
6 Thực hiện tương tự cho txtTenNhanVien.KeyUp, txtDiaChi.KeyUp, mtbDienThoai.KeyUp, mskNgaySinh.KeyUp. n) Phương thức btnDong_Click
7 Xem video hướng dẫn chi tiết4.5. Form Danh mục Khách hànga) Khai báo– Thư viện
8 – Biến
9 b) Phương thức frmDMKhachHang_Load
0 c) Phương thức LoadDataGridView
1 d) Phương thức dgvKhachHang_Click
2 e) Phương thức btnThem_Click
3 f) Phương thức ResetValues
4 g) Phương thức btnLuu_Click
5 h) Phương thức btnSua_Click
6 i) Phương thức btnXoa_Click
7 j) Phương thức btnBoQua_Click
8 k) Phương thức dùng phím Enter thay cho phím Tab
9
0 Xem video hướng dẫn Quản lý Khách Hàng4.6. Form Danh mục Hàng hóaa) Khai báo– Thư viện
8 – Biến
2 b) Phương thức frmDMHang_Load
3 Với FillCombo là một phương thức được viết trong Class Functions, có tác dụng lấy dữ liệu từ một câu lệnh SQL đổ vào một ComboBox. c) Phương thức FillComboSoạn thảo trong Class Functions :
4 d) Phương thức ResetValues
5 e) Phương thức LoadDataGridView
6 f) Phương thức dgvHang_Click
7 Với GetFieldValues là một hàm được viết trong Class Functions, có tác dụng lấy dữ liệu từ một câu lệnh SQL.
8 h) Phương thức btnThem_Click
9 i) Phương thức btnLuu_Click
0 j) Phương thức btnSua_Click
1 k) Phương thức btnXoa_Click
2 l) Phương thức btnBoQua_Click
3 m) Phương thức btnOpen_Click
4 n) Phương thức btnTimKiem_ClickPhương thức tìm kiếm cho phép tìm các bản ghi thỏa mãn một số điều kiện nào đấy và hiển thị kết quả tìm được vào lưới DataGridView.
5 o) Phương thức btnHienThi_Click
6
7 Xem Video hướng dẫn Quản lý Hàng Hoá4.7. Form Hóa đơn bána) Khai báoChọn menu Project/Add Reference, chọn thẻ COM hộp thoại Add Reference, chọn Microsoft Excel 14.0 Object Library, nhấn OK. – Thư viện
8 – Biến
9 b) Phương thức frmHoaDonBan_Load
0 c) Phương thức LoadDataGridView
1 d) Phương thức LoadInfoHoaDon()
2 e) Phương thức btnThem_Click
3 Với CreateKey là một hàm được viết trong Class Functions, có tác dụng sinh khóa tự động cho Mã hóa đơn bán. f) Hàm CreateKeySoạn thảo trong Class Functions:
4 Với ConvertTimeTo24 là một hàm toàn cục được viết trong Class Functions, có tác dụng chuyển đổi giờ từ dạng PM sang dạng 24h. g) Hàm ConvertTimeTo24Soạn thảo trong Class Functions:
5 h) Phương thức ResetValues
6 i) Phương thức btnLuu_Click
7 Với ChuyenSoSangChu là một hàm toàn cục được viết trong Class Functions, có tác dụng đọc từ dạng số sang dạng chữ. j) Hàm ChuyenSoSangChuSoạn thảo trong Class Functions:
8 k) Phương thức ResetValuesHang
9 l) Phương thức dgvHDBanHang_DoubleClickPhương thức này cho phép người dùng nháy đúp chuột vào một mặt hàng trong lưới để xóa.
0 m) Phương thức btnXoa_ClickPhương thức này cho phép xóa toàn bộ thông tin của một hóa đơn
1 n) Phương thức cboMaNhanVien_TextChanged
2 o) Phương thức cboMaKhach_TextChanged
3 p) Phương thức cboMaHang_TextChanged
4 q) Phương thức txtSoLuong_TextChanged
5 r) Phương thức txtGiamGia_TextChanged
6 s) Phương thức btnInHoaDon_Click
7 Kết quả ta có tệp Excel như sau: t) Phương thức btnTimKiem_Click
8 u) Phương thức txtSoLuong_KeyPress
9 Thực hiện tương tự cho txtGiamGia_KeyPress. v) Phương thức cboMaHDBan_DropDownPhương thức này cập nhật lại danh sách các mã hóa đơn bán và lưu vào cboMaHDBan mỗi khi người dùng nháy chuột vào nút xổ xuống của cbo.
0
1
7 Xem Video hướng dẫn Quản lý Hoá Đơn4.8. Form tìm kiếm Hóa đơn bána) Khai báo– Thư viện
3 – Biến
4 b) Phương thức frmTimHDBan_Load
5 c) Phương thức ResetValues
6 d) Phương thức btnTimKiem_Click
7 e) Phương thức LoadDataGridView
8 f) Phương thức btnTimLai_Click
9 g) Phương thức txtTongTien_KeyPress
00 h) Phương thức dgvTKHoaDon_DoubleClickPhương thức này cho phép người dùng nháy đúp chuột chọn một hóa đơn trên lưới, rồi gọi và hiển thị thông tin của hóa đơn đó lên form frmHoadonBan. Chú ý: Thay đổi phạm vi truy cập của điều khiển txtMaHDBan thành Public trong form frmHoadonBan (trong file frmHoadonBan.Designer.cs) |