المشاركات : 749
المواضيع 127
الإنتساب : Sep 2013
السمعة :
105
الشكر: 924
تم شكره 5271 مرات في 453 مشاركات
كل عام وأنت بألف خير
كما عودتكم :
في كل شهر رمضان بأعمل لكم درس مفيــــــــــد وحسب وقت الفراغ
المهم اليوم : سنتكلم على :
كيقية أستخدام LINQ TO DataSet & XML Files بأســــــــلوب متقدم
المهم :
لنفرض انه :
عندك زبائن ولهم حسابات عندك في الشركة ومحتاج أنك تتعامل معاهم بالسحب والأضافة للحسابات
بحيث أن عملية السحب لاا تتجاوز المبالغ الموجوده في رصيد الزبون
يعني الموضوع ببساطة مثال خطر على بالي
طيب تعالوا نعملها :
أولا انت محتاج الى أدراج DataSet
وقم بأنشــــــــــاء الجداول كما في الصـــــــــــورة ..:
[/align]
باقي الحقول في الجداول بنفس الطريقة .. أنقر على الحقل وحدد نوعه وغير ما يلزم
To Be Continue
Abu Ehab : Microsoft Partner & Systems Developer
المشاركات : 749
المواضيع 127
الإنتساب : Sep 2013
السمعة :
105
الشكر: 924
تم شكره 5271 مرات في 453 مشاركات
طيب ما علينا ... نكمل :
ضيف كلاس ,, هذا الكلاس موجود في دالتين مهمتهما :
أنشاء ملف xml
كل مرة بيفتح فيها البرنامج بروح بيشيك على الملف ,,
أذا موجود بيمشى الحال وأذا مش موجود بينشأه من جديد
وانا كمان أضفت 3 دوال مهمتها شحن بيانات الجداول ..:
PHP كود :
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System .Xml ; namespace AccountsBox_Manager { public class DataLayer { public Db AcctData { get; set; } //-------------------------------
public DataLayer( ) { AcctData = new Db( ); try { AcctData.ReadXml("AccountsData.Xml"); } catch ( Exception ) {
AcctData.WriteXmlSchema("AccountsData.Xml"); AcctData.ReadXml("AccountsData.Xml"); } }
public bool WriteNewChanges( ) {
AcctData.WriteXml("AccountsData.Xml"); return true; }
public List<Db.CustomersRow> GetAllCustomers() { var x = (from N in this.AcctData.Customers select N).ToList(); return x;
} public List<Db.AccountsRow > GetAllAccounts() { var x = (from N in this.AcctData.Accounts select N).ToList(); return x;
}
public List<Db.HistoryRow> GetAllHistories() {
var x = (from h in this.AcctData.History select h).ToList(); return x; } } }
To Be Continue
Abu Ehab : Microsoft Partner & Systems Developer
المشاركات : 749
المواضيع 127
الإنتساب : Sep 2013
السمعة :
105
الشكر: 924
تم شكره 5271 مرات في 453 مشاركات
طيب ...
الأن عايزين نصمم فورم لأضافة الزبائن وتسجيلهم في جدول الــــــ Customers
الكــــــــود :
PHP كود :
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 AccountsBox_Manager { public partial class FrmAddCustomer : Form { public FrmAddCustomer() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) { Form frm = new FrmAccounts(); frm.Show(); this.Hide(); } void cleartxt() { NameBox.Text = ""; NameBox.Focus(); } private void NewBtn_Click(object sender, EventArgs e) { cleartxt(); } DataLayer cmd = new DataLayer(); private void SaveBtn_Click(object sender, EventArgs e) { if(NameBox.Text != "") { try { var getHem = (from c in cmd.GetAllCustomers() where c.CustomerName == NameBox.Text select c).Single(); if (getHem.ID != 0) { MessageBox.Show("موجــود من قبــــل"); cleartxt(); return; } } catch (Exception) { cmd = new DataLayer(); Db.CustomersRow Rw = cmd.AcctData.Customers.NewCustomersRow(); Rw.CustomerName = NameBox.Text; cmd.AcctData.Customers.AddCustomersRow(Rw); cmd.WriteNewChanges();
//========================================================== int xid = 0; xid = (from i in cmd.GetAllCustomers() select i.ID).Max(); Db.AccountsRow ARw = cmd.AcctData.Accounts.NewAccountsRow(); ARw.CustomerID = xid; ARw.TotalAccount = 0; ARw.Amount = 0; cmd.AcctData.Accounts.AddAccountsRow(ARw); cmd.WriteNewChanges(); //==========================================================
MessageBox.Show("تـــم الحـــــفظ"); cleartxt(); } } }
void PopulateListView() { var xCustmores = cmd .GetAllCustomers (); var xAccounts = cmd.GetAllAccounts () ; }
private void QuiteBtn_Click(object sender, EventArgs e) { Application.Exit(); }
private void RepBtn_Click(object sender, EventArgs e) { Form frm = new Form1(); frm.Show(); }
private void FrmAddCustomer_Load(object sender, EventArgs e) {
}
} }
Abu Ehab : Microsoft Partner & Systems Developer
المشاركات : 749
المواضيع 127
الإنتساب : Sep 2013
السمعة :
105
الشكر: 924
تم شكره 5271 مرات في 453 مشاركات
نصمم فورم لجـــــــدول Accounts
الكود :
PHP كود :
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 AccountsBox_Manager { public partial class FrmAccounts : Form { public FrmAccounts() { InitializeComponent(); } DataLayer cmd = new DataLayer(); private void FrmAccounts_Load(object sender, EventArgs e) { xid = 0; CmbNames.Text = ""; NewAccountBox.Text = ""; TotalBox.Text = ""; CmbNames.Items.Clear(); CmbNames .Items .AddRange (( from c in cmd .GetAllCustomers() select c .CustomerName ).ToArray ()); } int xid = 0; private void CmbNames_SelectedIndexChanged(object sender, EventArgs e) { if (CmbNames.Text != "") {
cmd = new DataLayer(); xid = (from i in cmd.GetAllCustomers() where i.CustomerName == CmbNames.Text select i.ID).Single(); TotalBox.Text = (from a in cmd.GetAllAccounts() where a.CustomerID == xid select a.TotalAccount.ToString()).Single(); } }
private void BackBtn_Click(object sender, EventArgs e) { Form frm = new FrmAddCustomer(); frm.Show(); this.Hide(); } private void DepositBtn_Click(object sender, EventArgs e) { // إضـــافة مبــــــــلغ cmd = new DataLayer(); if (xid != 0) { var Cust = from Db.AccountsRow Rw in cmd.AcctData.Accounts.Rows where Rw.ID == xid select Rw ; foreach (var r in Cust) { r.TotalAccount += Convert.ToDouble (NewAccountBox.Text); r.ProcessDate = DateTime.Today;
} cmd.WriteNewChanges(); //=========================================================== cmd = new DataLayer();
// ^^ History Db.HistoryRow HRw = cmd.AcctData.History.NewHistoryRow(); HRw.CustomerName = CmbNames.Text; HRw.PType = "إضافة مبلغ"; HRw.xSum = NewAccountBox.Text; HRw.xDate = DateTime.Today; cmd.AcctData.History.AddHistoryRow(HRw); cmd.WriteNewChanges(); //===========================================================
FrmAccounts_Load(sender, e);
MessageBox.Show("Done"); } }
private void WithdrawalBtn_Click(object sender, EventArgs e) { try { // سحب مبلغ if (xid != 0) { var Cust = from Db.AccountsRow Rw in cmd.AcctData.Accounts.Rows where Rw.ID == xid select Rw; foreach (var r in Cust) { if (r.TotalAccount < Convert.ToDouble(NewAccountBox.Text)) { MessageBox.Show("الرصـــيد غيـــــر كافي"); NewAccountBox.Text = ""; NewAccountBox.Focus(); return; } r.TotalAccount -= Convert.ToDouble(NewAccountBox.Text); r.ProcessDate = DateTime.Today;
}
cmd.WriteNewChanges(); //=========================================================== // ^^ History cmd = new DataLayer(); Db.HistoryRow HRw = cmd.AcctData.History.NewHistoryRow(); HRw.CustomerName = CmbNames.Text; HRw.PType = "سحب مبلغ"; HRw.xSum = NewAccountBox.Text; HRw.xDate = DateTime.Today; cmd.AcctData.History.AddHistoryRow(HRw); cmd.WriteNewChanges(); //=========================================================== FrmAccounts_Load(sender, e);
MessageBox.Show("Done"); } }
catch (Exception) { FrmAccounts_Load(sender, e); }
}
private void NewAccountBox_KeyPress(object sender, KeyPressEventArgs e) { if (char.IsNumber(e.KeyChar) || e.KeyChar == '.' || e.KeyChar == '£') { } else { e.Handled = e.KeyChar != (char)Keys.Back; } }
} }
Abu Ehab : Microsoft Partner & Systems Developer
المشاركات : 749
المواضيع 127
الإنتساب : Sep 2013
السمعة :
105
الشكر: 924
تم شكره 5271 مرات في 453 مشاركات
نصمم فورم تالث لحركة الحسابات :
الكود :
PHP كود :
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 AccountsBox_Manager { public partial class Form1 : Form { public Form1() { InitializeComponent(); } DataLayer cmd = new DataLayer(); void creategrid() { dgv.ColumnCount = 5; dgv.Cursor = Cursors.Hand; dgv.Columns[0].HeaderText = "رقم الحســـاب"; dgv.Columns[1].HeaderText = "الزبون"; dgv.Columns[2].HeaderText = "نوع العملية"; dgv.Columns[3].HeaderText = "المبلغ"; dgv.Columns[4].HeaderText = "تاريخ الحركة"; dgv.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; dgv.ReadOnly = true; dgv.Columns[4].Width = 170; dgv.DefaultCellStyle.SelectionForeColor = Color.GreenYellow ; dgv.DefaultCellStyle.SelectionBackColor = Color.Black; } private void Form1_Load(object sender, EventArgs e) { creategrid(); var lst = (from Db.HistoryRow r in cmd.AcctData.History.Rows orderby r.xDate descending select r).ToList(); dgv.Rows.Clear(); foreach (var i in lst ) { dgv.Rows.Add(new string[] { i.ID.ToString () ,i.CustomerName ,i.PType ,i.xSum ,i.xDate .ToString () }); } }
private void textBox1_TextChanged(object sender, EventArgs e) { if (SearchBox.Text != "") {
creategrid(); var lst = (from Db.HistoryRow r in cmd.AcctData.History.Rows where r.CustomerName.Contains(SearchBox .Text.ToUpperInvariant ()) orderby r.xDate descending select r).ToList(); dgv.Rows.Clear(); foreach (var i in lst ) { dgv.Rows.Add(new string[] {i.ID.ToString () ,i.CustomerName ,i.PType ,i.xSum ,i.xDate .ToString () }); } } else {
creategrid(); var lst = (from Db.HistoryRow r in cmd.AcctData.History.Rows orderby r.xDate descending select r).ToList(); dgv.Rows.Clear(); foreach (var i in lst ) { dgv.Rows.Add(new string[] {i.ID.ToString (),i.CustomerName ,i.PType ,i.xSum ,i.xDate .ToString () }); }
} }
private void label1_Click(object sender, EventArgs e) {
}
private void button1_Click(object sender, EventArgs e) { Form frm = new FrmAddCustomer(); frm.Show(); this.Hide(); }
private void button2_Click(object sender, EventArgs e) { if (Idbox .Text != "") {
creategrid(); var lst = (from Db.HistoryRow r in cmd.AcctData.History.Rows where r.ID == int .Parse (Idbox .Text ) orderby r.xDate descending select r).ToList(); dgv.Rows.Clear();
foreach (var i in lst) { dgv.Rows.Add(new string[] { i.ID.ToString(), i.CustomerName, i.PType, i.xSum, i.xDate.ToString() }); } } }
private void button2_Click_1(object sender, EventArgs e) { SearchBox.Text = ""; Idbox.Text = ""; Form1_Load(sender, e); }
private void Idbox_KeyPress(object sender, KeyPressEventArgs e) { if (char.IsNumber(e.KeyChar) || e.KeyChar == '.' || e.KeyChar == '£') { } else { e.Handled = e.KeyChar != (char)Keys.Back; } } } }
Abu Ehab : Microsoft Partner & Systems Developer
المشاركات : 749
المواضيع 127
الإنتساب : Sep 2013
السمعة :
105
الشكر: 924
تم شكره 5271 مرات في 453 مشاركات
أخيــــــــــر :
عايز أقول : أن الهدف من المثال أنك تتعامل مع لمف xml files بطريقة جديدة
مع وجود دالة بناء ديناميكية تنشأ الملف في حال عدم وجوده
بناءا على DataTables In DataSet
و الصراحة كنت عايز أتكلم وأشرح بشكل مفصل حتى الكل بيفهم ,,
لكن ما عنديش وقت كفاية ..
سامحونا على التقصير
ونسأل الله القبــــــــول .
The Source Code VS2013
Abu Ehab 17 Rammdan 1435 Hj
Abu Ehab : Microsoft Partner & Systems Developer
المشاركات : 463
المواضيع 42
الإنتساب : Sep 2012
السمعة :
22
الشكر: 424
تم شكره 779 مرات في 162 مشاركات
جزاك الله كل خير أستاذي
جاري تعلم التقنية هذه ان شاء الله
يعطيك العافية
اللَّهُمَّ أَنْتَ رَبِّي ، لا إِلَه إِلاَّ أَنْتَ خَلَقْتَني وأَنَا عَبْدُكَ ، وأَنَا على عهْدِكَ ووعْدِكَ ما اسْتَطَعْتُ ، أَعُوذُ بِكَ مِنْ شَرِّ ما صنَعْتُ ، أَبوءُ لَكَ بِنِعْمتِكَ علَيَ ، وأَبُوءُ بذَنْبي فَاغْفِرْ لي ، فَإِنَّهُ لا يغْفِرُ الذُّنُوبِ إِلاَّ أَنْتَ .
المشاركات : 1,733
المواضيع 147
الإنتساب : Sep 2012
السمعة :
215
الشكر: 8484
تم شكره 12163 مرات في 1145 مشاركات
21-07-14, 11:54 PM
(آخر تعديل لهذه المشاركة : 21-07-14, 11:55 PM {2} بواسطة الشاكي لله.)
طول عمرك استاذنا ومعلمنا يا ابو ايهاب
تسلم الانامل وكل عام وانت بخير ..
المشاركات : 749
المواضيع 127
الإنتساب : Sep 2013
السمعة :
105
الشكر: 924
تم شكره 5271 مرات في 453 مشاركات
حياك الله أخى الكريم ..
كنت محضر لكم درس فيديو عن Entity FrameWork 6.1.1
لكن بسبب الحرب علينا في غزة ,, أجلت الموضوع حاليا
وأذا كتب الله لنا النجاه بحاول أرتب الموضوع وانزله هنا ان شاء الله .
Abu Ehab : Microsoft Partner & Systems Developer
المشاركات : 506
المواضيع 39
الإنتساب : Sep 2013
السمعة :
14
الشكر: 715
تم شكره 578 مرات في 220 مشاركات
السلام عليكم أخي العزيز أبو إيهاب ...
حياك الله ...
هنالك أشخاص لا يمكن رد جميلهم و فضلهم عليَّ بالعلم بعد الله سبحانه و تعالى ... من هؤلاء الأشخاص هو (أبو إيهاب).
الله يحميكم و يزيل هذه الغمة عنكم و يجزيك الله كل خير.
السلام عليكم
|