BÁO CÁO BÀI TẬP LỚN MÔN LẬP TRÌNH HƯỚNG SỰ KIỆN
ĐỂ TÀI: QUẢN LÝ CƠ SỞ DỮ LIỆU CỬA HÀNG BÁN ĐỒ ĐIỆN TỬ
I)
Thành viên trong nhóm
- Phạm Văn Hoàng : Lớp 14A1
- Mai Quang Minh : Lớp 14A1
- Nguyễn Thùy Dương : Lớp 14A3
- Chu Thị Phương : Lớp 14A2
Công việc thực hiện:
Phạm Văn Hoàng
-
Mai Quang Minh
-
Nguyễn Thùy Dương
-
Chu Thị Phương
-
Thiết kế cơ sở dữ liệu
Tạo bảng
Tạo các view và proceduce cho
việc thêm, sửa, xóa , tìm kiếm…
Viết trang chủ cho bài quản lý và
kêt nối cơ sở dữ liệu window
from.
Tạo các bản window from như
quản lý khách hàng, sản phẩm
hóa đơn, CT_hóa đơn
Viết câu lênh thêm, sửa, xóa cho
bài quản lý.
Viết phần tìm kiếm ngẫu nhiên
cho bài toán quản lý
Tìm kiếm trong các bảng nhân
viên, khách hàng, sản phẩm theo
mã và tên.
Viết phần báo cáo cho bài toán
quản lý
Báo cáo theo thiết lập hóa đơn
theo khách hàng sử dụng Crystal
Report.
II)
Bài toán quản lý sử dụng window from bằng ngôn ngữ c#
1) Thiết lập cơ sở dữ liệu
Cơ sở dữ liệu cho cửa hàng bán đồ điện tử:
Phát biểu bài toán:
Cửa hàng kinh doanh đồ điện tử chuyên bán các sản phẩm đồ điện t ử nh ư tủ l ạnh,
máy giặt, tivi, quạt máy tính, điện thoại và nhiều mặt hàng khác.
Cửa hàng bán đồ điện tử gồm có chủ cửa hàng, nhân viên qu ản lý bán hàng và
được giao theo nhiều phòng ban.
Cơ sở dữ liệu của cửa hàng gồm có quản lý nhân viên, khách hàng đ ến mua hàng ,
quản lý sản phẩm của cửa hàng, hóa đơn thanh toán của khách hàng, quản lý toàn
bộ phòng ban và chi tiết hóa đơn được nhân viên lập cho khách hàng.
Xác định kiểu thực thể
+ Chủ cửa hàng không phải là kiểu thực thể vì đây là kiểu thực thể duy nhất
+ Nhân viên của hàng chỉ thuộc một bộ phận và một bộ phận có nhiều nhân
viên
+ Mỗi hóa đơn do 1 nhân viên lập, một nhân viên có thể lập nhiểu hóa đơn
+ Mỗi hóa đơn được lập cho 1 khách hàng, một khách hàng có thể có nhiều
hóa đơn
+ Chi tiết hóa đơn có thông tin của sản phẩm trong hóa đơn
Nhanvien ( Manv, hoten, ngaysinh, GT, diachi)
Khachhang (makh, tenkh, diachi, dienthoai, email)
Sanpham ( masp, tensp, donvi, dongia)
Hoadon (mahd, ngaylap)
CT_hoadon(mahd, soluong, giamgia)
Phongban (maPB, tenPB)
Mô Hình Quan Hệ
Quy tắc 1: chuyển liên thực thể mạnh
1 Nhanvien ( Manv, hoten, ngaysinh, GT, diachi)
2 Khachhang (makh, tenkh, diachi, dienthoai, email)
3 Sanpham ( masp, tensp, donvi, dongia)
4 Hoadon (mahd, ngaylap)
5 CT_hoadon(mahd, soluong, giamgia)
6 Phongban (maPB, tenPB)
Quy tắc 2 : chuyển các kiên kết 1-1
Quy tắc 3: chuyển các liên kết 1-n
Nhân viên thuộc phongban
n–1
1.1
Nhanvien((Manv, hoten, ngaysinh, GT, diachi, maPB)
Nhân viên lập hóa đơn
1–n
4.1 Hoadon( Mahd, ngaylap, Manv)
Khachhang
có
Hoadon 1- n
4.2 Hoadon (Mahd, ngaylap, Manv, MakH)
Quy tắc 4: chuyển kiểu liên kết n – n
5.1 CT_Hoadon( Mahd, Masp, soluong, Giamgia)
Tổng Kết:
Nhanvien (Manv, hoten, ngaysinh, GT, diachi, maPB)
Khachhang (makh, tenkh, diachi, dienthoai, email)
Sanpham (Masp, tensp, donvi, dongia)
Hoadon (Mahd, ngaylap, Manv, Makh)
CT_Hoadon ( Mahd, Masp, soluong, Giamgia)
Phongban (MaPB, tenPB)
Tạo Bảng:
create table phongban
(
mapb varchar(9) primary key,
tenpb nvarchar(30)
);
create table nhanvien
(
manv varchar(9) primary key,
tennv nvarchar(30),
ngaysinh smalldatetime,
gioitinh nvarchar(3) check (gioitinh in('Nam',N'Nữ')),
diachi nvarchar(30),
mapb varchar(9) references phongban(mapb)
);
create table khachhang
(
makh varchar(9) primary key,
tenkh nvarchar(30),
diachi nvarchar(30),
dienthoai varchar(12),
email varchar(30)
);
create table sanpham
(
masp varchar(9) primary key,
tensp nvarchar(30),
donvi nvarchar(10),
dongia int
);
create table hoadon
(
mahd varchar(9) primary key,
ngaylap smalldatetime,
manv varchar(9) references nhanvien(manv),
makh varchar(9) references khachhang(makh),
);
create table CT_hoadon
(
mahd varchar(9) references hoadon(mahd),
masp varchar(9) references sanpham(masp),
soluong int,
giamgia int,
primary key(mahd,masp)
);
Mô hình:
2) Tạo Window From lập trình c#
Phần mềm sử dụng: Visual Studio, Sql Server.
Tạo phần trang chủ ( MainMenu )
-Phần trang chủ gồm có các đề mục như quản lý dữ liệu, tìm ki ếm, báo cáo và
thoát được tạo ra từ các button.
-Mã nguồn Mainmenu:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Ql_banhangdientu
{
public partial class MainMenu : Form
{
public MainMenu()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
QLDL qldulieu = new QLDL();
qldulieu.Show();
}
private void btnthoat_Click(object sender, EventArgs e)
{
DialogResult = MessageBox.Show("Bạn có muốn thoát không?", "Thông báo",
MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
if (DialogResult == DialogResult.OK)
{
Application.Exit();
}
}
private void btntimkiem_Click(object sender, EventArgs e)
{
Timkiem timkiem = new Timkiem();
timkiem.Show();
}
private void btnbaocao_Click(object sender, EventArgs e)
{
Baocao bc = new Baocao();
bc.Show();
}
Tạo phần quản lý dữ liệu
Phần quản lý dữ liệu sẽ hiện ta khi click vào button quản lý dữ liệu trong
Mainmenu.
-
Phần quẩn lý dữ liệu gồm các button khách hàng, sản phẩm, CT_hoa don,
hóa đơn.
Mã nguồn quản lý dữ liệu:
public QLDL()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Sanpham sanpham = new Sanpham();
sanpham.Show();
}
private void btnquaylai_Click(object sender, EventArgs e)
{
Close();
}
private void btnthoat_Click(object sender, EventArgs e)
{
DialogResult = MessageBox.Show("Bạn có muốn thoát không?", "Thông báo",
MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
if (DialogResult == DialogResult.OK)
{
Application.Exit();
}
}
private void button2_Click(object sender, EventArgs e)
{
Khachhang khachhang = new Khachhang();
khachhang.Show();
}
private void btnhoadon_Click(object sender, EventArgs e)
{
Hoadon hoadon = new Hoadon();
hoadon.Show();
}
-
private void btnphongban_Click(object sender, EventArgs e)
{
CT_hoadon chitiethd = new CT_hoadon();
chitiethd.Show();
}
Quản lý thêm, sửa, xóa bảng khách hàng
Cơ sở dữ liệu bảng khách hàng.
-
Tạo bảng khách hàng:
Thêm dữ liệu bảng khách hàng:
Mã nguồn thêm dữ liệu bàng khách hàng:
-
Phần kiểm tra khóa chính:
private int kiemtra()
{
string constr = @"Data Source=DESKTOP-VLH47GK\SQLEXPRESS;Initial
Catalog=QLbanhangdientu;Integrated Security=True";
using(SqlConnection cnn=new SqlConnection(constr))
{
using(SqlCommand cmd=new SqlCommand("select * from khachhang"))
{
cmd.CommandType=CommandType.Text;
cnn.Open();
string mak;
mak=txtmakh.Text;
string sql="select * from khachhang makh="+mak;
MessageBox.Show(sql);
using(SqlDataAdapter da=new SqlDataAdapter(sql,cnn))
{
DataTable tb = new DataTable();
if (tb.Rows.Count > 0)
{
MessageBox.Show("Trùng Khóa Chính! Không Thể Thêm!!");
return 1;
}
else
return 0;
}
}
}
}
- Phần procedure
create proc them_khachhang
(
@makh varchar(9),
@tenkh nvarchar(30),
@diachi nvarchar(30),
@dienthoai varchar(12),
@email varchar(30)
)
as
begin
insert into khachhang
values (@makh,@tenkh,@diachi,@dienthoai,@email)
end
- Phần thêm:
private void btnthem_Click(object sender, EventArgs e)
{
string constr = @"Data Source=DESKTOP-VLH47GK\SQLEXPRESS;Initial
Catalog=QLbanhangdientu;Integrated Security=True";
using(SqlConnection cnn=new SqlConnection(constr))
{
using(SqlCommand cmd= new SqlCommand("them_khachhang",cnn))
{
if(kiemtra()==1)
{
MessageBox.Show("Trùng Khóa Chính, Không Thể Thêm!!!");
}
else
{
//khai bao gia tri texbox
var makh = txtmakh.Text;
var tenkh = txttenkh.Text;
var diachi = txtdiachi.Text;
var dienthoai = txtdienthoai.Text;
var email = txtemail.Text;
if(makh=="" || tenkh=="" || diachi=="" || dienthoai=="" || email =="")
{
MessageBox.Show("Bạn Chưa Cập Nhập Đủ Thông Tin!!!Mời Bạn Điền Lại");
}
else
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "them_khachhang";
cmd.Parameters.AddWithValue("@makh", txtmakh.Text);
cmd.Parameters.AddWithValue("@tenkh", txttenkh.Text);
cmd.Parameters.AddWithValue("@diachi", txtdiachi.Text);
cmd.Parameters.AddWithValue("@dienthoai", txtdienthoai.Text);
cmd.Parameters.AddWithValue("@email", txtemail.Text);
try
{
cnn.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("Thêm Thành Công");
Khachhang_Load(sender, e);
}
catch
{
MessageBox.Show("Thêm Thất Bại! Bị trùng khóa chính");
}
}
}
}
}
}
-
Khi thêm dữ liệu cần kiểm tra xem có bị trùng khóa chính:
-
Dữ liệu khi không trùng khóa chính:
-
Nếu không nhập đủ thông tin:
if(makh=="" || tenkh=="" || diachi=="" || dienthoai=="" || email =="") // neu tat ca
cac truong deu rong
{
MessageBox.Show("Bạn Chưa Cập Nhập Đủ Thông Tin!!!Mời Bạn Điền Lại");
}
Phần Sửa dữ liệu bảng khách hàng
Dữ liệu sẽ được sửa theo mã khách hàng (Makh)
Phần Procedure của sửa khách hàng
create proc update_khachhang
(
@makh varchar(9),
@tenkh nvarchar(30),
@diachi nvarchar(30),
@dienthoai varchar(12),
@email varchar(30)
)
as
begin
update khachhang
set makh=@makh,
tenkh=@tenkh,
diachi=@diachi,
dienthoai=@dienthoai,
email=@email
where makh=@makh;
end
Mã nguồn sửa dữ liệu:
private void btnsua_Click(object sender, EventArgs e)
{
string constr = @"Data Source=DESKTOP-VLH47GK\SQLEXPRESS;Initial
Catalog=QLbanhangdientu;Integrated Security=True";
using(SqlConnection cnn=new SqlConnection(constr))
{
using(SqlCommand cmd=new SqlCommand("update_khachhang",cnn))
{
//khai bao bien cho cac textbox
var makh = txtmakh.Text;
var tenkh = txttenkh.Text;
var diachi = txtdiachi.Text;
var dienthoai = txtdienthoai.Text;
var email = txtemail.Text;
//neu ban khong nhap makh
if(makh=="")
{
MessageBox.Show("Bạn Chưa nhập Mã Khách Hàng Cần Sửa! Mời Bạn Nhập");
}
else
{
if(tenkh=="" || diachi=="" || dienthoai=="" || email=="")
{
MessageBox.Show("Mời Bạn Nhập Thông Tin Cần Sửa");
}
else
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "update_khachhang";
cmd.Parameters.AddWithValue("@makh", txtmakh.Text);
cmd.Parameters.AddWithValue("@tenkh", txttenkh.Text);
cmd.Parameters.AddWithValue("@diachi", txtdiachi.Text);
cmd.Parameters.AddWithValue("@dienthoai", txtdienthoai.Text);
cmd.Parameters.AddWithValue("@email", txtemail.Text);
try
{
cnn.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("Sửa Thành Công");
Khachhang_Load(sender, e);
}
catch
{
MessageBox.Show("Sửa Thất Bại");
}
}
}
}
}
}
-
Sửa theo mã khách hàng :
-
Điều kện sửa nếu không có mã khách hàng hoặc nhập thông tin:
Phần xóa theo mã khách hàng
- Viết procedure xóa theo mã khách hàng
create proc delete_khachhang
@makh varchar(9)
as
begin
delete from khachhang
where makh=@makh
end
-
Mã nguồn xóa theo mã khách hàng:
private void btnxoa_Click(object sender, EventArgs e)
{
string constr = @"Data Source=DESKTOP-VLH47GK\SQLEXPRESS;Initial
Catalog=QLbanhangdientu;Integrated Security=True";
using(SqlConnection cnn=new SqlConnection(constr))
{
using(SqlCommand cmd=new SqlCommand("delete_khachhang",cnn))
{
//khai bao bien cho textbox khachhang
var makh = txtmakh.Text;
if (makh == "")
{
MessageBox.Show("Bạn chưa nhập mã khách hàng cần xóa!! Mời Bạn Nhập");
}
else
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "delete_khachhang";
cmd.Parameters.AddWithValue("@makh", txtmakh.Text);
try
{
cnn.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("Xóa Thành Công");
Khachhang_Load(sender, e);
}
catch
{
MessageBox.Show("Xóa Thất Bại");
}
}
}
}
}
-
VD xóa theo mã khách hàng
-
Điều kiện xóa mà không nhập mã khách hàng:
Quản lý dữ liệu chi tiết hóa đơn
Bảng hóa đơn:
Mã nguồn:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace Ql_banhangdientu
{
public partial class CT_hoadon : Form
{
string constr = @"Data Source=DESKTOP-VLH47GK\SQLEXPRESS;Initial
Catalog=QLbanhangdientu;Integrated Security=True";
public CT_hoadon()
{
InitializeComponent();
}
private void CT_hoadon_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the
'qLbanhangdientuDataSet11.sanpham' table. You can move, or remove it, as needed.
this.sanphamTableAdapter.Fill(this.qLbanhangdientuDataSet11.sanpham);
// TODO: This line of code loads data into the 'qLbanhangdientuDataSet.hoadon'
table. You can move, or remove it, as needed.
this.hoadonTableAdapter.Fill(this.qLbanhangdientuDataSet.hoadon);
using(SqlConnection cnn=new SqlConnection(constr))
{
using(SqlCommand cmd=new SqlCommand("select * from CT_hoadon",cnn))
{
cmd.CommandType = CommandType.Text;
cnn.Open();
using(SqlDataAdapter da=new SqlDataAdapter(cmd))
{
DataTable tb = new DataTable();
da.Fill(tb);
dataGridView1.DataSource = tb;
}
}
}
}
- Thêm cho bảng chi tiết hóa đơn
private void btnthem_Click(object sender, EventArgs e)
{
lại");
using(SqlConnection cnn=new SqlConnection(constr))
{
using(SqlCommand cmd= new SqlCommand("them_cthoadon",cnn))
{
//khai bao bien
var soluong = txtsoluong.Text;
var giamgia = txtgiamgia.Text;
if (soluong == "" || giamgia == "")
{
MessageBox.Show("Bạn chưa nhập thông tin cần Thêm!!Mời nhập
}
else
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "them_cthoadon";
cmd.Parameters.AddWithValue("@mahd", cbxmahd.Text);
cmd.Parameters.AddWithValue("@masp", cbxmasp.Text);
cmd.Parameters.AddWithValue("@soluong", Int32.Parse(txtsoluong.Text));
cmd.Parameters.AddWithValue("@giamgia", Int32.Parse(txtgiamgia.Text));
try
{
cnn.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("Thêm thành công");
CT_hoadon_Load(sender, e);
}
catch
{
MessageBox.Show("Thất Bại");
}
}
}
}
}
-
Sửa cho bảng chi tiết hóa đơn
private void btnsua_Click(object sender, EventArgs e)
{
using(SqlConnection cnn=new SqlConnection(constr))
{
using(SqlCommand cmd =new SqlCommand("update_cthoadon",cnn))
{
//khai bao neu khong dien
var soluong = txtsoluong.Text;
var giamgia = txtgiamgia.Text;
if (soluong == "" || giamgia == "")
{
MessageBox.Show("Bạn chưa nhập thông tin cần sửa!!Mời nhập lại");
}
else
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "update_cthoadon";
cmd.Parameters.AddWithValue("@mahd", cbxmahd.Text);
cmd.Parameters.AddWithValue("@masp", cbxmasp.Text);
cmd.Parameters.AddWithValue("@soluong", Int32.Parse(txtsoluong.Text));
cmd.Parameters.AddWithValue("@giamgia", Int32.Parse(txtgiamgia.Text));
try
{
cnn.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("Sửa thành công");
CT_hoadon_Load(sender, e);
}
catch
{
MessageBox.Show("Thất Bại");
}
}
}
}
}
-
Xóa bảng chi tiết hóa đơn
private void btnxoa_Click(object sender, EventArgs e)
{
using(SqlConnection cnn=new SqlConnection(constr))
{
using(SqlCommand cmd=new SqlCommand("delete_cthoadon",cnn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "delete_cthoadon";
cmd.Parameters.AddWithValue("@mahd", cbxmahd.Text);
try
{
cnn.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("Xóa thành công");
CT_hoadon_Load(sender, e);
}
catch
{
MessageBox.Show("Thất bại");
}
}
}
}
Xử lý điều kiện cho dataGridView1
private void dataGridView1_CellContentClick(object sender,
DataGridViewCellEventArgs e)
{
cbxmahd.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString();
cbxmasp.Text = dataGridView1.CurrentRow.Cells[1].Value.ToString();
txtsoluong.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString();
txtgiamgia.Text = dataGridView1.CurrentRow.Cells[3].Value.ToString();
}
Tìm kiếm
-Tìm kiếm theo 3 bảng đó là Sản phẩm, Khách hàng, Nhân viên
-
Viết procedure cho phần tìm kiếm
create proc timkiem_sanpham
(
@masp varchar(9),
@tensp nvarchar(30)
)
as
begin
select * from sanpham
where masp like '%'+@masp+'%' not tensp like '%'+@tensp+'%'
end
--tim kiem khach hang
create proc timkiem_khachhang
(
@makh varchar(9),
@tenkh nvarchar(30)
)
as
begin
select * from khachhang
where makh like @makh or tenkh like '%'+@tenkh+'%'
end
-
Viết code phần tìm kiếm bằng c#
private void Timkiem_Load(object sender, EventArgs e)
{
//comboBox1.Text = "Sản phẩm";//hien chu San Pham len dau
using(SqlConnection cnn=new SqlConnection(constr))
{
if(comboBox1.Text=="Sản phẩm")//neu chon San pham
{
using(SqlCommand cmd=new SqlCommand("select * from sanpham",cnn))
{
cmd.CommandType = CommandType.Text;
cnn.Open();
}
}
if(comboBox1.Text=="Khách hàng")//neu chon khach hang
{
using(SqlCommand cmd=new SqlCommand("select * from khachhang",cnn))
{
cmd.CommandType = CommandType.Text;
cnn.Open();
}
}
if(comboBox1.Text=="Nhân viên")//neu chon nhan vien
{
using(SqlCommand cmd=new SqlCommand("select * from nhanvien",cnn))
{
cmd.CommandType = CommandType.Text;
cnn.Open();
}
}
}
}
private void btntimkiem_Click(object sender, EventArgs e)
{
using(SqlConnection cnn=new SqlConnection(constr))
{
var ma = txtma.Text;
var ten = txtten.Text;
//khai bao bien trong texbox
//neu khong nhap du 2 bien thi thong bao
if(ma=="" && ten=="")
{
MessageBox.Show("Bạn chưa nhập thông tin để tìm! Mời bạn nhập:");
}
else//neu da nhap 1/2
{
if(comboBox1.Text=="Sản phẩm")
{
using(SqlCommand cmd=new SqlCommand("timkiem_sanpham",cnn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "timkiem_sanpham";
cmd.Parameters.AddWithValue("@masp", txtma.Text);
cmd.Parameters.AddWithValue("@tensp", txtten.Text);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable tb= new DataTable();
da.Fill(tb);
dataGridView1.DataSource = tb;
Timkiem_Load(sender, e);
}
}
if(comboBox1.Text=="Khách hàng")
{
using(SqlCommand cmd=new SqlCommand("timkiem_khachhang",cnn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "timkiem_khachhang";
cmd.Parameters.AddWithValue("@makh", txtma.Text);
cmd.Parameters.AddWithValue("@tenkh", txtten.Text);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable tb=new DataTable();
da.Fill(tb);
dataGridView1.DataSource=tb;
Timkiem_Load(sender,e);
}
}
if(comboBox1.Text=="Nhân viên")
{
using(SqlCommand cmd=new SqlCommand("timkiem_nhanvien",cnn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "timkiem_nhanvien";
cmd.Parameters.AddWithValue("@manv", txtma.Text);
cmd.Parameters.AddWithValue("@tennv", txtten.Text);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable tb=new DataTable();
da.Fill(tb);
dataGridView1.DataSource=tb;
Timkiem_Load(sender,e);
}
}
}
}
}
Viết mã nguồn phần quay lại và nút thoát
private void btnquaylai_Click(object sender, EventArgs e)
{
Close();
}
private void btnthoat_Click(object sender, EventArgs e)
{
DialogResult = MessageBox.Show("Bạn có muốn thoát không?", "Thông báo",
MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
if (DialogResult == DialogResult.OK)
{
Application.Exit();
}
}
Báo cáo
-
Tạo view báo cáo có tên là
create view kh_hoadon(mahd,tennv,makh,tenkh,ngaylap,tongtien)
as
select
hoadon.mahd,nhanvien.tennv,khachhang.makh,khachhang.tenkh,hoadon.ngaylap,sum(
soluong*dongia)
from hoadon,nhanvien,khachhang,CT_hoadon,sanpham
where hoadon.manv=nhanvien.manv and
hoadon.makh=khachhang.makh and
hoadon.mahd=CT_hoadon.mahd and
CT_hoadon.masp = sanpham.masp
group by
hoadon.mahd,nhanvien.tennv,khachhang.makh,khachhang.tenkh,hoadon.ngaylap
-
Mã nguồn bằng c#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using CrystalDecisions.CrystalReports.Engine;
namespace Ql_banhangdientu
{
public partial class Baocao : Form
{
public Baocao()
{
InitializeComponent();
}
private void Baocao_Load(object sender, EventArgs e)
{
CrytalReport1 crt = new CrytalReport1();
SqlConnection cnn = new SqlConnection(@"Data Source=DESKTOPVLH47GK\SQLEXPRESS;Initial Catalog=QLbanhangdientu;Integrated
Security=True");
cnn.Open();
SqlDataAdapter da = new SqlDataAdapter("select * from kh_hoadon", cnn);
DataSet set = new DataSet();
da.Fill(set);
crystalReportViewer1.ReportSource = crt;
crt.Refresh();
}
}
}
-
Bản báo cáo: