منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[C#.NET] نقل بيانات من فورم لاخر - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة السي شارب C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=175)
+--- قسم : قسم اسئلة C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=176)
+--- الموضوع : [C#.NET] نقل بيانات من فورم لاخر (/showthread.php?tid=39476)



نقل بيانات من فورم لاخر - محمد اسماعيل - 08-09-21

السلام عليكم ورحمة الله 

قمت بعمل واجهات بسيطة الواجهة الرئيسية يوجد بيها انظارات ويوجد ليبل لعرض عدد الانذارات ويظهر اذا كانت هناك انظارات متاحة او يختفي ان لم يوجد.

اذا تم تنفيذ الكود من واجهة لاخري مباشرتا تتم العملية بدون مشاكل ولكن اذا كان هنا ك بين الفورم الرئيسي والفرعي اكتر من فورم واردت تشغيل الكود لايظهر شيء كان ليس هناك كود .
حتي ان وضعت الكود ببوتن الغلق لم يتم اي شيء بالكود .
الداتا تابل تم وضعها بالكلاس الرئيسي لاستدعاؤها بكل الواجهات.


كود :
الداتا تابل تم وضعها بالكلاس الرئيسي لاستدعاؤها بكل الواجهات//

// public static DataTable DTLOGALARM = new DataTable();//


MAIN MAIN = new MAIN();

           if (MAINCODEB.DTLOGALARM.Rows.Count > 0)
           {
               MAIN.LAB_ALARMQOUT.Visible = true;
               MAIN.LAB_ALARMQOUT.Text = MAINCODEB.DTLOGALARM.Rows.Count.ToString();
           }
           else
           {
               MAIN.LAB_ALARMQOUT.Visible = false;

           }



RE: نقل بيانات من فورم لاخر - asemshahen5 - 09-09-21

اخي العزيز اعمل كلاس جديد و لتسميه : ConnectionStringXT

ثم ضع الاكواد التالية هذه الاكواد للتعامل مع قواعد البيانات من نوع اكسيس تستطيع تعديلها لتناسب نوع قواعد البيانات الذي تعرفه :

كود :
   #region DatabaseThing
   public OleDbConnection cn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\MyDatabase.accdb;Jet OLEDB:Database Password=;");
   public DataTable FillDT(string StrSQL)
   {
       DataTable dt = new DataTable();
       OleDbDataAdapter da = new OleDbDataAdapter(StrSQL, cn);
       if (cn.State == ConnectionState.Closed)
       {
           cn.Open();
       }
       da.Fill(dt);
       if (cn.State == ConnectionState.Open)
       {
           cn.Close();
       }
       return dt;
   }
   public void ExecuteNonQueryXT(string SqlStr)
   {
       OleDbCommand cmd = new OleDbCommand(SqlStr, cn);
       if (cn.State == System.Data.ConnectionState.Closed)
       {
           cn.Open();
       }
       cmd.ExecuteNonQuery();
       if (cn.State == System.Data.ConnectionState.Open)
       {
           cn.Close();
       }
   }
   public void FillComboBox(ComboBox Cmb, string SqlStr, string Col, string ValX)
   {
       DataTable dt = new DataTable();
       dt = FillDT(SqlStr);
       Cmb.DataSource = dt;
       Cmb.DisplayMember = Col;
       Cmb.ValueMember = ValX;
   }
   public int MaxID(string IDColum, string TableName)
   {
       int ID = 0;
       string StrSQL = "Select IIF(Max(" + IDColum + ") Is NULL,1,Max(" + IDColum + ")+1)As ID From " + TableName;
       ID = Convert.ToInt32(FillDT(StrSQL).Rows[0]["ID"].ToString());
       return ID;
   }
   #endregion
و عند الفورم التي تريد ان تعرض فيه عدد السجلات ضع السطر التالي في حدث اللود :

PHP كود :
ConnectionStringXT cls = new ConnectionStringXT();
LAB_ALARMQOUT.Text=cls.FillDT("Select * From ProductsTable").Rows.Count.ToString(); 

و الله الموفق .



RE: نقل بيانات من فورم لاخر - محمد اسماعيل - 09-09-21

(09-09-21, 05:33 PM)asemshahen5 كتب : اخي العزيز اعمل كلاس جديد و لتسميه : ConnectionStringXT

ثم ضع الاكواد التالية هذه الاكواد للتعامل مع قواعد البيانات من نوع اكسيس تستطيع تعديلها لتناسب نوع قواعد البيانات الذي تعرفه :

كود :
   #region DatabaseThing
   public OleDbConnection cn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\MyDatabase.accdb;Jet OLEDB:Database Password=;");
   public DataTable FillDT(string StrSQL)
   {
       DataTable dt = new DataTable();
       OleDbDataAdapter da = new OleDbDataAdapter(StrSQL, cn);
       if (cn.State == ConnectionState.Closed)
       {
           cn.Open();
       }
       da.Fill(dt);
       if (cn.State == ConnectionState.Open)
       {
           cn.Close();
       }
       return dt;
   }
   public void ExecuteNonQueryXT(string SqlStr)
   {
       OleDbCommand cmd = new OleDbCommand(SqlStr, cn);
       if (cn.State == System.Data.ConnectionState.Closed)
       {
           cn.Open();
       }
       cmd.ExecuteNonQuery();
       if (cn.State == System.Data.ConnectionState.Open)
       {
           cn.Close();
       }
   }
   public void FillComboBox(ComboBox Cmb, string SqlStr, string Col, string ValX)
   {
       DataTable dt = new DataTable();
       dt = FillDT(SqlStr);
       Cmb.DataSource = dt;
       Cmb.DisplayMember = Col;
       Cmb.ValueMember = ValX;
   }
   public int MaxID(string IDColum, string TableName)
   {
       int ID = 0;
       string StrSQL = "Select IIF(Max(" + IDColum + ") Is NULL,1,Max(" + IDColum + ")+1)As ID From " + TableName;
       ID = Convert.ToInt32(FillDT(StrSQL).Rows[0]["ID"].ToString());
       return ID;
   }
   #endregion
و عند الفورم التي تريد ان تعرض فيه عدد السجلات ضع السطر التالي في حدث اللود :

PHP كود :
ConnectionStringXT cls = new ConnectionStringXT();
LAB_ALARMQOUT.Text=cls.FillDT("Select * From ProductsTable").Rows.Count.ToString(); 

و الله الموفق .


بشكر حضرتك علي الرد المشكلة مش في قاعدة البيانات او الاستعلام المشكلة حضرتك في اظهار او اخفاء ليبل بالفورم قبل الاخير


RE: نقل بيانات من فورم لاخر - waw - 10-09-21

اعتقد المشكله في انك تعمل في كل واجهه
new DataTable
فتتسبب في ضياع البيانات السابقه

اذا انت عامل في الكلاس الرئيسي
public static DataTable dt = new DataTable();
فلا تعمل لها new بعد ذلك الا اذا كنت فعلا لا تريد البيانات السابقه


RE: نقل بيانات من فورم لاخر - asemshahen5 - 10-09-21

عرف متغيير من نوع بولين و من ثم استد له القيمة في الفورم الاول و ضعه على الخاصية Visible في حدث اللود او ضع متغيير في السيتنغ من نوع بولين و احفظه حسب الشرط و استدعه عند حدث اللود و الله الموفق .