trionpro
|
Apr 14 2012, 11:35 PM
Post #1
|
- Posts:
- 873
- Group:
- Administrator
- Member
- #1
- Joined:
- 07/04/2011
- Tên Thật
- Nguyễn Duy Tới
- Đến Từ
- Buôn Mê Thuột
- Phương Châm Sống
- Cuộc Sống Là 1 Thử Thách
- Nick Yahoo
- trionmatna_bmt
- Nơi ở Hiện Tại
- Nha Trang
- Số Điện Thoại
- 09xxx
|
mình tranh thủ làm tài liệu hướng dẫn các bạn làm 2 bảng này mình nghĩ cũng cần thiết cho các bạn nào chưa biết làm còn bạn nào làm dc rồi thì cũng đừng ném gạch mình hiihi thanks dưới đây là demo các bạn tai file đính kèm về làm chi tiết: mình đã update tai liệu các bạn tải bản mới nhất theo link sau: http://www.4shared.com/rar/jWBDAjvc/chuyen_de_2.html nếu ai lười nữa pm yahoo mình sẽ gửi trực tiếp:
- Code:
-
Đầu tiên là CSDL: mình thiết kế 2 bảng là Loại Hoa và Hoa Trong đó Loại hoa gồm: MaLoaiHoa nvarchar(50) TenLoaiHoa nvarchar(100) Bảng Hoa gồm: MaHoa nvarchar(50) TenHoa nvarchar(100) NgayPhatHien datetime AnhMH varbinary(MAX) được phép null NoiTimThay nvarchar(100) MaLoaiHoa nvarchar(50) Sau khi thiết kế bản các bạn vào Diagrams kết nối 2 bảng nó với nhau:
Sau khi kết nối Diagram xong các bạn tạo Procedures
Đây là thủ tục thêm loại hoa CREATE PROCEDURE LoaiHoa_Them @MaLoaiHoa nvarchar(50), @TenLoaiHoanvarchar(100) AS BEGIN insert into LoaiHoa (MaLoaiHoa,TenLoaiHoa) VALUES (@MaLoaiHoa,@TenLoaiHoa) end
đây là thủ tục sửa moại hoa CREATE PROCEDURE LoaiHoa_Sua @MaLoaiHoa nvarchar(50), @TenLoaiHoanvarchar(100) AS BEGIN update LoaiHoa set TenLoaiHoa=@TenLoaiHoa where MaLoaiHoa=@MaLoaiHoa end
đây là thủ tục xóa một loại hoa CREATE PROCEDURE LoaiHoa_Xoa @MaLoaiHoa nvarchar(50) AS BEGIN delete from LoaiHoa where MaLoaiHoa=@MaLoaiHoa end
đây là thủ tục hiển thị danh sách loại hoa CREATE PROCEDURE LoaiHoa_DS
AS BEGIN select * from LoaiHoa end
đây là thủ tục thêm hoa CREATE PROCEDURE Hoa_Them @MaHoa nvarchar(50), @TenHoa nvarchar(100), @NgayPhatHien datetime, @AnhMH varbinary(max), @NoiTimThay nvarchar(100), @MaLoaiHoa nvarchar(50) AS BEGIN insert into Hoa (MaHoa,TenHoa,NgayPhatHien,AnhMH,NoiTimThay,MaLoaiHoa) VALUES (@MaHoa,@TenHoa,@NgayPhatHien,@AnhMH,@NoiTimThay,@MaLoaiHoa)
end
CREATE PROCEDURE Hoa_Sua @MaHoa nvarchar(50), @TenHoa nvarchar(100), @NgayPhatHien datetime, @AnhMH varbinary(max), @NoiTimThay nvarchar(100), @MaLoaiHoa nvarchar(50) AS BEGIN update Hoa set TenHoa=@TenHoa, NgayPhatHien=@NgayPhatHien, AnhMH=@AnhMH, NoiTimThay=@NoiTimThay, MaLoaiHoa=@MaLoaiHoa where MaHoa=@MaHoa end
CREATE PROCEDURE Hoa_Xoa @MaHoa nvarchar(50)
AS BEGIN delete from Hoa where MaHoa=@MaHoa
end
CREATE PROCEDURE Hoa_DS
AS BEGIN select * from Hoa end
Vậy là xong CSDL chung ta qua phần làm form:
Đâu tiên: tạo 1 bài mới. Sau đó chuột phải vào cây gốc: ở đây của mình là QuanLyBanHoa các bạn chọn Properties Rồi chọn Settings Thêm vào như sau: Names : BHConString cái này các bạn có thể đặt tên tùy ý ở đây mình làm giống của thầy. Type: Chọn Connettion String Scope: Application Value: server=.\sQLEXPRESS;database=QuanLyHoa;user id=sa;password=123 Server là tùy sql của các bạn nhé Còn mấy cái sau thì đơn giản rồi minh không nêu ra nữa:
Xong bước kết nối bây giờ mình qua phần file Program; Các bạn go vào như sau: using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using System.Data; //cái này thêm vào using System.Data.SqlClient; //cái này thêm vào
namespace QuanLyHoa { static class Program { public static string BHConString; /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { BHConString = QuanLyHoa.Properties.Settings.Default.BHConString;
Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } public static SqlDataReader ExecuteDataReader(SqlCommand cmd) { SqlConnection cn = new SqlConnection(BHConString); cn.Open(); cmd.CommandType = CommandType.StoredProcedure; cmd.Connection = cn; SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); return dr;
} public static void ExcuteStoredProc(SqlCommand cmd) { SqlConnection cn = new SqlConnection(BHConString); cn.Open(); cmd.CommandType = CommandType.StoredProcedure; cmd.Connection = cn; cmd.ExecuteNonQuery();
cn.Close();
} public static byte[] DBValueToByteArray(object o) { if (o == DBNull.Value) return null; else return (byte[])o; }
public static object ByteDBArrayToDBValue(byte[] v) { if (v == null) return DBNull.Value; else return v; }
} }
Xong file program các bạn tiếp đến tạo một foder Business Trong forder này bạn tạo 2 file LoaiHoa.cs và Hoa.cs Trong file LoaiHoa.cs bạn code như sau: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient;
namespace QuanLyHoa.Business { public class LoaiHoa { public string MaLoaiHoa { get; set; } public string TenLoaiHoa { get; set; }
public static List<LoaiHoa> SelectAll() { List<LoaiHoa> lisLoaiHoa = new List<LoaiHoa>(); SqlCommand cmd = new SqlCommand("LoaiHoa_DS"); SqlDataReader dr = Program.ExecuteDataReader(cmd); while (dr.Read()) { LoaiHoa lh = new LoaiHoa(); lh.MaLoaiHoa = (string)dr["MaLoaiHoa"]; lh.TenLoaiHoa = (string)dr["TenLoaiHoa"]; lisLoaiHoa.Add(lh); } dr.Close(); return lisLoaiHoa; } private static void AddParameters(SqlCommand cmd, LoaiHoa lh) { cmd.Parameters.AddWithValue("@MaLoaiHoa", lh.MaLoaiHoa); cmd.Parameters.AddWithValue("@TenLoaiHoa", lh.TenLoaiHoa); }
public static void InsertDatabase(LoaiHoa lh) { SqlCommand cmd = new SqlCommand("LoaiHoa_Them"); AddParameters(cmd, lh); Program.ExcuteStoredProc(cmd); } public static void UpdateDatabase(LoaiHoa lh) { SqlCommand cmd = new SqlCommand("LoaiHoa_Sua"); AddParameters(cmd, lh); Program.ExcuteStoredProc(cmd); } public static void DeleteDatabase(LoaiHoa lh) { SqlCommand cmd = new SqlCommand("LoaiHoa_Xoa"); cmd.Parameters.AddWithValue("@MaLoaiHoa", lh.MaLoaiHoa); Program.ExcuteStoredProc(cmd); }
} }
File Hoa.cs các bạn code như sau:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient;
namespace QuanLyHoa.Business { class Hoa { public string MaHoa{get;set;} public string TenHoa { get; set; } public DateTime NgayPhatHien { get; set; } public byte[] AnhMH { get; set; } public string NoiTimThay { get; set; } public string MaLoaiHoa { get; set; }
public static List<Hoa> SelectAll() { List<Hoa> lisHoa = new List<Hoa>();
SqlCommand cmd = new SqlCommand("Hoa_DS"); SqlDataReader dr = Program.ExecuteDataReader(cmd); while (dr.Read()) { Hoa h = new Hoa(); h.MaHoa = (string)dr["MaHoa"]; h.TenHoa = (string)dr["TenHoa"]; h.NgayPhatHien = (DateTime)dr["NgayPhatHien"]; h.AnhMH = Program.DBValueToByteArray(dr["AnhMH"]); h.NoiTimThay = (string)dr["NoiTimThay"]; h.MaLoaiHoa = (string)dr["MaLoaiHoa"]; lisHoa.Add(h); } dr.Close(); return lisHoa;
} private static void AddParameters(SqlCommand cmd, Hoa h) { cmd.Parameters.AddWithValue("@MaHoa", h.MaHoa); cmd.Parameters.AddWithValue("@TenHoa", h.TenHoa); cmd.Parameters.AddWithValue("@NgayPhatHien", h.NgayPhatHien); cmd.Parameters.Add("@AnhMH", SqlDbType.VarBinary).Value = Program.ByteDBArrayToDBValue(h.AnhMH); cmd.Parameters.AddWithValue("@NoiTimThay", h.NoiTimThay); cmd.Parameters.AddWithValue("@MaLoaiHoa", h.MaLoaiHoa); } public static void InsertDatabase(Hoa h) { SqlCommand cmd = new SqlCommand("Hoa_Them"); AddParameters(cmd, h); Program.ExcuteStoredProc(cmd); } public static void UpdateDatabase(Hoa h) { SqlCommand cmd = new SqlCommand("Hoa_Sua"); AddParameters(cmd, h); Program.ExcuteStoredProc(cmd); }
public static void DeleteDatabase(Hoa h) { SqlCommand cmd = new SqlCommand("Hoa_Xoa"); cmd.Parameters.AddWithValue("@MaHoa", h.MaHoa); Program.ExcuteStoredProc(cmd); } } }
Sau khi xong các file trong forder Business các bạn tiếp tục thiết kế các form như sau: Form FDMLoaiHoa:
Code: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using QuanLyHoa.Business;
namespace QuanLyHoa { public partial class FDMLoaiHoa : Form { public FDMLoaiHoa() { InitializeComponent(); } List<LoaiHoa> listLoaiHoa; private void FDMLoaiHoa_Load(object sender, EventArgs e) { listLoaiHoa = LoaiHoa.SelectAll(); bsLoaiHoa.DataSource = listLoaiHoa;
}
private void btnThem_Click(object sender, EventArgs e) { FLoaiHoa f = new FLoaiHoa(bsLoaiHoa, true); f.ShowDialog(); }
private void btnXoa_Click(object sender, EventArgs e) { LoaiHoa n = bsLoaiHoa.Current as LoaiHoa; DialogResult r = MessageBox.Show("Ban Co muong xoa hay khong ?", "Xoa", MessageBoxButtons.OKCancel); if (r == System.Windows.Forms.DialogResult.OK) { LoaiHoa.DeleteDatabase(n); bsLoaiHoa.RemoveCurrent(); } }
private void btnSua_Click(object sender, EventArgs e) { FLoaiHoa f = new FLoaiHoa(bsLoaiHoa, false);
if (f.ShowDialog() == DialogResult.OK) bsLoaiHoa.ResetCurrentItem();
} } }
Sau đó đến form FLoaiHoa Code như sau: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using QuanLyHoa.Business;
namespace QuanLyHoa { public partial class FLoaiHoa : Form { BindingSource bsLoaiHoa; bool AddNew;
public FLoaiHoa(BindingSource bsLoaiHoa, bool AddNew) { InitializeComponent(); this.bsLoaiHoa = bsLoaiHoa; this.AddNew = AddNew; if (AddNew == false) { LoaiHoa l = bsLoaiHoa.Current as LoaiHoa; txtMaLoaiHoa.Text = l.MaLoaiHoa; txtTenLoaiHoa.Text = l.TenLoaiHoa; txtMaLoaiHoa.ReadOnly = true;
} }
private void btnOK_Click(object sender, EventArgs e) { LoaiHoa lh; if (AddNew) lh = new LoaiHoa(); else lh = bsLoaiHoa.Current as LoaiHoa; lh.MaLoaiHoa = txtMaLoaiHoa.Text; lh.TenLoaiHoa = txtTenLoaiHoa.Text; if (AddNew) { LoaiHoa.InsertDatabase(lh); bsLoaiHoa.Add(lh); txtMaLoaiHoa.Text = ""; txtTenLoaiHoa.Text = "";
txtMaLoaiHoa.Focus();
} else { LoaiHoa.UpdateDatabase(lh); DialogResult = DialogResult.OK; } }
private void btnCancel_Click(object sender, EventArgs e) { DialogResult = DialogResult.Cancel; }
private void FLoaiHoa_Load(object sender, EventArgs e) {
} } }
Tiếp theo bạn làm cho form FDMHoa Chức năng cải tiến ccacs bạn làm như sau: Bạn edit colum trong griview Name đổi thành cobloaiHoa columType đổi thành DataGridviewComboBox…….
code như sau: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using QuanLyHoa.Business;
namespace QuanLyHoa { public partial class FDMHoa : Form { public FDMHoa() { InitializeComponent(); } List<Hoa> lisHoa; List<LoaiHoa> lisLoaiHoa; private void FDMHoa_Load(object sender, EventArgs e) { lisHoa = Hoa.SelectAll(); bsHoa.DataSource = lisHoa; lisLoaiHoa = LoaiHoa.SelectAll(); cobLoaiHoa.DataSource = lisLoaiHoa; cobLoaiHoa.DisplayMember = "TenLoaiHoa"; cobLoaiHoa.ValueMember = "MaloaiHoa"; }
private void txtTimKiem_TextChanged(object sender, EventArgs e) { List<Hoa> ls = lisHoa.FindAll(h => h.TenHoa.Contains(txtTimKiem.Text)); bsHoa.DataSource = ls; }
private void btnThem_Click(object sender, EventArgs e) { FHoa f = new FHoa(bsHoa, true); f.ShowDialog(); }
private void btnSua_Click(object sender, EventArgs e) { FHoa f = new FHoa(bsHoa, false); if (f.ShowDialog() == DialogResult.OK) bsHoa.ResetCurrentItem(); }
private void btnXoa_Click(object sender, EventArgs e) { Hoa n = bsHoa.Current as Hoa; DialogResult r = MessageBox.Show("Ban co chac la xoa hay khong?", "xoa", MessageBoxButtons.OKCancel); if (r == System.Windows.Forms.DialogResult.OK) {
Hoa.DeleteDatabase(n); bsHoa.RemoveCurrent(); } } } }
Tiếp tục làm với bảng FHoa Code như sau: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using QuanLyHoa.Business; using System.IO;
namespace QuanLyHoa { public partial class FHoa : Form { BindingSource bsHoa; bool AddNew; List<LoaiHoa> lisLoaiHoa; public FHoa(BindingSource bsHoa, bool AddNew) { InitializeComponent(); this.bsHoa = bsHoa; this.AddNew = AddNew; lisLoaiHoa = LoaiHoa.SelectAll(); cobLoaiHoa.DataSource = lisLoaiHoa; cobLoaiHoa.DisplayMember = "TenLoaiHoa"; cobLoaiHoa.ValueMember = "MaLoaiHoa";
if (AddNew == false) { Hoa h = bsHoa.Current as Hoa; txtMaHoa.Text = h.MaHoa.ToString(); txtTenHoa.Text = h.TenHoa; dtpNgayPhatHien.Value = h.NgayPhatHien; txtNoiTimThay.Text = h.NoiTimThay; cobLoaiHoa.SelectedValue = h.MaLoaiHoa; if (h.AnhMH != null) {
MemoryStream mem = new MemoryStream(h.AnhMH); picAnhMH.Image = Image.FromStream(mem);
} else
picAnhMH.Image = null; txtMaHoa.ReadOnly = true;
}
}
private void btnOK_Click(object sender, EventArgs e) { Hoa h; if (AddNew) h = new Hoa(); else h = bsHoa.Current as Hoa;
h.MaHoa = txtMaHoa.Text; h.TenHoa = txtTenHoa.Text; h.NgayPhatHien = dtpNgayPhatHien.Value; h.NoiTimThay = txtNoiTimThay.Text; h.MaLoaiHoa = cobLoaiHoa.SelectedValue.ToString() ;
if (picAnhMH.Image != null) {
MemoryStream mem = new MemoryStream(); picAnhMH.Image.Save(mem, System.Drawing.Imaging.ImageFormat.Jpeg); h.AnhMH = mem.ToArray(); } if (AddNew) {
Hoa.InsertDatabase(h); bsHoa.Add(h);
txtTenHoa.Text = ""; txtNoiTimThay.Text = ""; txtMaHoa.Focus();
} else { Hoa.UpdateDatabase(h); DialogResult = DialogResult.OK;
} }
private void btnTaiHinh_Click(object sender, EventArgs e) { OpenFileDialog f = new OpenFileDialog(); f.Filter = "JPEG Image file(*.jpg)|*.jpg|PNG Image file (*.png) |*.pmg"; if (f.ShowDialog() == DialogResult.OK) picAnhMH.Image = Image.FromFile(f.FileName); }
private void btnCancel_Click(object sender, EventArgs e) { DialogResult = DialogResult.Cancel; } } }
Sau đó bạn là cái form1 là cái form mới đầu tạo bài mới nó cho: Bạn thiết kế thế nào cung dc mình dung 2 nút cho đơn giản Các bạn cũng có thể làm menu như trong sách của thầy ^^ Code như sau:’ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;
namespace QuanLyHoa { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void btnLoaiHoa_Click(object sender, EventArgs e) { var f = new FDMLoaiHoa(); f.ShowDialog(); }
private void btnHoa_Click(object sender, EventArgs e) { var f = new FDMHoa(); f.ShowDialog(); } } }
- Attached to this post:
chuyen_de_2.doc (176.5 KB)
Edited by trionpro, Apr 15 2012, 04:25 PM.
|
trionpro
|
Apr 14 2012, 11:38 PM
Post #2
|