الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اريد عمل record يكون رقم متزايد اتوماتيك ولكن

مغلق
بدأه shrsm في 19 يوليو 2005 · 13 رد · 1,608 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اريد عمل record يكون رقم متزايد اتوماتيك ولكن ليس AutoNumber ...كيف يمكن عمل ذلك ...

وهل يمكن ان يكون عن طريق Button في Form بحيث عند الضغط عليه يعطى رقم متسلسل لأخر record موجود....بحيث لو تم مسح record لا يكون هناك ارقام مفقودة ...يعنى لو تم عمل record 1,2,3,4....وبعد ذلك تم مسح record 4 وعمل واحد جديد لا يعطيه رقم 5 بل 4 ....

كما اريد عمل disable record بحيث لو تم مسح الrecord 2 لا يلغى من الtable

وشكرا لكم

تم تعديل هذه المشاركة بواسطة shrsm في 19 يوليو 2005 في 09:19

#2

السلام عليكم

هذا يتطلب اضافة حقل يحتوي على الترقيم الجديد في الجدول و النموذج و ليكن num

كما يتطلب اعادة ترتيب قيمة num بعد كل عملية حذف حيث ان القيد المحذوف قد يكون الاول او الثاني او اي قيد فلا بد اذا من اعادة الترتيب و تغير قيمة num

لنفرض ان اسم النموذج المستخدم هو Form1 و الذي يحتوي على الحقول المطلوبه اضافة الى حقل التسلسل num

يمكنك وضع الكود التالي في command button(زر امر) قد تسميه اعادة ترتيب و في حدث عند النقر او في حدث عند غلق النموذج و يمكنك تحوريه لا ستخدامه في احداث مختلفه و حسب الحاجه .

Dim I

DoCmd.OpenForm ("form1")

For I = 1 To Forms![form1].Count

Forms![form1]![num].Value = I

DoCmd.GoToRecord acDataForm, "form1", acNext

Next I

اذا اردت عملية الحذف لا تؤدي الى حذف القيد من الجدول , يمكن ذلك بأضافة حقل مثلا del في الجدول و النوذج بحيث يكون غير مرئي في النموذج و تكون قيمة هذا الحقل صفر للقيد غير المحذوف و واحد للقيد المحذوف فعند اضافة ايقونة للحذف يكون وضيفتها تغيير هذا الحقل الى واحد للقيد المراد حذفه و يكون اظهار النتائج في النموذج للقيود التي فيها حقل del=0 كما يمكنك اضافة نموذج جديد للقيود المحذوفه باضافة شرط del=1 .

العراق - البصرة

#3
alibukheet كتب:
السلام عليكم

هذا يتطلب اضافة حقل يحتوي على الترقيم الجديد في الجدول و النموذج و ليكن num

كما يتطلب اعادة ترتيب قيمة num بعد كل عملية حذف حيث ان القيد المحذوف قد يكون الاول او الثاني او اي قيد فلا بد اذا من اعادة الترتيب و تغير قيمة num

لنفرض ان اسم النموذج المستخدم هو Form1 و الذي يحتوي على الحقول المطلوبه اضافة الى حقل التسلسل num

يمكنك وضع الكود التالي في command button(زر امر) قد تسميه اعادة ترتيب و في حدث عند النقر او في حدث عند غلق النموذج و يمكنك تحوريه لا ستخدامه في احداث مختلفه  و حسب الحاجه .

Dim I

DoCmd.OpenForm ("form1")

For I = 1 To Forms![form1].Count

Forms![form1]![num].Value = I

DoCmd.GoToRecord acDataForm, "form1", acNext

Next I

اذا اردت عملية الحذف لا تؤدي الى حذف القيد من الجدول , يمكن ذلك بأضافة حقل مثلا del في الجدول و النوذج  بحيث يكون غير مرئي في النموذج و تكون قيمة هذا الحقل صفر للقيد غير المحذوف و واحد للقيد المحذوف فعند اضافة ايقونة للحذف يكون وضيفتها تغيير هذا الحقل الى واحد للقيد المراد حذفه و يكون اظهار النتائج في النموذج للقيود التي فيها حقل del=0 كما يمكنك اضافة نموذج جديد للقيود المحذوفه  باضافة شرط del=1    .

شكرا لك جزيلا

alibukheet

وسوف اجرب واخبرك غن شاء الله .....شكرا لك :)

#4

عند تجربة الButton يعطى رقم 1 ولكن تظهر هذه الرسالة ...

اقتباس
run time error'2105':

you can't go to the specified record

والخطأ يشير علي هذا السطر

اقتباس
DoCmd.GoToRecord acDataForm, "delord_form", acNext
#5

الخطأ يدل ان عملية الدواره for تذهب الى قيد غير موجود غير العبارة الى

For I = 1 To Forms![form1].Count -1

العراق - البصرة

#6

مرحبا

لو سمحت أذا أردت أن تزداد قيمة الحقل مره واحده عند الضغط على الزر "أضافه" مثلا, بحيث أنه في كل مره أضغط على هذا الزر يقوم بأعطائي الرقم الجديد مثلا :

انا جعلت الرقم الافتراضي بالجدول هو 100 وأريد المره القادمه عند الضغط على زر "الاضافه" أن يصبح 101 واذا ضغطت مره تانيه يصبح 102 وهكذا .........

أرجو أن تكون الفكره قد وصلت

1+1=10

#7

لنفترض الآتي :

اسم الجدول = tbl1

اسم الحقل = field1 ونوع بيانات (رقم)

ونموذج مصدر سجلاته هذا الجدول

وبه هذا الحقل

فاستخدم الكود التالي في زر أمر مثلاً :

Dim NomberMax As Long
Dim msg1 As String
Dim msg2 As String
Dim MainMsg As String

NomberMax = Nz(DMax("[field1]", "tbl1"), 0)

If NomberMax = 0 Then
    MsgBox " لم تضع رقماً في هذا الحقل .. يمكنك البدء برقم ثم الزيادة فيه تلقائياً"
    Me.field1.SetFocus
Else
    msg1 = "آخر رقم تمت إضافته هو  : " & Chr(10) & "(" & NomberMax & ")"
    msg2 = " هل تريد إضافة سجل جديد بالرقم الذي يليه"
   MainMsg = MsgBox(msg1 & Chr(10) & msg2, vbYesNo, CurrentProject.Name)
    If MainMsg = vbNo Then
         Exit Sub
     Else
         DoCmd.GoToRecord , , acNewRec
         Me.field1 = NomberMax + 1
     End If
End If
#8

ضع خلف في نهاية كود الاضافه الخاص بزر "اضافة" العبارة التالية :

Forms![form1]![num].Value =Forms![form1].Count

العراق - البصرة

#9

شكرا لك ولكن الكود ينفذ مرتان ثم يعطيني الخطأ التالي

اقتباس
Run-time error  '2105':

لا يمكنك الذهاب الى السجل المحدد

ولو سمحت أول مره بشغل البرنامج أريد أن يقوم بوضع الرقم 100

1+1=10

#10

شكرا لكم لا داعي للاجابه لقد وجدت الحل

ولكن هل من أحد يدلني كيف استطيع عمل زر بمجرد الضغط عليه يفتح لي فورم جديد

1+1=10

#11
Ayah كتب:
شكرا لكم لا داعي للاجابه لقد وجدت الحل

ولكن هل من أحد يدلني كيف استطيع عمل زر بمجرد الضغط عليه يفتح لي فورم جديد

الحمد الله انك وصلت للحل ....ولكن نريد ان نستفيد ....اذا امكن وضع الكود.....

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

تحياتى لكم جميعا

#12
alibukheet كتب:
ضع خلف في نهاية كود الاضافه الخاص بزر "اضافة" العبارة التالية :

Forms![form1]![num].Value =Forms![form1].Count

اخي العزيز alibukheet انا اسف جدا علي ازعاجك لانى تعبتك معي ....لكن للأسف لم تظبط معي

#13

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

project.rar

1+1=10

#14

اخي shrsm ارفق الملف الذي تريد معالجته حتى نستطيع تعديله مع اجراء الاختبار لكي يكون لدينا موضوع عملي مجرب . و ليس هناك اي ازعاج وهذا جزء بسيط من رد الجميل للمنتدى و اعضائه الذين لم يألون جهدا في اثراء معلوماتنا .

العراق - البصرة

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…