السلام عليكم
عملت برنامج بقاعدة بيانات اكسس وتم تعريف id بأن مفتاح رئيسي
لكن عند عمل البرنامج وجدت عدم تسلسل ارقام السجلات
السجلات المدخلة 100 وارقام التسلسل وصلت الى 150
ما الحل ؟؟
يرجي التوضيح حتي يمكن المساعده
نــــــــعم . ... يحدث هذا لأنك تقوم بحذف بعض السجلات وبما أن الحقل ترقيم تلقائي لا يتراجع في الترقيم .
الحل :
حـذف الحقل وأعادة أنشــــــــاءه من جديد واعادة الترقيم المتسلسل .
أليـــــــــــك الكود :
PHP كود :
Try
'''''' Abu Ehab
Application.DoEvents()
If Cn.State = ConnectionState.Open Then Cn.Close()
Dim ReNomCmd As New OleDb.OleDbCommand
Cn.Open()
'--------------------------------------------------------------
With ReNomCmd
.Connection = Cn
.CommandText = "ALTER TABLE TB DROP COLUMN ID "
.ExecuteNonQuery()
.CommandText = "ALTER TABLE TB ADD COLUMN ID COUNTER "
.ExecuteNonQuery()
.CommandText = "ALTER TABLE TB ALTER COLUMN ID Long"
.ExecuteNonQuery()
End With
'------------------------------------------------------------------
Cn.Close()
MsgBox("Okey>>>Done")
Form1_Load(Nothing, Nothing)
Catch ex As Exception
MsgBox(Err.Description, Err.Number)
End Try
وفــــــــــقك الله .
اهلا بكم
انا معطل خاصية حذف السجلات لكن عند الاضافه احيانا اتفاجئ بعدم تسلسل رقم السجل الجديد عند الاضافة
هل فيه كود لاعادة ترقيم السجلات مثلا
أخي أبو إيهاب
الكود اللي وضعته عندما يحذف الـ ID من بداية الجداول ، وعند إضافته من جديد هل سيضيفه أعلى الجدول في مكانه السابق أم سيضعه أسفل الجدول :confused:
هذه الطريقة يأخى الفاضل
Not Recommended
فقد تتسبب فى تخريب العلاقات بين الجداول
السلام عليكم و رحمة الله
أرى أنك تعمل ضغط و اصلاح لفاعدة البيانات بعد كل عملية حذف للسجلات
انا عملت ضغط واصلاح تلقائي عند الخروج من البرنامج
استخدم الاجراء التالي واستغني عن حقل الترقيم التقائي في قاعدة البيانات واجعلة حقل رقم فقط
لان الاجراء التالي يقوم بحساب اكبر قيمة داخل الجدول ويقوم بزيادتها +1
PHP كود :
private Function FindMaxDataTableValue(ByRef dt As DataTable) As Integer
Dim currentValue As Integer, maxValue As Integer
Dim dv As DataView = dt.DefaultView
For c As Integer = 0 To dt.Columns.Count - 1
dv.Sort = dt.Columns(c).ColumnName + " DESC"
currentValue = CInt(dv(0).Item(c))
If currentValue > maxValue Then maxValue = currentValue
Next
Return maxValue
End Function
وهذا كود
LNQ
PHP كود :
Dim query = From p In db.Products _
Group p By p.CategoryID Into g = Group _
Select CategoryID, MaxPrice = g.Max(Function(p) p.UnitPrice)