منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
حساب وترتيب عدد السجلات - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : حساب وترتيب عدد السجلات (/showthread.php?tid=36736)



حساب وترتيب عدد السجلات - aftfm - 19-10-20

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

استخدم الكود لجلب عدد السجلات الموجودة بداخل الجدول بقاعدة ابيانات اكسس
بحيث يظهر لي رقم السجل التالي في حالة اضافة سجل جديد 
ولكن المشكلة في حال تم حذف سجل او اثنين من السجلات سيتم البحث عن اكبر رقم موجود ويأتي به وليكن الرقم الاكبر 4 مثلا سيأتي بالرقم 5 مع العلم ان عدد السجلات 2 في حال تم حذف سجلين 
المطلوب التعديل على الكود بحيث يتم اعادة ترتيب او اضافة النواقص قبل الاكيبر 

الكود 

كود :
Dim dt as new DataTable
Dim da as new OleDbDataAdapter("Select Max(ID) From TblName " , Con)
da.Fill(dt)
if IsDBNull(dt(0)(0))=True then
MynewID =1
else 
MyNewID =dt(0)(0)+1



RE: حساب وترتيب عدد السجلات - abdou - 20-10-20

(19-10-20, 11:31 PM)aftfm كتب : السلام عليكم ورحمة الله وبركاته

استخدم الكود لجلب عدد السجلات الموجودة بداخل الجدول بقاعدة ابيانات اكسس
بحيث يظهر لي رقم السجل التالي في حالة اضافة سجل جديد 
ولكن المشكلة في حال تم حذف سجل او اثنين من السجلات سيتم البحث عن اكبر رقم موجود ويأتي به وليكن الرقم الاكبر 4 مثلا سيأتي بالرقم 5 مع العلم ان عدد السجلات 2 في حال تم حذف سجلين 
المطلوب التعديل على الكود بحيث يتم اعادة ترتيب او اضافة النواقص قبل الاكيبر 

الكود 

كود :
Dim dt as new DataTable
Dim da as new OleDbDataAdapter("Select Max(ID) From TblName " , Con)
da.Fill(dt)
if IsDBNull(dt(0)(0))=True then
MynewID =1
else 
MyNewID =dt(0)(0)+1
وعليكم السلام ورحمة الله وبركاته

الكود المستخدم ليس للجلب عدد السجلات وانما لجلب اكبر قيمه\

اما لمعرفة عدد السجلات فهو
كود :
Select Count



RE: حساب وترتيب عدد السجلات - عبد العزيز البسكري - 20-10-20

السّلام عليكم و رحمة الله و بركاته
إضافة لما طرحه أخي الكريم عبدو بارك الله فيه و له
هذا هو الكود الذي من يوم ما عرفت المنتدى .. و انا لم اصادف سواه لإعادة ترقيم السجلات
السجلات بقاعدة البيانات مرقمة : 1 - 2 - 3 - 4 - 5
عند حذف السجل الثالث كمثال .. يصبح لدينا 4 سجلات في حين سيكون الترتيب كالتالي : 1 - 2 - 4 - 5
بهذا الكود سيتم ترتيب السجلات من جديد ليكون الشكل : 1 - 2 - 3 - 4
لكن ما يعيبه أو ربما يعيبني أنا و لم أعرف كيف أرمّم القضيّة
هذا الكود :
سيحذف حقل المفتاح الرئيسي و يقوم بإنشائه من جديد
أنا عامل حقل الترقيم التسلسلي من نوع رقمي .. سيتم حذفه نهائيا و يتم إنشاؤه من جديد من نوع ترقيم تلقائي و هذا ما دوخني
ثانيا .. سيتم إنشاء حقل الترقيم التلقائي بآخر السجلات و يستحسن أن يتم الإنشاء بالأول
و إليك الخط .. أخي الكريم
كود :
   Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click
       If DT_CANDIDATE.Rows.Count = 0 Then
           MsgBox("الجدول فارغ من السجلات يتطلب وجود سجل واحد على الاقل", 16 + 524288, "تنبيه")
           Exit Sub
       End If
       If MsgBox("  هل تريد استعادة ترقيم السجلات  " & " ؟ ", MsgBoxStyle.Exclamation + MsgBoxStyle.MsgBoxRight + MsgBoxStyle.OkCancel, "استعادة ترقيم السجلات") = MsgBoxResult.Cancel Then Exit Sub
       Try
           Application.DoEvents()
           Dim cmd As New OleDb.OleDbCommand("", Conne_2019)
           Conne_2019.Open()
           'ID كود حذف المفتاح من حقل الترقيم التلقائي الي اسمه  
           cmd.CommandText = "ALTER TABLE TBL_CANDIDATE DROP CONSTRAINT PrimaryKey"
           cmd.ExecuteNonQuery()
           'ID كود حذف حقل الترقيم التلقائي الي اسمه  
           cmd.CommandText = "ALTER TABLE TBL_CANDIDATE DROP COLUMN CANDIDATE_Id"
           cmd.ExecuteNonQuery()
           'مع وضع مفتاح له ID كود انشاء حقل الترقيم التلقائي الي اسمه  
           cmd.CommandText = "ALTER TABLE TBL_CANDIDATE ADD COLUMN CANDIDATE_Id COUNTER CONSTRAINT [PrimaryKey] Primary key"
           cmd.ExecuteNonQuery()
           'تحديث قاعدة البيانات
           DT_CANDIDATE.Clear()
           Conne_2019.Close()
           Dim Da As New OleDbDataAdapter("SELECT * From TBL_CANDIDATE", Conne_2019) '
           If Conne_2019.State = 1 Then Conne_2019.Close()
           Conne_2019.Open()
           Da.Fill(DT_CANDIDATE)
           MsgBox("تم بنجاح استعادة تسلسل السجلات", 64 + 524288, "نجاح")
       Catch ex As Exception
           MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
       End Try
   End Sub

تحياتي



RE: حساب وترتيب عدد السجلات - aftfm - 20-10-20

الف شكر اخي العزيز
عبد العزيز

لكن لدي حقل ID ليس ترقيم تلقائي
هو من نوع رقم

هل سيعمل الكود معه بالشكل الصحيح


RE: حساب وترتيب عدد السجلات - عبد العزيز البسكري - 20-10-20

(20-10-20, 04:29 PM)aftfm كتب : الف شكر اخي العزيز
عبد العزيز

لكن لدي حقل ID  ليس ترقيم تلقائي
هو من نوع  رقم

هل سيعمل الكود معه بالشكل الصحيح

السلام عليكم و رحمة الله و بركاته
فقط إقرأ ما كتبته لك أخي الكريم .. و ستجد الإجابة إن شاء الله
تحياتي