تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
دالة تقوم بترقيم السجلات حسب السنة الهجرية
#1
المطلوب كود يقوم بالترقيم لسجلات يبداء من الرقم واحد مع كل بداية سنة هجرية

وهذا كود لنفس المطلوب بس مادري كيف احولة للعمل مع السي شارب


   '========== دالة لمعرفة أكبر رقم مسجل للسنة المحددة =========='
   Private Function GetMaxHijriID(ByVal hijriYear As Integer) As Integer
       Try

           conn.Open()

           '========== معرفة أكبر رقم مسجل للسنة الحالية =========='
           ' متغير من نوع أوبجكت تحسباً لرجوع قيمة فارغة '
           Dim maxHijriID As Object
           Using comm As New OleDbCommand(" SELECT MAX([HijriID]) FROM [Tab1] WHERE [HijriYear] = @HijriYear ", conn)
               comm.Parameters.AddWithValue("@HijriYear", hijriYear)
               maxHijriID = comm.ExecuteScalar
           End Using
           ' في حالة القيمة الفارغة يتم تحويلها إلى رقم صفر '
           maxHijriID = IIf(maxHijriID.GetType Is GetType(System.DBNull), 0, maxHijriID)

           conn.Close()

           Return maxHijriID

       Catch ex As Exception
           MsgBox(ex.Message)
           Return -1
       End Try
   End Function
الرد
تم الشكر بواسطة: ابو ليلى
#2
تفضل الكود بعد التحويل
كود :
// ========== دالة لمعرفة أكبر رقم مسجل للسنة المحددة =========='
private int GetMaxHijriID(int hijriYear)
{
   try
   {
       conn.Open();

       // ========== معرفة أكبر رقم مسجل للسنة الحالية =========='
       // متغير من نوع أوبجكت تحسباً لرجوع قيمة فارغة '
       object maxHijriID;
       using (OleDbCommand comm = new OleDbCommand(" SELECT MAX([HijriID]) FROM [Tab1] WHERE [HijriYear] = @HijriYear ", conn))
       {
           comm.Parameters.AddWithValue("@HijriYear", hijriYear);
           maxHijriID = comm.ExecuteScalar;
       }
       // في حالة القيمة الفارغة يتم تحويلها إلى رقم صفر '
       maxHijriID = Interaction.IIf(maxHijriID.GetType() == typeof(System.DBNull), 0, maxHijriID);

       conn.Close();

       return maxHijriID;
   }
   catch (Exception ex)
   {
       Interaction.MsgBox(ex.Message);
       return -1;
   }
}
الرد
تم الشكر بواسطة: ابراهيم ايبو , ابو ليلى
#3
(17-06-20, 06:26 PM)kiki كتب : تفضل الكود بعد التحويل
كود :
// ========== دالة لمعرفة أكبر رقم مسجل للسنة المحددة =========='
private int GetMaxHijriID(int hijriYear)
{
   try
   {
       conn.Open();

       // ========== معرفة أكبر رقم مسجل للسنة الحالية =========='
       // متغير من نوع أوبجكت تحسباً لرجوع قيمة فارغة '
       object maxHijriID;
       using (OleDbCommand comm = new OleDbCommand(" SELECT MAX([HijriID]) FROM [Tab1] WHERE [HijriYear] = @HijriYear ", conn))
       {
           comm.Parameters.AddWithValue("@HijriYear", hijriYear);
           maxHijriID = comm.ExecuteScalar;
       }
       // في حالة القيمة الفارغة يتم تحويلها إلى رقم صفر '
       maxHijriID = Interaction.IIf(maxHijriID.GetType() == typeof(System.DBNull), 0, maxHijriID);

       conn.Close();

       return maxHijriID;
   }
   catch (Exception ex)
   {
       Interaction.MsgBox(ex.Message);
       return -1;
   }
}

توجد اخطاء ارجو التطبيق على المثل المرفق


الملفات المرفقة
.rar   LibMS.rar (الحجم : 192.68 ك ب / التحميلات : 24)
الرد
تم الشكر بواسطة: ابراهيم ايبو , ابو ليلى
#4
السلام عليكم و رحمة الله و بركاته
جربه بهذا الشكل
PHP كود :
       public  int GetMaxHijriID(int hijriYear)
 
       {
 
           try
            
{

 
               object maxHijriID null;
 
               using (OleDbCommand comm = new OleDbCommand("SELECT MAX([HijriID]) FROM [Tab1] WHERE [HijriYear] = @HijriYear "con))
 
               {
 
                   comm.Parameters.AddWithValue("@HijriYear"hijriYear);
 
                   con.Open();
 
                   maxHijriID comm.ExecuteScalar();
 
                   con.Close();
 
               }
 
               maxHijriID = (maxHijriID.GetType() == typeof(System.DBNull)) ? maxHijriID;
 
               return int.Parse(Convert.ToString(maxHijriID));
 
           }
 
           catch (Exception ex)
 
           {
 
               MessageBox.Show(ex.Message);
 
               return -1;
 
           }



 
       
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد
تم الشكر بواسطة: kiki
#5
(18-06-20, 02:41 AM)ابو ليلى كتب : السلام عليكم و رحمة الله و بركاته
جربه بهذا الشكل
PHP كود :
       public  int GetMaxHijriID(int hijriYear)
 
       {
 
           try
            
{

 
               object maxHijriID null;
 
               using (OleDbCommand comm = new OleDbCommand("SELECT MAX([HijriID]) FROM [Tab1] WHERE [HijriYear] = @HijriYear "con))
 
               {
 
                   comm.Parameters.AddWithValue("@HijriYear"hijriYear);
 
                   con.Open();
 
                   maxHijriID comm.ExecuteScalar();
 
                   con.Close();
 
               }
 
               maxHijriID = (maxHijriID.GetType() == typeof(System.DBNull)) ? maxHijriID;
 
               return int.Parse(Convert.ToString(maxHijriID));
 
           }
 
           catch (Exception ex)
 
           {
 
               MessageBox.Show(ex.Message);
 
               return -1;
 
           }



 
       

طيب ياستاذي ممكن تطبق الكود على المثال الموجود اعلاه
الرد
تم الشكر بواسطة: ابو ليلى , ابو ليلى
#6
اخى الكريم المثال المرفق ملف مشروع عادي
والكود يتطلب على اتصال بقاعدة بيانات لاتمام تنفيذ الاستعلام
وهذا غير موجود بالملف المرفق كما ان المشروع المرفق
يحتوى على فورم عام وفرم اخر داخل مجلد لا يرتبط بالمشروع
فضلاً قم بوضع شاشة تحتوى على الاتصال على قاعدة البيانات وطريقة الافتراضية لما تفعله للفوم
حتى يتم اضافة وتعديل على الكود للطريقة التى تستخدمها لتسهيل الامر عليك بدلاً من طريقة النسخ واللصق التى ستقوم بها بالنهاية
الرد
تم الشكر بواسطة: ابو ليلى
#7
السلام عليكم و رحمة الله و بركاته
ضع الكود في الكلاس المسمى CLS_DAL.cs
اذهب الى الفورم الرئيسي و ضع زر و استدعي الكود مع تمرير السنة المطلوبة و اعرض الناتج في مربع نص او رسالة نصية

تعقيب : الاخ Kiki معه حق , لقد تم تعديل الملف المرفق و لم يعد يحتوي على اكواد الاتصال انا اتحدث عن الملف الاول الذي يحتوي على اكواد الاتصال التي كانت موجودة ضمن الكلاس CLS_DAL.cs
بعد ان تكون اضفت الكود يصبح الفورم الرئيسي بهذا الشكل

PHP كود :
   public partial class Form1 Form
    
{
 
    
        public Form1
()
 
       {
 
           InitializeComponent();
 
       }
 
               DL.CLS_DAL cll = new DL.CLS_DAL();

 
       private void Form1_Load(object senderEventArgs e)
 
       {
 
           try
            
{
 
               cll.FillDGV(dg"select * from Depart");

 
               
                dg
.Columns[0].HeaderText "التسلسل";
 
               dg.Columns[1].HeaderText "القسم";
 
              // dg.Columns[2].HeaderText = "كلمة المرور";
 
           }
 
           catch(Exception ex)
 
           {
 
               MessageBox.Show(ex.Message);
 
           }
 
       }

 
       private void button1_Click(object senderEventArgs e)
 
       {
 
           int Idnt=cllGetMaxHijriID(1435);
 
           MessageBox.Show(Idnt.ToString());

 
       }
 
   


الملفات المرفقة
.rar   LibMS.rar (الحجم : 337.11 ك ب / التحميلات : 2)
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد
تم الشكر بواسطة: kiki
#8
(18-06-20, 10:10 PM)ابو ليلى كتب : السلام عليكم و رحمة الله و بركاته
ضع الكود في الكلاس المسمى CLS_DAL.cs
اذهب الى الفورم الرئيسي و ضع زر و استدعي الكود مع تمرير السنة المطلوبة و اعرض الناتج في مربع نص او رسالة نصية

تعقيب : الاخ Kiki معه حق , لقد تم تعديل الملف المرفق و لم يعد يحتوي على اكواد الاتصال انا اتحدث عن الملف الاول الذي يحتوي على اكواد الاتصال التي كانت موجودة ضمن الكلاس CLS_DAL.cs
بعد ان تكون اضفت الكود يصبح الفورم الرئيسي بهذا الشكل

PHP كود :
   public partial class Form1 Form
    
{
 
    
        public Form1
()
 
       {
 
           InitializeComponent();
 
       }
 
               DL.CLS_DAL cll = new DL.CLS_DAL();

 
       private void Form1_Load(object senderEventArgs e)
 
       {
 
           try
            
{
 
               cll.FillDGV(dg"select * from Depart");

 
               
                dg
.Columns[0].HeaderText "التسلسل";
 
               dg.Columns[1].HeaderText "القسم";
 
              // dg.Columns[2].HeaderText = "كلمة المرور";
 
           }
 
           catch(Exception ex)
 
           {
 
               MessageBox.Show(ex.Message);
 
           }
 
       }

 
       private void button1_Click(object senderEventArgs e)
 
       {
 
           int Idnt=cllGetMaxHijriID(1435);
 
           MessageBox.Show(Idnt.ToString());

 
       }
 
   
استاذي مشكور على الرد بس الكود طبقته على الفورم ولم يضبط معي وهذا هو مرفق اذا امكن تعدل عليه


الملفات المرفقة
.rar   New folder.rar (الحجم : 185.43 ك ب / التحميلات : 6)
الرد
تم الشكر بواسطة: ابو ليلى
#9
السلام عليكم و رحمة الله و بركاته
الاخ علي عند الاطلاع على مثالك الكود يعمل
هو يعود بعدد السجلات للسنة المحددة (السنة المحددة في الكود هي 1436) و عددها 3 سجلات
و عند تغير السنة الى 1437 يعود باربع سجلات (و هي الموجودة في القاعدة)
و في حال مررنا 1438 كسنة جديدة سيعود لنا بالرقم 1 اي ان هناك سجل واحد للسنة الجديدة و مرد ذلك , بالنظر الى الكود نرى اننا ارجعنا الرقم واحد عند عدم وجود سجلات لذا وجب تغيره الى الرقم صفر كما يلي :
PHP كود :
       public int GetMaxHijriID(int hijriYear)
 
       {
 
           try
            
{

 
               object maxHijriID null;
 
               using (OleDbCommand comm = new OleDbCommand("SELECT MAX([HijriID]) FROM [tbl] WHERE [HijriYear] = @HijriYear "con))
 
               {
 
                   comm.Parameters.AddWithValue("@HijriYear"hijriYear);
 
                   con.Open();
 
                   maxHijriID comm.ExecuteScalar();
 
                   con.Close();
 
               }
 
               maxHijriID = (maxHijriID.GetType() == typeof(System.DBNull)) ? maxHijriID;
 
               return int.Parse(Convert.ToString(maxHijriID));
 
           }
 
           catch (Exception ex)
 
           {
 
               MessageBox.Show(ex.Message);
 
               return -1;
 
           }



 
       
الاصلاح في هذه الجزئية فقط
PHP كود :
maxHijriID = (maxHijriID.GetType() == typeof(System.DBNull)) ? maxHijriID
و عند الاستدعاء ستزيد بمقدار واحد لكل سجل جديد
كما يلي:
PHP كود :
       private void Button1_Click(object senderEventArgs e)
 
       {
 
           int Idnt cll.GetMaxHijriID(1438)+1;

 
           MessageBox.Show(Idnt.ToString());


 
       

غير ذلك انا لا ارى مشكلة في الكود
الا اذا كان طلبك شيئ مغاير لما فهمته؟؟
حاول ان تقرأ الكود و تتعلم منه
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد
تم الشكر بواسطة: معاند الحظ , معاند الحظ
#10
(19-06-20, 02:02 AM)ابو ليلى كتب : السلام عليكم و رحمة الله و بركاته
الاخ علي عند الاطلاع على مثالك الكود يعمل
هو يعود بعدد السجلات للسنة المحددة (السنة المحددة في الكود هي 1436) و عددها 3 سجلات
و عند تغير السنة الى 1437 يعود باربع سجلات (و هي الموجودة في القاعدة)
و في حال مررنا 1438 كسنة جديدة سيعود لنا بالرقم 1 اي ان هناك سجل واحد للسنة الجديدة و مرد ذلك , بالنظر الى الكود نرى اننا ارجعنا الرقم واحد عند عدم وجود سجلات لذا وجب تغيره الى الرقم صفر كما يلي :
PHP كود :
       public int GetMaxHijriID(int hijriYear)
 
       {
 
           try
            
{

 
               object maxHijriID null;
 
               using (OleDbCommand comm = new OleDbCommand("SELECT MAX([HijriID]) FROM [tbl] WHERE [HijriYear] = @HijriYear "con))
 
               {
 
                   comm.Parameters.AddWithValue("@HijriYear"hijriYear);
 
                   con.Open();
 
                   maxHijriID comm.ExecuteScalar();
 
                   con.Close();
 
               }
 
               maxHijriID = (maxHijriID.GetType() == typeof(System.DBNull)) ? maxHijriID;
 
               return int.Parse(Convert.ToString(maxHijriID));
 
           }
 
           catch (Exception ex)
 
           {
 
               MessageBox.Show(ex.Message);
 
               return -1;
 
           }



 
       
الاصلاح في هذه الجزئية فقط
PHP كود :
maxHijriID = (maxHijriID.GetType() == typeof(System.DBNull)) ? maxHijriID
و عند الاستدعاء ستزيد بمقدار واحد لكل سجل جديد
كما يلي:
PHP كود :
       private void Button1_Click(object senderEventArgs e)
 
       {
 
           int Idnt cll.GetMaxHijriID(1438)+1;

 
           MessageBox.Show(Idnt.ToString());


 
       

غير ذلك انا لا ارى مشكلة في الكود
الا اذا كان طلبك شيئ مغاير لما فهمته؟؟
حاول ان تقرأ الكود و تتعلم منه

الف شكر ياستاذي بس ممكن اذا ما عليك امر تعدل على المثال المرفق عند كل  حفظ السجل يزيد
وذلك لكي يستفيد الجميع من هاذا الموضوع
الرد
تم الشكر بواسطة: ابو ليلى



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


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