تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
LINQ TO DataSet & XML Files
#1


كل عام وأنت بألف خير

كما عودتكم :
في كل شهر رمضان بأعمل لكم درس مفيــــــــــد وحسب وقت الفراغ
المهم اليوم : سنتكلم على :
كيقية أستخدام LINQ TO DataSet & XML Files بأســــــــلوب متقدم

المهم :
لنفرض انه :
عندك زبائن ولهم حسابات عندك في الشركة ومحتاج أنك تتعامل معاهم بالسحب والأضافة للحسابات
بحيث أن عملية السحب لاا تتجاوز المبالغ الموجوده في رصيد الزبون

يعني الموضوع ببساطة مثال خطر على بالي
طيب تعالوا نعملها :
أولا انت محتاج الى أدراج DataSet
وقم بأنشــــــــــاء الجداول كما في الصـــــــــــورة ..:

[/align]


باقي الحقول في الجداول بنفس الطريقة .. أنقر على الحقل وحدد نوعه وغير ما يلزم
To Be Continue
Abu Ehab : Microsoft Partner  & Systems Developer
 Youtube   Facebook    Twitter   
الرد }}}
#2
طيب ما علينا ... نكمل :
ضيف كلاس ,, هذا الكلاس موجود في دالتين مهمتهما :
أنشاء ملف 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 getset; }
         
//-------------------------------



        
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.CustomersRowGetAllCustomers()
          {
              var 
= (from N in this.AcctData.Customers select N).ToList();
              return 
x;

          }
           public List<
Db.AccountsRow GetAllAccounts()
           {
               var 
= (from N in this.AcctData.Accounts  select N).ToList();
               return 
x;

           }

           public List<
Db.HistoryRowGetAllHistories()
           {

               var 
= (from h in this.AcctData.History select h).ToList();
               return 
x;
           }
    }


To Be Continue
Abu Ehab : Microsoft Partner  & Systems Developer
 Youtube   Facebook    Twitter   
الرد }}}
تم الشكر بواسطة: Sajad , الشاكي لله , hoob computer
#3
طيب ...
الأن عايزين نصمم فورم لأضافة الزبائن وتسجيلهم في جدول الــــــ 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 senderEventArgs e)
        {
            
Form frm = new FrmAccounts();
            
frm.Show();
            
this.Hide();
        }
        
void cleartxt() { NameBox.Text "";   NameBox.Focus(); }
        private 
void NewBtn_Click(object senderEventArgs e)
        {
            
cleartxt();
        }
        
DataLayer cmd = new DataLayer();
        private 
void SaveBtn_Click(object senderEventArgs 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 senderEventArgs e)
        {
            
Application.Exit();
        }

        private 
void RepBtn_Click(object senderEventArgs e)
        {
            
Form frm = new Form1();
            
frm.Show();
        }

        private 
void FrmAddCustomer_Load(object senderEventArgs e)
        {

        }





    }

Abu Ehab : Microsoft Partner  & Systems Developer
 Youtube   Facebook    Twitter   
الرد }}}
تم الشكر بواسطة: Sajad , الشاكي لله , hoob computer
#4
نصمم فورم لجـــــــدول 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 senderEventArgs 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 senderEventArgs 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 senderEventArgs e)
        {
            
Form frm = new FrmAddCustomer();
            
frm.Show();
            
this.Hide();
        }
  
        private 
void DepositBtn_Click(object senderEventArgs 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(sendere);

                    
MessageBox.Show("Done");
                }
          
       
        }

        private 
void WithdrawalBtn_Click(object senderEventArgs 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(sendere);

                
MessageBox.Show("Done");
            }
        }

            
            catch (
Exception)
            {
                   
FrmAccounts_Load(sendere);
               
            }

        }

        private 
void NewAccountBox_KeyPress(object senderKeyPressEventArgs e)
        {
            if (
char.IsNumber(e.KeyChar) || e.KeyChar == '.' || e.KeyChar == '£')
            {
            }
            else
            {
                
e.Handled e.KeyChar != (char)Keys.Back;
            }
        }

    }

Abu Ehab : Microsoft Partner  & Systems Developer
 Youtube   Facebook    Twitter   
الرد }}}
تم الشكر بواسطة: Sajad , الشاكي لله , hoob computer
#5
نصمم فورم تالث لحركة الحسابات :



الكود :
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 senderEventArgs 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 senderEventArgs 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 senderEventArgs e)
        {

        }

        private 
void button1_Click(object senderEventArgs e)
        {
            
Form frm = new FrmAddCustomer(); frm.Show(); this.Hide();
        }

        private 
void button2_Click(object senderEventArgs 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.CustomerNamei.PTypei.xSumi.xDate.ToString() });
                }
            }
        }

        private 
void button2_Click_1(object senderEventArgs e)
        {
            
SearchBox.Text ""Idbox.Text ""Form1_Load(sendere);
        }

        private 
void Idbox_KeyPress(object senderKeyPressEventArgs e)
        {
            if (
char.IsNumber(e.KeyChar) || e.KeyChar == '.' || e.KeyChar == '£')
            {
            }
            else
            {
                
e.Handled e.KeyChar != (char)Keys.Back;
            }
        }
    }

Abu Ehab : Microsoft Partner  & Systems Developer
 Youtube   Facebook    Twitter   
الرد }}}
تم الشكر بواسطة: Sajad , الشاكي لله , hoob computer
#6
أخيــــــــــر :
عايز أقول : أن الهدف من المثال أنك تتعامل مع لمف xml files بطريقة جديدة
مع وجود دالة بناء ديناميكية تنشأ الملف في حال عدم وجوده
بناءا على DataTables In DataSet
و الصراحة كنت عايز أتكلم وأشرح بشكل مفصل حتى الكل بيفهم ,,
لكن ما عنديش وقت كفاية ..
سامحونا على التقصير
ونسأل الله القبــــــــول .
The Source Code VS2013
Abu Ehab 17 Rammdan 1435 Hj
Abu Ehab : Microsoft Partner  & Systems Developer
 Youtube   Facebook    Twitter   
الرد }}}
تم الشكر بواسطة: Sajad , kslawy , الشاكي لله , hoob computer , abiza , abiza
#7
جزاك الله كل خير أستاذي
جاري تعلم التقنية هذه ان شاء الله
يعطيك العافية
اللَّهُمَّ أَنْتَ رَبِّي ، لا إِلَه إِلاَّ أَنْتَ خَلَقْتَني وأَنَا عَبْدُكَ ، وأَنَا على عهْدِكَ ووعْدِكَ ما اسْتَطَعْتُ ، أَعُوذُ بِكَ مِنْ شَرِّ ما صنَعْتُ ، أَبوءُ لَكَ بِنِعْمتِكَ علَيَ ، وأَبُوءُ بذَنْبي فَاغْفِرْ لي ، فَإِنَّهُ لا يغْفِرُ الذُّنُوبِ إِلاَّ أَنْتَ .
الرد }}}
تم الشكر بواسطة:
#8
طول عمرك استاذنا ومعلمنا يا ابو ايهاب

تسلم الانامل وكل عام وانت بخير ..
الرد }}}
تم الشكر بواسطة: Abu Ehab
#9
حياك الله أخى الكريم ..
كنت محضر لكم درس فيديو عن Entity FrameWork 6.1.1
لكن بسبب الحرب علينا في غزة ,, أجلت الموضوع حاليا
وأذا كتب الله لنا النجاه بحاول أرتب الموضوع وانزله هنا ان شاء الله .
Abu Ehab : Microsoft Partner  & Systems Developer
 Youtube   Facebook    Twitter   
الرد }}}
تم الشكر بواسطة: hoob computer , Sajad
#10
السلام عليكم أخي العزيز أبو إيهاب ...
حياك الله ...

هنالك أشخاص لا يمكن رد جميلهم و فضلهم عليَّ بالعلم بعد الله سبحانه و تعالى ... من هؤلاء الأشخاص هو (أبو إيهاب).

الله يحميكم و يزيل هذه الغمة عنكم و يجزيك الله كل خير.

السلام عليكم
الرد }}}
تم الشكر بواسطة: Abu Ehab



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم