Dự án html và cơ sở dữ liệu

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed rutrum ex sed lacus suscipit, một gravida turpis efficitur

  • tiêu đề 2

    Trong ullamcorper sem enim, at faucibus ante hendrerit vel. In ultrices commodo nibh, tristique imperdiet metus. Maecenas dictum enim ac dignissim scelerisque


    Tạo cơ sở dữ liệu

    Để tạo cơ sở dữ liệu trong MySQL, hãy sử dụng câu lệnh "CREATE DATABASE"

    Thí dụ

    Tạo cơ sở dữ liệu có tên "mydb"

    var mysql = yêu cầu('mysql');

    var con = mysql. createConnection({
      máy chủ. "máy chủ cục bộ",
      người dùng. "tên người dùng của bạn",
      mật khẩu. "mật khẩu của bạn"
    });

    con. connect(function(err) {
      if (err) throw err;
      bảng điều khiển. log("Đã kết nối. ");
      con. query("TẠO CƠ SỞ DỮ LIỆU mydb", function (err, result) {
        if (err) throw err;
        console. log("Cơ sở dữ liệu đã tạo");
      });
    });

    Chạy ví dụ »

    Lưu mã ở trên vào tệp có tên "demo_create_db. js" và chạy tệp

    Chạy "demo_create_db. js"

    C. \Users\Tên của bạn>nút demo_create_db. js

    Cái nào sẽ cho bạn kết quả này

    Đã kết nối.
    Đã tạo cơ sở dữ liệu



    With the life of. 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ệ thống quản trị cơ sở dữ liệu SQL Server. Tham khảo thêm khóa học đầy đủ thiết lập. NET and key to key with C# program

    1. Request

    Xâ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ệ thống 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ý hóa đơn bán hàng. Cửa hàng có thể có một hoặc nhiều người bán, với mỗi hóa đơ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ệu

    a) Tạo ứng dụng mới

    – Tên dự án. QuânLyBảnHằng

    b) Tạo cơ sở dữ liệu

    – Trong cửa sổ  Solution Explorer, nhấp chuột phải lên tên ứng dụng, chọn Thêm -> Mục mới… Chọn Dữ liệu -> Cơ sở dữ liệu dựa trên dịch vụ (hoặc Cơ sở dữ liệu SQL trong Visual Studio Net 2005)

    – Đặt tên cơ sở dữ liệu. quanlybanhang. mdf

    Dự án html và cơ sở dữ liệu
    Dự án html và cơ sở dữ liệu

    – Tạo các bảng. Trong cửa sổ Server Explorer, chọn cơ sở dữ liệu, nháy chuột phải lên Tables, chọn Add New Table…

    Bảng tblChatLieu (chất liệu)

    Dự án html và cơ sở dữ liệu
    Dự án html và cơ sở dữ liệu
    Table tblKhach (khách)

    Dự án html và cơ sở dữ liệu
    Dự án html và cơ sở dữ liệu

    Bảng tblHang (hàng)

    Dự án html và cơ sở dữ liệu
    Dự án html và cơ sở dữ liệu

    Bảng tblNhanVien (nhân viên)

    Dự án html và cơ sở dữ liệu
    Dự án html và cơ sở dữ liệu

    Bảng tblHDBan (hoá đơn bán)

    Dự án html và cơ sở dữ liệu
    Dự án html và cơ sở dữ liệu

    Bảng tblChiTietHDBan (chi tiết hóa đơn bán)

    Dự án html và cơ sở dữ liệu
    Dự án html và cơ sở dữ liệu

    Quan hệ giữa các bảng (Relationship)

    Dự án html và cơ sở dữ liệu
    Dự án html và cơ sở dữ liệu

    A number of note

    – Để cho phép người dùng sửa đổi thông tin của các bảng, hãy thực hiện như sau

    Vào Công cụ -> Tùy chọn, chọn Công cụ cơ sở dữ liệu -> Trình thiết kế bảng và cơ sở dữ liệu, bỏ dấu chọn ở mục Ngăn lưu các thay đổi yêu cầu tạo lại bảng

    – Xoá link tới bản sao cơ sở dữ liệu. trong cửa sổ Solution Explorer, nhấp chuột phải lên tệp dữ liệu (Quanlybanhang. mdf), chọn Loại trừ khỏi dự án

    – Thực hiện kết nối dữ liệu

    Trong Server Explorer, nhấp chuột 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 find file data (Quanlybanhang. mdf) (đã tìm thấy thư mục Dự án 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 Successful”

    – Nên tạo thư mục chứa ảnh. nhấp chuột phải lên tên dự án QuanLyBanHang, chọn Thêm, chọn Thư mục mới, đặt tên thư mục là Hình ảnh. Máy phải lên thư mục Hình ảnh, chọn Thêm, chọn Mục hiện có và duyệt chọn các tệp ảnh, nhấn Thêm để thêm vào thư mục Hình ảnh

    Xem hướng dẫn video

    3. Design design

    a) Hình thức chính

    – Mẫu tên. frmMain

    Dự án html và cơ sở dữ liệu
    Dự án html và cơ sở dữ liệu

    Các thành phần của menu

    NameTextmnuFileTập tinmnuThoat    ThoátmnuDanhMucDanh mụcmnuChatLieu     Chất liệumnuNhanVien     Nhân viênmnuKhachHang     Khách hàngmnuHangHoa     Hàng hoámnuHoaDonHoá đơnmnuHoaDonBan     Hoá đơn bánmnuTimKiemTìm kiếmmnuFindHoaDon     Hoá đơnmnuFindHang     HàngmnuFindKhachHang     Khách hàngmnuBaoCaoBáo cáomnuBCHangTon     Hàng tồnmnuBCDoanhThu     Doanh thumnuTroGiupTrợ giúpmnuHienTroGiup     Trợ giúpmnuVaiNet     Vài nét

    Xem Video hướng dẫn

    b) Mẫu Danh mục chất liệu

    Tên biểu mẫu. frmDMChatLieu

    Dự án html và cơ sở dữ liệu
    Dự án html và cơ sở dữ liệu

    Các thành phần trên biểu mẫu

    Điều khiểnTênVăn bảnBoxtxtMaChatLieutxtMườiChatLieuButtonbtnThemAddbtnXoaXoábtnSuaSuabtnLưu LưubtnBoquaBỏ quabtnDongDangDataGridViewdgvChatLieu

    Xem Video hướng dẫn

    c) Mẫu Danh mục nhân viên

    Tên biểu mẫu. frmDMNhanvien

    Dự án html và cơ sở dữ liệu
    Dự án html và cơ sở dữ liệu

    Các thành phần trên biểu mẫu

    Điều khiểnTênTextTextBoxtxtMaNhanVientxtTenNhanVientxtDiaChiButtonbtnThem, btnXoa, btnSua, btnLuu, btnBoQua, btnDongCheckBoxchkGioiTinhNamMaskedTextBoxmtbDienThoaiMask. Số Điện ThoạimskNgaySinhMask. Short DateDataGridViewdgvNhanVien

    Xem Video hướng dẫn

    d) Mẫu Danh Mục Khách Hàng

    Tên biểu mẫu. frmDMKhachHang

    Dự án html và cơ sở dữ liệu
    Dự án html và cơ sở dữ liệu

    Các thành phần trên biểu mẫu

    Điều khiểnTênTextTextBoxtxtMaKhachtxtTenKhachtxtDiaChiButtonbtnThem, btnXoa, btnSua, btnLuu, btnBoQua, btnDongMaskedTextBoxmtbDienThoaiMask. Số điện thoạiDataGridViewdgvKhachHang

    Xem Video hướng dẫn

    e) Mẫu Danh mục hàng hoá

    Tên biểu mẫu. frmDMhang

    Dự án html và cơ sở dữ liệu
    Dự án html và cơ sở dữ liệu

    Các thành phần trên biểu mẫu

    Điều khiểnTênTextBoxtxtMaHang, txtTenHang, txtSoLuong,  txtDonGiaNhap, txtDonGiaBan, txtAnh,  txtGhiChuComboBoxcboMaChatLieuPictureBoxpicAnh (thuộc tính SizeMode = Zoom)DataGridViewdgvHangOpenButtonbtnThem, btnXoa, btnSua, btnLuu, btnBoQua, btnTimDongKiem, btnnHien, btnHien, thi

    Xem Video hướng dẫn

    f) Mẫu hóa đơn bán hàng

    Tên biểu mẫu. từ HoaDonBan

    Dự án html và cơ sở dữ liệu
    Dự án html và cơ sở dữ liệu

    Các thành phần trên biểu mẫu

    Điều khiểnNameTextLabellblBangChuBằng chữ. TextBoxtxtMaHDBan, txtNgayBan, txtTenNhanVien,txtTenKhach, txtDiaChi, txtDienThoai, txtTongTien, txtTenHang, txtDonGiaBan, txtSoLuong, txtGiamGia, txtThanhTien. ComboBoxcboMaNhanVien, cboMaKhach, cboMaHang, cboMaHDBan. DataGridViewdgvHDBanHangButtonbtnNgay, btnThem, btnLuu, btnXoa, btnInHoaDon, btnDong,  btnTimKiem

    Xem Video hướng dẫn

    g) Form Tìm kiếm hóa đơn

    Tên biểu mẫu. từTimHDBan

    Dự án html và cơ sở dữ liệu
    Dự án html và cơ sở dữ liệu

    Các thành phần trên biểu mẫu

    Điều khiểnTênTextBoxtxtMaHDBan, txtThang, txtNam, txtMaNhanVien, txtMaKhach, txtTongTien. DataGridViewdgvTKHoaDonButtonbtnTimKiem, btnTimLai, btnDong

    Xem Video hướng dẫn

     

    Chú thích

    – Tất cả các dạng (ngoại trừ frmMain), thuộc tính StartPostion = CenterParent, ShowInTaskbar = False

    4. Xử lý sự kiện

    4. 1. Lớp Chức năng

    – Chứa các phương thức sử dụng chung

    – Trong khung Solution Explorer, nháy phải lên tên dự án, chọn Thêm -> Thư mục mới, đặt tên thư mục là Lớp

    – Máy phải có thư mục Class, nháy phải chọn Add -> Class, đặt tên Functions. cs

    – Các hàm trong lớp

    + Khai báo bổ sung thư viện

    
    using System.Data;
    using System.Data.SqlClient;
    using System.Windows.Forms;     // Sử dụng đối tượng MessageBox
    
    

    + Viết 2 phương thức. Kết nối() và Ngắt kết nối()

    
    namespace QuanLyBanHang.Class
    {
        class Functions
        {
            public static SqlConnection Con;  //Khai báo đối tượng kết nối        
    
            public static void Connect()
            {
                Con = new SqlConnection();   //Khởi tạo đối tượng
                Con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\Quanlybanhang.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
                Con.Open();                  //Mở kết nối
                //Kiểm tra kết nối
                if (Con.State == ConnectionState.Open)
                    MessageBox.Show("Kết nối thành công");
                else MessageBox.Show("Không thể kết nối với dữ liệu");
    
            }
            public static void Disconnect()
            {
                if (Con.State == ConnectionState.Open)
                {
                    Con.Close();   	//Đóng kết nối
                    Con.Dispose(); 	//Giải phóng tài nguyên
                    Con = null;
                }
            }
    }
    
    

    4. 2. Mẫu frmMain

    a) Sự kiện frmMain_Load

    
    private void frmMain_Load(object sender, EventArgs e)
            {
                Class.Functions.Connect(); //Mở kết nối
            }
    
    

    b) Sự kiện mnuThoat_Click

    
    private void mnuThoat_Click(object sender, EventArgs e)
            {
                Class.Functions.Disconnect(); //Đóng kết nối
                Application.Exit(); //Thoát
            }
    
    

    c) Show the other form

    cú pháp

    = new ();

    . ShowDialog();

    Hoặc .Show(); //Hiện thị dạng thông thường

    + Hiển thị form frmChatLieu

    
    private void mnuChatLieu_Click(object sender, EventArgs e)
            {
                frmDMChatLieu frmChatLieu = new frmDMChatLieu(); //Khởi tạo đối tượng
                frmChatLieu.ShowDialog(); //Hiển thị
            }
    
    

    4. 3. Form Material

    a) Khai báo

    – Khai báo

    
    using System.Data.SqlClient; //Sử dụng thư viện để làm việc SQL server
    using QuanLyBanHang.Class; //Sử dụng class Functions.cs
    
    

    – Khai báo biến toàn cục

    
    DataTable tblCL; //Chứa dữ liệu bảng Chất liệu
    

    b) Sự kiện frmDMChatLieu_Load

    
    private void frmDMChatLieu_Load(object sender, EventArgs e)
            {
                txtMaChatLieu.Enabled = false;
                btnLuu.Enabled = false;
                btnBoQua.Enabled = false;
                LoadDataGridView(); //Hiển thị bảng tblChatLieu
            }
    
    

    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

    ________số 8

    Với GetDataToTable được viết trong lớp Hàm có tác dụng thực hiện câu lệnh SQL truy vấn dữ liệu từ đổ vào bảng đối tượng cơ sở dữ liệu

    d) Phương thức GetDataToTable

    Open window Layer Functions viết mã lệnh như sau

    
    //Lấy dữ liệu vào bảng
            public static DataTable GetDataToTable(string sql)
            {
                SqlDataAdapter dap = new SqlDataAdapter(); //Định nghĩa đối tượng thuộc lớp SqlDataAdapter
                //Tạo đối tượng thuộc lớp SqlCommand
                dap.SelectCommand = new SqlCommand();
                dap.SelectCommand.Connection = Functions.Con; //Kết nối cơ sở dữ liệu
                dap.SelectCommand.CommandText = sql; //Lệnh SQL
                //Khai báo đối tượng table thuộc lớp DataTable
                DataTable table = new DataTable();
                dap.Fill(table);
                return table;
            }
    
    

    Hoặc có thể rút gọn bằng cách gán tham số khi khai báo các đối tượng như sau

    
    namespace QuanLyBanHang.Class
    {
        class Functions
        {
            public static SqlConnection Con;  //Khai báo đối tượng kết nối        
    
            public static void Connect()
            {
                Con = new SqlConnection();   //Khởi tạo đối tượng
                Con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\Quanlybanhang.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
                Con.Open();                  //Mở kết nối
                //Kiểm tra kết nối
                if (Con.State == ConnectionState.Open)
                    MessageBox.Show("Kết nối thành công");
                else MessageBox.Show("Không thể kết nối với dữ liệu");
    
            }
            public static void Disconnect()
            {
                if (Con.State == ConnectionState.Open)
                {
                    Con.Close();   	//Đóng kết nối
                    Con.Dispose(); 	//Giải phóng tài nguyên
                    Con = null;
                }
            }
    }
    
    
    0

    Xem Video hướng dẫn

    e) Phương thức dgvChatLieu_Click

    Phươ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 Biểu mẫu

    
    namespace QuanLyBanHang.Class
    {
        class Functions
        {
            public static SqlConnection Con;  //Khai báo đối tượng kết nối        
    
            public static void Connect()
            {
                Con = new SqlConnection();   //Khởi tạo đối tượng
                Con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\Quanlybanhang.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
                Con.Open();                  //Mở kết nối
                //Kiểm tra kết nối
                if (Con.State == ConnectionState.Open)
                    MessageBox.Show("Kết nối thành công");
                else MessageBox.Show("Không thể kết nối với dữ liệu");
    
            }
            public static void Disconnect()
            {
                if (Con.State == ConnectionState.Open)
                {
                    Con.Close();   	//Đóng kết nối
                    Con.Dispose(); 	//Giải phóng tài nguyên
                    Con = null;
                }
            }
    }
    
    
    1

    f) Phương thức btnThem_Click

    
    namespace QuanLyBanHang.Class
    {
        class Functions
        {
            public static SqlConnection Con;  //Khai báo đối tượng kết nối        
    
            public static void Connect()
            {
                Con = new SqlConnection();   //Khởi tạo đối tượng
                Con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\Quanlybanhang.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
                Con.Open();                  //Mở kết nối
                //Kiểm tra kết nối
                if (Con.State == ConnectionState.Open)
                    MessageBox.Show("Kết nối thành công");
                else MessageBox.Show("Không thể kết nối với dữ liệu");
    
            }
            public static void Disconnect()
            {
                if (Con.State == ConnectionState.Open)
                {
                    Con.Close();   	//Đóng kết nối
                    Con.Dispose(); 	//Giải phóng tài nguyên
                    Con = null;
                }
            }
    }
    
    
    2

    With ResetValues ​​is method of 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

    
    namespace QuanLyBanHang.Class
    {
        class Functions
        {
            public static SqlConnection Con;  //Khai báo đối tượng kết nối        
    
            public static void Connect()
            {
                Con = new SqlConnection();   //Khởi tạo đối tượng
                Con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\Quanlybanhang.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
                Con.Open();                  //Mở kết nối
                //Kiểm tra kết nối
                if (Con.State == ConnectionState.Open)
                    MessageBox.Show("Kết nối thành công");
                else MessageBox.Show("Không thể kết nối với dữ liệu");
    
            }
            public static void Disconnect()
            {
                if (Con.State == ConnectionState.Open)
                {
                    Con.Close();   	//Đóng kết nối
                    Con.Dispose(); 	//Giải phóng tài nguyên
                    Con = null;
                }
            }
    }
    
    
    3

    h) Phương thức btnLuu_Click

    Phươ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 Biểu mẫu trong trường hợp mới hơn và lưu các thông tin đó vào cơ sở dữ liệu

    
    namespace QuanLyBanHang.Class
    {
        class Functions
        {
            public static SqlConnection Con;  //Khai báo đối tượng kết nối        
    
            public static void Connect()
            {
                Con = new SqlConnection();   //Khởi tạo đối tượng
                Con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\Quanlybanhang.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
                Con.Open();                  //Mở kết nối
                //Kiểm tra kết nối
                if (Con.State == ConnectionState.Open)
                    MessageBox.Show("Kết nối thành công");
                else MessageBox.Show("Không thể kết nối với dữ liệu");
    
            }
            public static void Disconnect()
            {
                if (Con.State == ConnectionState.Open)
                {
                    Con.Close();   	//Đóng kết nối
                    Con.Dispose(); 	//Giải phóng tài nguyên
                    Con = null;
                }
            }
    }
    
    
    4

    With CheckKey và RunSQL là các phương thức được viết trong các Hàm lớp

    CheckKey có tác dụng kiểm tra việc sao chép khóa, RunSQL có tác dụng thực thi các câu lệnh SQL

    i) Hàm CheckKey

    Open window Layer Functions viết mã lệnh

    
    namespace QuanLyBanHang.Class
    {
        class Functions
        {
            public static SqlConnection Con;  //Khai báo đối tượng kết nối        
    
            public static void Connect()
            {
                Con = new SqlConnection();   //Khởi tạo đối tượng
                Con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\Quanlybanhang.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
                Con.Open();                  //Mở kết nối
                //Kiểm tra kết nối
                if (Con.State == ConnectionState.Open)
                    MessageBox.Show("Kết nối thành công");
                else MessageBox.Show("Không thể kết nối với dữ liệu");
    
            }
            public static void Disconnect()
            {
                if (Con.State == ConnectionState.Open)
                {
                    Con.Close();   	//Đóng kết nối
                    Con.Dispose(); 	//Giải phóng tài nguyên
                    Con = null;
                }
            }
    }
    
    
    5

    j) Phương thức RunSQL

    Open window Layer Functions viết mã lệnh như sau

    
    namespace QuanLyBanHang.Class
    {
        class Functions
        {
            public static SqlConnection Con;  //Khai báo đối tượng kết nối        
    
            public static void Connect()
            {
                Con = new SqlConnection();   //Khởi tạo đối tượng
                Con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\Quanlybanhang.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
                Con.Open();                  //Mở kết nối
                //Kiểm tra kết nối
                if (Con.State == ConnectionState.Open)
                    MessageBox.Show("Kết nối thành công");
                else MessageBox.Show("Không thể kết nối với dữ liệu");
    
            }
            public static void Disconnect()
            {
                if (Con.State == ConnectionState.Open)
                {
                    Con.Close();   	//Đóng kết nối
                    Con.Dispose(); 	//Giải phóng tài nguyên
                    Con = null;
                }
            }
    }
    
    
    6

    Chú thích. Đối tượng SqlCommand có hai phương thức để thực thi câu lệnh SQL, trong đó

    • thực thi đọc. thực thi câu lệnh SQL có dữ liệu trả về, ví dụ SELECT
    • Thực thiNonQuery. thực thi các câu lệnh SQL không yêu cầu trả về tệp dữ liệu, ví dụ. CHÈN, CẬP NHẬT, XÓA

    k) Phương thức btnSua_Click

    Khi người dùng nhấp chuột vào một dòng ghi bất kỳ trên lưới để hiển thị dữ liệu của bản ghi đó lên Biểu mẫu 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

    
    namespace QuanLyBanHang.Class
    {
        class Functions
        {
            public static SqlConnection Con;  //Khai báo đối tượng kết nối        
    
            public static void Connect()
            {
                Con = new SqlConnection();   //Khởi tạo đối tượng
                Con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\Quanlybanhang.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
                Con.Open();                  //Mở kết nối
                //Kiểm tra kết nối
                if (Con.State == ConnectionState.Open)
                    MessageBox.Show("Kết nối thành công");
                else MessageBox.Show("Không thể kết nối với dữ liệu");
    
            }
            public static void Disconnect()
            {
                if (Con.State == ConnectionState.Open)
                {
                    Con.Close();   	//Đóng kết nối
                    Con.Dispose(); 	//Giải phóng tài nguyên
                    Con = null;
                }
            }
    }
    
    
    7

    l) Phương thức btnXoa_Click

    
    namespace QuanLyBanHang.Class
    {
        class Functions
        {
            public static SqlConnection Con;  //Khai báo đối tượng kết nối        
    
            public static void Connect()
            {
                Con = new SqlConnection();   //Khởi tạo đối tượng
                Con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\Quanlybanhang.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
                Con.Open();                  //Mở kết nối
                //Kiểm tra kết nối
                if (Con.State == ConnectionState.Open)
                    MessageBox.Show("Kết nối thành công");
                else MessageBox.Show("Không thể kết nối với dữ liệu");
    
            }
            public static void Disconnect()
            {
                if (Con.State == ConnectionState.Open)
                {
                    Con.Close();   	//Đóng kết nối
                    Con.Dispose(); 	//Giải phóng tài nguyên
                    Con = null;
                }
            }
    }
    
    
    8

    m) Phương thức RunSQLDel

    Phươ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 sử dụng bởi một đối tượng khác thì không được phép xóa

    Open window Layer Functions viết mã lệnh như sau

    
    namespace QuanLyBanHang.Class
    {
        class Functions
        {
            public static SqlConnection Con;  //Khai báo đối tượng kết nối        
    
            public static void Connect()
            {
                Con = new SqlConnection();   //Khởi tạo đối tượng
                Con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\Quanlybanhang.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
                Con.Open();                  //Mở kết nối
                //Kiểm tra kết nối
                if (Con.State == ConnectionState.Open)
                    MessageBox.Show("Kết nối thành công");
                else MessageBox.Show("Không thể kết nối với dữ liệu");
    
            }
            public static void Disconnect()
            {
                if (Con.State == ConnectionState.Open)
                {
                    Con.Close();   	//Đóng kết nối
                    Con.Dispose(); 	//Giải phóng tài nguyên
                    Con = null;
                }
            }
    }
    
    
    9

    n) Phương thức btnBoQua_Click

    Phươ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 Chỉnh sửa dữ liệu

    
    private void frmMain_Load(object sender, EventArgs e)
            {
                Class.Functions.Connect(); //Mở kết nối
            }
    
    
    0

    o) Phương thức sử dụng phím Enter thay cho phím Tab

    
    private void frmMain_Load(object sender, EventArgs e)
            {
                Class.Functions.Connect(); //Mở kết nối
            }
    
    
    1

    Thực hiện tương tự cho txtTenChatLieu_KeyUp
    p) Phương thức btnDong_Click

    
    private void frmMain_Load(object sender, EventArgs e)
            {
                Class.Functions.Connect(); //Mở kết nối
            }
    
    
    2

    Xem video hướng dẫn phần trên

    4. 4. Form Danh mục nhân viên

    a) Khai báo

    – Thư viện

    
    private void frmMain_Load(object sender, EventArgs e)
            {
                Class.Functions.Connect(); //Mở kết nối
            }
    
    
    3

    – Biến

    
    private void frmMain_Load(object sender, EventArgs e)
            {
                Class.Functions.Connect(); //Mở kết nối
            }
    
    
    4

    b) Phương thức frmDMNhanvien_Load

    
    private void frmMain_Load(object sender, EventArgs e)
            {
                Class.Functions.Connect(); //Mở kết nối
            }
    
    
    5

    c) Phương thức LoadDataGridView – Hiển thị dữ liệu lên lưới

    
    private void frmMain_Load(object sender, EventArgs e)
            {
                Class.Functions.Connect(); //Mở kết nối
            }
    
    
    6

    d) Phương thức dgvNhanVien Click

    
    private void frmMain_Load(object sender, EventArgs e)
            {
                Class.Functions.Connect(); //Mở kết nối
            }
    
    
    7

    e) Phương thức btnThem_Click

    
    private void frmMain_Load(object sender, EventArgs e)
            {
                Class.Functions.Connect(); //Mở kết nối
            }
    
    
    8

    f) Phương thức ResetValues

    
    private void frmMain_Load(object sender, EventArgs e)
            {
                Class.Functions.Connect(); //Mở kết nối
            }
    
    
    9

    g) Phương thức btnLuu_Click

    
    private void mnuThoat_Click(object sender, EventArgs e)
            {
                Class.Functions.Disconnect(); //Đóng kết nối
                Application.Exit(); //Thoát
            }
    
    
    0

    With IsDate và ConvertDateTime là các hàm được viết trong lớp Hàm

    IsDate có tác dụng kiểm tra một biến có ở dạng tháng không, ConvertDateTime có tác dụng thay đổi chuỗi ngày do người dùng nhập có dạng dd/mm/yyyy thành chuỗi ngày có dạng mm/dd/yyyy để lưu vào cơ sở dữ liệu

    h) Hàm IsDate

    Soạn thảo trong các Hàm lớp

    
    private void mnuThoat_Click(object sender, EventArgs e)
            {
                Class.Functions.Disconnect(); //Đóng kết nối
                Application.Exit(); //Thoát
            }
    
    
    1

    i) Hàm ConvertDateTime

    Soạn thảo hàm trong lớp Functions

    
    private void mnuThoat_Click(object sender, EventArgs e)
            {
                Class.Functions.Disconnect(); //Đóng kết nối
                Application.Exit(); //Thoát
            }
    
    
    2

    j) Phương thức btnSua_Click

    
    private void mnuThoat_Click(object sender, EventArgs e)
            {
                Class.Functions.Disconnect(); //Đóng kết nối
                Application.Exit(); //Thoát
            }
    
    
    3

    k) Phương thức btnXoa_Click

    
    private void mnuThoat_Click(object sender, EventArgs e)
            {
                Class.Functions.Disconnect(); //Đóng kết nối
                Application.Exit(); //Thoát
            }
    
    
    4

    l) Phương thức btnBoQua_Click

    
    private void mnuThoat_Click(object sender, EventArgs e)
            {
                Class.Functions.Disconnect(); //Đóng kết nối
                Application.Exit(); //Thoát
            }
    
    
    5

    m) Phương thức sử dụng phím Enter thay cho phím Tab

    
    private void mnuThoat_Click(object sender, EventArgs e)
            {
                Class.Functions.Disconnect(); //Đóng kết nối
                Application.Exit(); //Thoát
            }
    
    
    6

    Thực hiện tương tự cho txtTenNhanVien. KeyUp, txtDiaChi. KeyUp, mtbDienThoại. KeyUp, mskNgaySinh. chìa khóa

    n) Phương thức btnDong_Click

    
    private void mnuThoat_Click(object sender, EventArgs e)
            {
                Class.Functions.Disconnect(); //Đóng kết nối
                Application.Exit(); //Thoát
            }
    
    
    7

    Xem video hướng dẫn chi tiết

    4. 5. Form Danh mục khách hàng

    a) Khai báo

    – Thư viện

    
    private void mnuThoat_Click(object sender, EventArgs e)
            {
                Class.Functions.Disconnect(); //Đóng kết nối
                Application.Exit(); //Thoát
            }
    
    
    8

    – Biến

    
    private void mnuThoat_Click(object sender, EventArgs e)
            {
                Class.Functions.Disconnect(); //Đóng kết nối
                Application.Exit(); //Thoát
            }
    
    
    9

    b) Phương thức frmDMKhachHang_Load

    
    private void mnuChatLieu_Click(object sender, EventArgs e)
            {
                frmDMChatLieu frmChatLieu = new frmDMChatLieu(); //Khởi tạo đối tượng
                frmChatLieu.ShowDialog(); //Hiển thị
            }
    
    
    0

    c) Phương thức LoadDataGridView

    
    private void mnuChatLieu_Click(object sender, EventArgs e)
            {
                frmDMChatLieu frmChatLieu = new frmDMChatLieu(); //Khởi tạo đối tượng
                frmChatLieu.ShowDialog(); //Hiển thị
            }
    
    
    1

    d) Phương thức dgvKhachHang_Click

    
    private void mnuChatLieu_Click(object sender, EventArgs e)
            {
                frmDMChatLieu frmChatLieu = new frmDMChatLieu(); //Khởi tạo đối tượng
                frmChatLieu.ShowDialog(); //Hiển thị
            }
    
    
    2

    e) Phương thức btnThem_Click

    
    private void mnuChatLieu_Click(object sender, EventArgs e)
            {
                frmDMChatLieu frmChatLieu = new frmDMChatLieu(); //Khởi tạo đối tượng
                frmChatLieu.ShowDialog(); //Hiển thị
            }
    
    
    3

    f) Phương thức ResetValues

    
    private void mnuChatLieu_Click(object sender, EventArgs e)
            {
                frmDMChatLieu frmChatLieu = new frmDMChatLieu(); //Khởi tạo đối tượng
                frmChatLieu.ShowDialog(); //Hiển thị
            }
    
    
    4

    g) Phương thức btnLuu_Click

    
    private void mnuChatLieu_Click(object sender, EventArgs e)
            {
                frmDMChatLieu frmChatLieu = new frmDMChatLieu(); //Khởi tạo đối tượng
                frmChatLieu.ShowDialog(); //Hiển thị
            }
    
    
    5

    h) Phương thức btnSua_Click

    
    private void mnuChatLieu_Click(object sender, EventArgs e)
            {
                frmDMChatLieu frmChatLieu = new frmDMChatLieu(); //Khởi tạo đối tượng
                frmChatLieu.ShowDialog(); //Hiển thị
            }
    
    
    6

    i) Phương thức btnXoa_Click

    
    private void mnuChatLieu_Click(object sender, EventArgs e)
            {
                frmDMChatLieu frmChatLieu = new frmDMChatLieu(); //Khởi tạo đối tượng
                frmChatLieu.ShowDialog(); //Hiển thị
            }
    
    
    7

    j) Phương thức btnBoQua_Click

    
    private void mnuChatLieu_Click(object sender, EventArgs e)
            {
                frmDMChatLieu frmChatLieu = new frmDMChatLieu(); //Khởi tạo đối tượng
                frmChatLieu.ShowDialog(); //Hiển thị
            }
    
    
    8

    k) Phương thức sử dụng phím Enter thay cho phím Tab

    
    private void mnuChatLieu_Click(object sender, EventArgs e)
            {
                frmDMChatLieu frmChatLieu = new frmDMChatLieu(); //Khởi tạo đối tượng
                frmChatLieu.ShowDialog(); //Hiển thị
            }
    
    
    9

    l) Phương thức btnDong_Click

    
    using System.Data.SqlClient; //Sử dụng thư viện để làm việc SQL server
    using QuanLyBanHang.Class; //Sử dụng class Functions.cs
    
    
    0

    Xem video hướng dẫn Quản Lý Khách Hàng

    4. 6. Form Danh mục hàng hóa

    a) Khai báo

    – Thư viện

    
    private void mnuThoat_Click(object sender, EventArgs e)
            {
                Class.Functions.Disconnect(); //Đóng kết nối
                Application.Exit(); //Thoát
            }
    
    
    8

    – Biến

    
    using System.Data.SqlClient; //Sử dụng thư viện để làm việc SQL server
    using QuanLyBanHang.Class; //Sử dụng class Functions.cs
    
    
    2

    b) Phương thức frmDMhang_Load

    
    using System.Data.SqlClient; //Sử dụng thư viện để làm việc SQL server
    using QuanLyBanHang.Class; //Sử dụng class Functions.cs
    
    
    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 được đổ vào một ComboBox

    c) Phương thức FillCombo

    Soạn thảo trong Class Functions

    
    using System.Data.SqlClient; //Sử dụng thư viện để làm việc SQL server
    using QuanLyBanHang.Class; //Sử dụng class Functions.cs
    
    
    4

    d) Phương thức ResetValues

    
    using System.Data.SqlClient; //Sử dụng thư viện để làm việc SQL server
    using QuanLyBanHang.Class; //Sử dụng class Functions.cs
    
    
    5

    e) Phương thức LoadDataGridView

    
    using System.Data.SqlClient; //Sử dụng thư viện để làm việc SQL server
    using QuanLyBanHang.Class; //Sử dụng class Functions.cs
    
    
    6

    f) Phương thức dgvHang_Click

    
    using System.Data.SqlClient; //Sử dụng thư viện để làm việc SQL server
    using QuanLyBanHang.Class; //Sử dụng class Functions.cs
    
    
    7

    With 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.
    g) Hàm GetFieldValues
    Soạn thảo trong Hàm lớp

    
    using System.Data.SqlClient; //Sử dụng thư viện để làm việc SQL server
    using QuanLyBanHang.Class; //Sử dụng class Functions.cs
    
    
    8

    h) Phương thức btnThem_Click

    
    using System.Data.SqlClient; //Sử dụng thư viện để làm việc SQL server
    using QuanLyBanHang.Class; //Sử dụng class Functions.cs
    
    
    9

    i) Phương thức btnLuu_Click

    
    DataTable tblCL; //Chứa dữ liệu bảng Chất liệu
    
    0

    j) Phương thức btnSua_Click

    
    DataTable tblCL; //Chứa dữ liệu bảng Chất liệu
    
    1

    k) Phương thức btnXoa_Click

    
    DataTable tblCL; //Chứa dữ liệu bảng Chất liệu
    
    2

    l) Phương thức btnBoQua_Click

    
    DataTable tblCL; //Chứa dữ liệu bảng Chất liệu
    
    3

    m) Phương thức btnOpen_Click

    
    DataTable tblCL; //Chứa dữ liệu bảng Chất liệu
    
    4

    n) Phương thức btnTimKiem_Click

    Phương thức tìm kiếm cho phép tìm kiếm các bản ghi đáp ứng một số điều kiện nào đó và hiển thị kết quả tìm kiếm được đưa vào lưới DataGridView

    
    DataTable tblCL; //Chứa dữ liệu bảng Chất liệu
    
    5

    o) Phương thức btnHienThi_Click

    
    DataTable tblCL; //Chứa dữ liệu bảng Chất liệu
    
    6

    p) Phương thức btnDong_Click

    
    DataTable tblCL; //Chứa dữ liệu bảng Chất liệu
    
    7

    Xem Video hướng dẫn Quản lý Hàng Hóa

    4. 7. Form Hóa đơn bán hàng

    a) Khai báo

    Chọn menu Project/Add Reference, chọn thẻ COM box thoại Add Reference, chọn Microsoft Excel 14. 0 Thư viện đối tượng, nhấn OK

    Dự án html và cơ sở dữ liệu
    Dự án html và cơ sở dữ liệu

    – Thư viện

    
    DataTable tblCL; //Chứa dữ liệu bảng Chất liệu
    
    8

    – Biến

    
    DataTable tblCL; //Chứa dữ liệu bảng Chất liệu
    
    9

    b) Phương thức frmHoaDonBan_Load

    
    private void frmDMChatLieu_Load(object sender, EventArgs e)
            {
                txtMaChatLieu.Enabled = false;
                btnLuu.Enabled = false;
                btnBoQua.Enabled = false;
                LoadDataGridView(); //Hiển thị bảng tblChatLieu
            }
    
    
    0

    c) Phương thức LoadDataGridView

    
    private void frmDMChatLieu_Load(object sender, EventArgs e)
            {
                txtMaChatLieu.Enabled = false;
                btnLuu.Enabled = false;
                btnBoQua.Enabled = false;
                LoadDataGridView(); //Hiển thị bảng tblChatLieu
            }
    
    
    1

    d) Phương thức LoadInfoHoaDon()

    
    private void frmDMChatLieu_Load(object sender, EventArgs e)
            {
                txtMaChatLieu.Enabled = false;
                btnLuu.Enabled = false;
                btnBoQua.Enabled = false;
                LoadDataGridView(); //Hiển thị bảng tblChatLieu
            }
    
    
    2

    e) Phương thức btnThem_Click

    
    private void frmDMChatLieu_Load(object sender, EventArgs e)
            {
                txtMaChatLieu.Enabled = false;
                btnLuu.Enabled = false;
                btnBoQua.Enabled = false;
                LoadDataGridView(); //Hiển thị bảng tblChatLieu
            }
    
    
    3

    With 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 CreateKey

    Soạn thảo trong Class Functions

    
    private void frmDMChatLieu_Load(object sender, EventArgs e)
            {
                txtMaChatLieu.Enabled = false;
                btnLuu.Enabled = false;
                btnBoQua.Enabled = false;
                LoadDataGridView(); //Hiển thị bảng tblChatLieu
            }
    
    
    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ừ định dạng PM sang định dạng 24h

    g) Hàm ConvertTimeTo24

    Soạn thảo trong Class Functions

    
    private void frmDMChatLieu_Load(object sender, EventArgs e)
            {
                txtMaChatLieu.Enabled = false;
                btnLuu.Enabled = false;
                btnBoQua.Enabled = false;
                LoadDataGridView(); //Hiển thị bảng tblChatLieu
            }
    
    
    5

    h) Phương thức ResetValues

    
    private void frmDMChatLieu_Load(object sender, EventArgs e)
            {
                txtMaChatLieu.Enabled = false;
                btnLuu.Enabled = false;
                btnBoQua.Enabled = false;
                LoadDataGridView(); //Hiển thị bảng tblChatLieu
            }
    
    
    6

    i) Phương thức btnLuu_Click

    
    private void frmDMChatLieu_Load(object sender, EventArgs e)
            {
                txtMaChatLieu.Enabled = false;
                btnLuu.Enabled = false;
                btnBoQua.Enabled = false;
                LoadDataGridView(); //Hiển thị bảng tblChatLieu
            }
    
    
    7

    With 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 ChuyểnSangChu

    Soạn thảo trong Class Functions

    
    private void frmDMChatLieu_Load(object sender, EventArgs e)
            {
                txtMaChatLieu.Enabled = false;
                btnLuu.Enabled = false;
                btnBoQua.Enabled = false;
                LoadDataGridView(); //Hiển thị bảng tblChatLieu
            }
    
    
    8

    k) Phương thức ResetValuesHang

    
    private void frmDMChatLieu_Load(object sender, EventArgs e)
            {
                txtMaChatLieu.Enabled = false;
                btnLuu.Enabled = false;
                btnBoQua.Enabled = false;
                LoadDataGridView(); //Hiển thị bảng tblChatLieu
            }
    
    
    9

    l) Phương thức dgvHDBanHang_DoubleClick

    Phương thức này cho phép người dùng nhấp đúp chuột vào một mặt hàng trong lưới để xóa

    
    private void LoadDataGridView()
            {
                string sql;
                sql = "SELECT MaChatLieu, TenChatLieu FROM tblChatLieu";
                tblCL = Class.Functions.GetDataToTable(sql); //Đọc dữ liệu từ bảng
                dgvChatLieu.DataSource = tblCL; //Nguồn dữ liệu            
                dgvChatLieu.Columns[0].HeaderText = "Mã chất liệu";
                dgvChatLieu.Columns[1].HeaderText = "Mã chất liệu";
                dgvChatLieu.Columns[0].Width = 100;
                dgvChatLieu.Columns[1].Width = 300;
                dgvChatLieu.AllowUserToAddRows = false; //Không cho người dùng thêm dữ liệu trực tiếp
                dgvChatLieu.EditMode = DataGridViewEditMode.EditProgrammatically; //Không cho sửa dữ liệu trực tiếp
            }
    
    
    0

    m) Phương thức btnXoa_Click

    Phương thức này cho phép xóa toàn bộ thông tin của một đơn hóa

    
    private void LoadDataGridView()
            {
                string sql;
                sql = "SELECT MaChatLieu, TenChatLieu FROM tblChatLieu";
                tblCL = Class.Functions.GetDataToTable(sql); //Đọc dữ liệu từ bảng
                dgvChatLieu.DataSource = tblCL; //Nguồn dữ liệu            
                dgvChatLieu.Columns[0].HeaderText = "Mã chất liệu";
                dgvChatLieu.Columns[1].HeaderText = "Mã chất liệu";
                dgvChatLieu.Columns[0].Width = 100;
                dgvChatLieu.Columns[1].Width = 300;
                dgvChatLieu.AllowUserToAddRows = false; //Không cho người dùng thêm dữ liệu trực tiếp
                dgvChatLieu.EditMode = DataGridViewEditMode.EditProgrammatically; //Không cho sửa dữ liệu trực tiếp
            }
    
    
    1

    n) Phương thức cboMaNhanVien_TextChanged

    
    private void LoadDataGridView()
            {
                string sql;
                sql = "SELECT MaChatLieu, TenChatLieu FROM tblChatLieu";
                tblCL = Class.Functions.GetDataToTable(sql); //Đọc dữ liệu từ bảng
                dgvChatLieu.DataSource = tblCL; //Nguồn dữ liệu            
                dgvChatLieu.Columns[0].HeaderText = "Mã chất liệu";
                dgvChatLieu.Columns[1].HeaderText = "Mã chất liệu";
                dgvChatLieu.Columns[0].Width = 100;
                dgvChatLieu.Columns[1].Width = 300;
                dgvChatLieu.AllowUserToAddRows = false; //Không cho người dùng thêm dữ liệu trực tiếp
                dgvChatLieu.EditMode = DataGridViewEditMode.EditProgrammatically; //Không cho sửa dữ liệu trực tiếp
            }
    
    
    2

    o) Phương thức cboMaKhach_TextChanged

    
    private void LoadDataGridView()
            {
                string sql;
                sql = "SELECT MaChatLieu, TenChatLieu FROM tblChatLieu";
                tblCL = Class.Functions.GetDataToTable(sql); //Đọc dữ liệu từ bảng
                dgvChatLieu.DataSource = tblCL; //Nguồn dữ liệu            
                dgvChatLieu.Columns[0].HeaderText = "Mã chất liệu";
                dgvChatLieu.Columns[1].HeaderText = "Mã chất liệu";
                dgvChatLieu.Columns[0].Width = 100;
                dgvChatLieu.Columns[1].Width = 300;
                dgvChatLieu.AllowUserToAddRows = false; //Không cho người dùng thêm dữ liệu trực tiếp
                dgvChatLieu.EditMode = DataGridViewEditMode.EditProgrammatically; //Không cho sửa dữ liệu trực tiếp
            }
    
    
    3

    p) Phương thức cboMaHang_TextChanged

    
    private void LoadDataGridView()
            {
                string sql;
                sql = "SELECT MaChatLieu, TenChatLieu FROM tblChatLieu";
                tblCL = Class.Functions.GetDataToTable(sql); //Đọc dữ liệu từ bảng
                dgvChatLieu.DataSource = tblCL; //Nguồn dữ liệu            
                dgvChatLieu.Columns[0].HeaderText = "Mã chất liệu";
                dgvChatLieu.Columns[1].HeaderText = "Mã chất liệu";
                dgvChatLieu.Columns[0].Width = 100;
                dgvChatLieu.Columns[1].Width = 300;
                dgvChatLieu.AllowUserToAddRows = false; //Không cho người dùng thêm dữ liệu trực tiếp
                dgvChatLieu.EditMode = DataGridViewEditMode.EditProgrammatically; //Không cho sửa dữ liệu trực tiếp
            }
    
    
    4

    q) Phương thức txtSoLuong Văn bản Thay đổi

    
    private void LoadDataGridView()
            {
                string sql;
                sql = "SELECT MaChatLieu, TenChatLieu FROM tblChatLieu";
                tblCL = Class.Functions.GetDataToTable(sql); //Đọc dữ liệu từ bảng
                dgvChatLieu.DataSource = tblCL; //Nguồn dữ liệu            
                dgvChatLieu.Columns[0].HeaderText = "Mã chất liệu";
                dgvChatLieu.Columns[1].HeaderText = "Mã chất liệu";
                dgvChatLieu.Columns[0].Width = 100;
                dgvChatLieu.Columns[1].Width = 300;
                dgvChatLieu.AllowUserToAddRows = false; //Không cho người dùng thêm dữ liệu trực tiếp
                dgvChatLieu.EditMode = DataGridViewEditMode.EditProgrammatically; //Không cho sửa dữ liệu trực tiếp
            }
    
    
    5

    r) Phương thức txtGiamGia_TextChanged

    
    private void LoadDataGridView()
            {
                string sql;
                sql = "SELECT MaChatLieu, TenChatLieu FROM tblChatLieu";
                tblCL = Class.Functions.GetDataToTable(sql); //Đọc dữ liệu từ bảng
                dgvChatLieu.DataSource = tblCL; //Nguồn dữ liệu            
                dgvChatLieu.Columns[0].HeaderText = "Mã chất liệu";
                dgvChatLieu.Columns[1].HeaderText = "Mã chất liệu";
                dgvChatLieu.Columns[0].Width = 100;
                dgvChatLieu.Columns[1].Width = 300;
                dgvChatLieu.AllowUserToAddRows = false; //Không cho người dùng thêm dữ liệu trực tiếp
                dgvChatLieu.EditMode = DataGridViewEditMode.EditProgrammatically; //Không cho sửa dữ liệu trực tiếp
            }
    
    
    6

    s) Phương thức btnInHoaDon_Click

    
    private void LoadDataGridView()
            {
                string sql;
                sql = "SELECT MaChatLieu, TenChatLieu FROM tblChatLieu";
                tblCL = Class.Functions.GetDataToTable(sql); //Đọc dữ liệu từ bảng
                dgvChatLieu.DataSource = tblCL; //Nguồn dữ liệu            
                dgvChatLieu.Columns[0].HeaderText = "Mã chất liệu";
                dgvChatLieu.Columns[1].HeaderText = "Mã chất liệu";
                dgvChatLieu.Columns[0].Width = 100;
                dgvChatLieu.Columns[1].Width = 300;
                dgvChatLieu.AllowUserToAddRows = false; //Không cho người dùng thêm dữ liệu trực tiếp
                dgvChatLieu.EditMode = DataGridViewEditMode.EditProgrammatically; //Không cho sửa dữ liệu trực tiếp
            }
    
    
    7

    Kết quả ta có tệp Excel as after.

    Dự án html và cơ sở dữ liệu
    Dự án html và cơ sở dữ liệu

    t) Phương thức btnTimKiem_Click

    
    private void LoadDataGridView()
            {
                string sql;
                sql = "SELECT MaChatLieu, TenChatLieu FROM tblChatLieu";
                tblCL = Class.Functions.GetDataToTable(sql); //Đọc dữ liệu từ bảng
                dgvChatLieu.DataSource = tblCL; //Nguồn dữ liệu            
                dgvChatLieu.Columns[0].HeaderText = "Mã chất liệu";
                dgvChatLieu.Columns[1].HeaderText = "Mã chất liệu";
                dgvChatLieu.Columns[0].Width = 100;
                dgvChatLieu.Columns[1].Width = 300;
                dgvChatLieu.AllowUserToAddRows = false; //Không cho người dùng thêm dữ liệu trực tiếp
                dgvChatLieu.EditMode = DataGridViewEditMode.EditProgrammatically; //Không cho sửa dữ liệu trực tiếp
            }
    
    
    8

    u) Phương thức txtSoLuong KeyPress

    
    private void LoadDataGridView()
            {
                string sql;
                sql = "SELECT MaChatLieu, TenChatLieu FROM tblChatLieu";
                tblCL = Class.Functions.GetDataToTable(sql); //Đọc dữ liệu từ bảng
                dgvChatLieu.DataSource = tblCL; //Nguồn dữ liệu            
                dgvChatLieu.Columns[0].HeaderText = "Mã chất liệu";
                dgvChatLieu.Columns[1].HeaderText = "Mã chất liệu";
                dgvChatLieu.Columns[0].Width = 100;
                dgvChatLieu.Columns[1].Width = 300;
                dgvChatLieu.AllowUserToAddRows = false; //Không cho người dùng thêm dữ liệu trực tiếp
                dgvChatLieu.EditMode = DataGridViewEditMode.EditProgrammatically; //Không cho sửa dữ liệu trực tiếp
            }
    
    
    9

    Thực hiện tương tự cho txtGiamGia_KeyPress

    v) Phương thức cboMaHDBan_DropDown

    Phươ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ấp chuột vào nút xổ của cbo

    
    //Lấy dữ liệu vào bảng
            public static DataTable GetDataToTable(string sql)
            {
                SqlDataAdapter dap = new SqlDataAdapter(); //Định nghĩa đối tượng thuộc lớp SqlDataAdapter
                //Tạo đối tượng thuộc lớp SqlCommand
                dap.SelectCommand = new SqlCommand();
                dap.SelectCommand.Connection = Functions.Con; //Kết nối cơ sở dữ liệu
                dap.SelectCommand.CommandText = sql; //Lệnh SQL
                //Khai báo đối tượng table thuộc lớp DataTable
                DataTable table = new DataTable();
                dap.Fill(table);
                return table;
            }
    
    
    0

    w) Phương thức frmHoadonBan_FormClosing

    
    //Lấy dữ liệu vào bảng
            public static DataTable GetDataToTable(string sql)
            {
                SqlDataAdapter dap = new SqlDataAdapter(); //Định nghĩa đối tượng thuộc lớp SqlDataAdapter
                //Tạo đối tượng thuộc lớp SqlCommand
                dap.SelectCommand = new SqlCommand();
                dap.SelectCommand.Connection = Functions.Con; //Kết nối cơ sở dữ liệu
                dap.SelectCommand.CommandText = sql; //Lệnh SQL
                //Khai báo đối tượng table thuộc lớp DataTable
                DataTable table = new DataTable();
                dap.Fill(table);
                return table;
            }
    
    
    1

    x) Phương thức btnDong_Click

    
    DataTable tblCL; //Chứa dữ liệu bảng Chất liệu
    
    7

    Xem Video hướng dẫn Quản lý Hóa Đơn

    4. 8. Form search Hóa Đơn Bán

    a) Khai báo

    – Thư viện

    
    //Lấy dữ liệu vào bảng
            public static DataTable GetDataToTable(string sql)
            {
                SqlDataAdapter dap = new SqlDataAdapter(); //Định nghĩa đối tượng thuộc lớp SqlDataAdapter
                //Tạo đối tượng thuộc lớp SqlCommand
                dap.SelectCommand = new SqlCommand();
                dap.SelectCommand.Connection = Functions.Con; //Kết nối cơ sở dữ liệu
                dap.SelectCommand.CommandText = sql; //Lệnh SQL
                //Khai báo đối tượng table thuộc lớp DataTable
                DataTable table = new DataTable();
                dap.Fill(table);
                return table;
            }
    
    
    3

    – Biến

    
    //Lấy dữ liệu vào bảng
            public static DataTable GetDataToTable(string sql)
            {
                SqlDataAdapter dap = new SqlDataAdapter(); //Định nghĩa đối tượng thuộc lớp SqlDataAdapter
                //Tạo đối tượng thuộc lớp SqlCommand
                dap.SelectCommand = new SqlCommand();
                dap.SelectCommand.Connection = Functions.Con; //Kết nối cơ sở dữ liệu
                dap.SelectCommand.CommandText = sql; //Lệnh SQL
                //Khai báo đối tượng table thuộc lớp DataTable
                DataTable table = new DataTable();
                dap.Fill(table);
                return table;
            }
    
    
    4

    b) Phương thức frmTimHDBan_Load

    
    //Lấy dữ liệu vào bảng
            public static DataTable GetDataToTable(string sql)
            {
                SqlDataAdapter dap = new SqlDataAdapter(); //Định nghĩa đối tượng thuộc lớp SqlDataAdapter
                //Tạo đối tượng thuộc lớp SqlCommand
                dap.SelectCommand = new SqlCommand();
                dap.SelectCommand.Connection = Functions.Con; //Kết nối cơ sở dữ liệu
                dap.SelectCommand.CommandText = sql; //Lệnh SQL
                //Khai báo đối tượng table thuộc lớp DataTable
                DataTable table = new DataTable();
                dap.Fill(table);
                return table;
            }
    
    
    5

    c) Phương thức ResetValues

    
    //Lấy dữ liệu vào bảng
            public static DataTable GetDataToTable(string sql)
            {
                SqlDataAdapter dap = new SqlDataAdapter(); //Định nghĩa đối tượng thuộc lớp SqlDataAdapter
                //Tạo đối tượng thuộc lớp SqlCommand
                dap.SelectCommand = new SqlCommand();
                dap.SelectCommand.Connection = Functions.Con; //Kết nối cơ sở dữ liệu
                dap.SelectCommand.CommandText = sql; //Lệnh SQL
                //Khai báo đối tượng table thuộc lớp DataTable
                DataTable table = new DataTable();
                dap.Fill(table);
                return table;
            }
    
    
    6

    d) Phương thức btnTimKiem_Click

    
    //Lấy dữ liệu vào bảng
            public static DataTable GetDataToTable(string sql)
            {
                SqlDataAdapter dap = new SqlDataAdapter(); //Định nghĩa đối tượng thuộc lớp SqlDataAdapter
                //Tạo đối tượng thuộc lớp SqlCommand
                dap.SelectCommand = new SqlCommand();
                dap.SelectCommand.Connection = Functions.Con; //Kết nối cơ sở dữ liệu
                dap.SelectCommand.CommandText = sql; //Lệnh SQL
                //Khai báo đối tượng table thuộc lớp DataTable
                DataTable table = new DataTable();
                dap.Fill(table);
                return table;
            }
    
    
    7

    e) Phương thức LoadDataGridView

    
    //Lấy dữ liệu vào bảng
            public static DataTable GetDataToTable(string sql)
            {
                SqlDataAdapter dap = new SqlDataAdapter(); //Định nghĩa đối tượng thuộc lớp SqlDataAdapter
                //Tạo đối tượng thuộc lớp SqlCommand
                dap.SelectCommand = new SqlCommand();
                dap.SelectCommand.Connection = Functions.Con; //Kết nối cơ sở dữ liệu
                dap.SelectCommand.CommandText = sql; //Lệnh SQL
                //Khai báo đối tượng table thuộc lớp DataTable
                DataTable table = new DataTable();
                dap.Fill(table);
                return table;
            }
    
    
    8

    f) Phương thức btnTimLai_Click

    
    //Lấy dữ liệu vào bảng
            public static DataTable GetDataToTable(string sql)
            {
                SqlDataAdapter dap = new SqlDataAdapter(); //Định nghĩa đối tượng thuộc lớp SqlDataAdapter
                //Tạo đối tượng thuộc lớp SqlCommand
                dap.SelectCommand = new SqlCommand();
                dap.SelectCommand.Connection = Functions.Con; //Kết nối cơ sở dữ liệu
                dap.SelectCommand.CommandText = sql; //Lệnh SQL
                //Khai báo đối tượng table thuộc lớp DataTable
                DataTable table = new DataTable();
                dap.Fill(table);
                return table;
            }
    
    
    9

    g) Phương thức txtTongTien_KeyPress

    
    namespace QuanLyBanHang.Class
    {
        class Functions
        {
            public static SqlConnection Con;  //Khai báo đối tượng kết nối        
    
            public static void Connect()
            {
                Con = new SqlConnection();   //Khởi tạo đối tượng
                Con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\Quanlybanhang.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
                Con.Open();                  //Mở kết nối
                //Kiểm tra kết nối
                if (Con.State == ConnectionState.Open)
                    MessageBox.Show("Kết nối thành công");
                else MessageBox.Show("Không thể kết nối với dữ liệu");
    
            }
            public static void Disconnect()
            {
                if (Con.State == ConnectionState.Open)
                {
                    Con.Close();   	//Đóng kết nối
                    Con.Dispose(); 	//Giải phóng tài nguyên
                    Con = null;
                }
            }
    }
    
    
    00

    h) Phương thức dgvTKHoaDon_DoubleClick

    Phương thức này cho phép người dùng nhấp đú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 biểu mẫu frmHoadonBan

    Chú thích. Thay đổi phạm vi truy cập của điều khiển txtMaHDBan thành Công khai trong biểu mẫu frmHoadonBan (trong tệp frmHoadonBan. Nhà thiết kế. cs)