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

كيف اعمل توليد رقم عشوائي لكل سجل

مغلق
بدأه مفتون في 30 مارس 2006 · 9 رد · 3,285 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

يوجد لدي فرضا قاعده بسيطه ولتكن بنك

واريد ان اولد رقم عشوائي لكل سجل وهو عباره عن الرقم السري الخاص لهذا العميل في هذا السجل

بحيث لا يتكرر الرقم مع اكثر من عميل

ولا يقل عن 5 ارقام ولا يزيد مثلا عن 9 ارقام

هذا وشكرا جزيلا

تم تعديل هذه المشاركة بواسطة مفتون في 30 مارس 2006 في 18:18

#3

شكرا ولكن لم اجد ما يحل مشكلتي

هذا البرنامج انظر اليه

عندما تضغط اضافه اريد ان يأتي في الحقل رقم عشوائي على طول

________________.zip

#4

اخي الفاضل

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

هل هذا فيروس ام ماكرو

14_04_06_02_09_35_1145048975pro.gif

الرجاء وضع ملف جديد

#5

الفكره هو لو انه عندي جدول اسمه جدول1 يحتوي على

الرقم

الاسم

كلمه المرور

والنموذج عادي جدا

الذي اريده هو فقط تلقائيا يأتي في حقل كلمه المرور رقم عشوائي ويكون مكون من خمس ارقام او اربع او ست وهكذا

والف شكر

#6

اخي الفاضل

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

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

الوحدات النمطية

طريقة استخدام الدالة

1. انشىء جدول وضع به الحقول المطلوبه ومن ضمنها الحقل المراد ان يكون ترقيم عشوائي سنختار مثلا حقل اسمه txtPassword

ونوعه نص ( يجب ان يكون نص فقط لا تحاول جعله رقم او ترقيم تلقائي )

2. انشىء نموذج مبني على الجدول

3. في النموذج ضع في حدث الحالي هذا الكود

Private Sub Form_Current()
If Me.NewRecord = True Then
Me!txtPassword = fnAutoField()
End If
End Sub

4. انشىء وحدة نمطية جديده وضع بها هذه الوظيفة

Function fnAutoField() As String
 Dim strRndNo As String
10:
 strRndNo = Format((999999 * Rnd) + 1, "000000")
 If DCount("*", "tblTable", "txtPassword='" & strRndNo & "'") > 0 Then GoTo 10
 fnAutoField = strRndNo
End Function

شرح الكود في النموذج

في الكود الموجود في النموذج في حدث الحالي نلاحظ انه عند اضافة سجل جديد وتكون قيمته صحيحة يتم استدعاء الوظيفة من الوحدة النمطية بحيث ان قيمة الحقل المطلوب وهو txtPassword يصبح مساويا لما ستنتجه الوظيفة من رقم عشوائي مكون من ستة ارقام ( حسب طلبك في المشاركة ) وتم اضهاره مباشرة في النموذج وتخزينه في الجدول .

شرح الوظيفة في الوحدة النمطية

مهمة هذه الوظيفة انتاج عدد لا نهائي من الارقام العشوائية فيما لو لم نقم بالتحكم بها ( وبناء على طلبك في المشاركة ) فقد تم التحكم بعدد

محصور بين 000000 ( ستة اصفار ) و 999999 ( ستة تسعات ) طبعا لك ان تتخيل الارقام الناتجة بين هذين العددين وطبعا تستطيع

ايصال عدد السجلات الى مائة مليار لو قمت بزيادة الارقام في الاعداد في كلا الطرفين لهذا فإن المسئول عن هذه العملية هي دالة Rnd

اختصارا لكلمة Random اي عشوائي كما ان الدالة DCount وقعت تحت شرط معين هي وجوب ان يكون الرقم العشوائي اكبر من

الصفر لهذا فإنه يتم تفعيل الوظيفة بحيث ان الصيغة strRndNo تساوي الوظيفة fnAutoField

وهذا مثال على ذلك

zaRandomAutoNumber.rar

تم تعديل المرفق السابق

اختكم

زهره

تم تعديل هذه المشاركة بواسطة zahrah في 16 أبريل 2006 في 05:26

1
#7

شكرا والله لقد درست البرنامج يومين كاملين الى ان فهمت العمليه الف شكر

جزاكي الله كل خير

1
#8

الى الأخت Zahrah

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

الكود جميل جدا ولكن هل من طريقه نعمله غير عشوائى اعني تسلسلي ؟

مثل على ذالك

000001

000002

او يبدا من 1و2و3 وهكذا ؟

الرجاء التكرم بالأجابه ولك جزيل الشكر والتقدير

محمد

#9

اخي الفاضل vbnt

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

/index.php?showtopic=97205

لكي تصبح الارقام بالتنسيق المطلوب

000001

000002

000003

فإعرض الجدول في وضع التصميم واختر الحقل ID ثم انظر اسفل في خصائص الحقل وضع التنسيق على 000000 ( ستة اصفار )

ايضا اعرض النموذج في وضع التصميم واختر خصائص الحقل ID وضع تنسيق الحقل على 000000 ( ستة اصفار )

وهذا هو المثال السابق من رابط المشاركه بعد التعديل

AutoNumber2006.rar

اختكم

زهره

تم تعديل هذه المشاركة بواسطة zahrah في 8 يونيو 2006 في 17:11

1
#10

اشكر الأخت زهره على سرعة الرد

ادعوا لك بالتوفيق وحسن العاقبه

بارك الله لك واحسنت

محمد

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

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