يوجد لدي فرضا قاعده بسيطه ولتكن بنك
واريد ان اولد رقم عشوائي لكل سجل وهو عباره عن الرقم السري الخاص لهذا العميل في هذا السجل
بحيث لا يتكرر الرقم مع اكثر من عميل
ولا يقل عن 5 ارقام ولا يزيد مثلا عن 9 ارقام
هذا وشكرا جزيلا
يوجد لدي فرضا قاعده بسيطه ولتكن بنك
واريد ان اولد رقم عشوائي لكل سجل وهو عباره عن الرقم السري الخاص لهذا العميل في هذا السجل
بحيث لا يتكرر الرقم مع اكثر من عميل
ولا يقل عن 5 ارقام ولا يزيد مثلا عن 9 ارقام
هذا وشكرا جزيلا
تم تعديل هذه المشاركة بواسطة مفتون في 30 مارس 2006 في 18:18
أخي العزيز
اليك بعض الروابط عن نفس الموضوع
شكرا ولكن لم اجد ما يحل مشكلتي
هذا البرنامج انظر اليه
عندما تضغط اضافه اريد ان يأتي في الحقل رقم عشوائي على طول
اخي الفاضل
ملفك معطوب او ان به مشكلة فلم نستطع فتحه وتظهر هذه الرسالة وتقوم بتعليق الجهاز ثم اطفاؤه
هل هذا فيروس ام ماكرو

الرجاء وضع ملف جديد
الفكره هو لو انه عندي جدول اسمه جدول1 يحتوي على
الرقم
الاسم
كلمه المرور
والنموذج عادي جدا
الذي اريده هو فقط تلقائيا يأتي في حقل كلمه المرور رقم عشوائي ويكون مكون من خمس ارقام او اربع او ست وهكذا
والف شكر
اخي الفاضل
السلام عليكم ورحمة الله وبركاته
طبعا كما تعلم ان الترقيم العشوائي يتم تحديده من قبل الاكسيس ولا يمكن التحكم به الا برمجيا لهذا تم عمل دالة الترقيم العشوائي تجدها في
الوحدات النمطية
طريقة استخدام الدالة
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
وهذا مثال على ذلك
تم تعديل المرفق السابق
اختكم
زهره
تم تعديل هذه المشاركة بواسطة zahrah في 16 أبريل 2006 في 05:26
شكرا والله لقد درست البرنامج يومين كاملين الى ان فهمت العمليه الف شكر
جزاكي الله كل خير
الى الأخت Zahrah
السلام عليكم ورحمة الله وبركاته
الكود جميل جدا ولكن هل من طريقه نعمله غير عشوائى اعني تسلسلي ؟
مثل على ذالك
000001
000002
او يبدا من 1و2و3 وهكذا ؟
الرجاء التكرم بالأجابه ولك جزيل الشكر والتقدير
محمد
اخي الفاضل vbnt
نعم يمكن عمل ذلك واليك الرابط مشروحه به الطريقه مع ملف مرفق
لكي تصبح الارقام بالتنسيق المطلوب
000001
000002
000003
فإعرض الجدول في وضع التصميم واختر الحقل ID ثم انظر اسفل في خصائص الحقل وضع التنسيق على 000000 ( ستة اصفار )
ايضا اعرض النموذج في وضع التصميم واختر خصائص الحقل ID وضع تنسيق الحقل على 000000 ( ستة اصفار )
وهذا هو المثال السابق من رابط المشاركه بعد التعديل
اختكم
زهره
تم تعديل هذه المشاركة بواسطة zahrah في 8 يونيو 2006 في 17:11
اشكر الأخت زهره على سرعة الرد
ادعوا لك بالتوفيق وحسن العاقبه
بارك الله لك واحسنت
محمد
هذا الموضوع مغلق.