اذهب الي المحتوي
أوفيسنا

توليد ارقام عشوائيه


TQTHAMI
إذهب إلى أفضل إجابة Solved by د.كاف يار,

الردود الموصى بها

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

تقبل الله من ومنكم صالح الاعمال

لدي طلب وهو عند الضغط على امر التوليد

يظهر في الحقول من ((  1  -  32  ))  

من الرقم المدخل في حقل الرقم الاول  الى الرقم المدخل في حقل الرقم الاخير

ارقام عشوائيه غير مكرره

توليد رقم عشوائي.accdb

رابط هذا التعليق
شارك

في اشكالية بسيطه بارك الله فيك

وهي انه عند التوليد يضع ارقام اقل من الموجوده في حقل الرقم الاول 

ونفس الشي اكبر من الرقم الاخير  مثال وضعت رقم 370 في الرقم الاول و 900 في الرقم الاخير 

يظهر ارقام اقل واكبر من مابين الحقلين

رابط هذا التعليق
شارك

الان, TQTHAMI said:

في اشكالية بسيطه بارك الله فيك

وهي انه عند التوليد يضع ارقام اقل من الموجوده في حقل الرقم الاول 

ونفس الشي اكبر من الرقم الاخير  مثال وضعت رقم 370 في الرقم الاول و 900 في الرقم الاخير 

يظهر ارقام اقل واكبر من مابين الحقلين

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

مثلا متسلسلة

Int(Rnd()) + 1

 

  • Thanks 1
رابط هذا التعليق
شارك

نفس الشي يزيد عن الرقمين 

لو تحطه بين رقمين ثابته مثال  1 الى 30 فقط

الهدف من هذ هو عيدية الابناء وابناء الاخوه والخوات وغيرهم 

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

وتقبل تحياتي واكثرة الطلب 

رابط هذا التعليق
شارك

  • أفضل إجابة
15 دقائق مضت, TQTHAMI said:

نفس الشي يزيد عن الرقمين 

لو تحطه بين رقمين ثابته مثال  1 الى 30 فقط

الهدف من هذ هو عيدية الابناء وابناء الاخوه والخوات وغيرهم 

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

وتقبل تحياتي واكثرة الطلب 

 

الآن فهمت انك تحتاج توليد الرقم داخل نطاق الرقمين

اتفضل التعديل

 

توليد رقم عشوائي.accdb

  • Like 3
رابط هذا التعليق
شارك

 

ويعجز اللسان عن شكرك 

اتعبتك معي لكن نسال الله ان بارك لك الله في أهلك وفي مالك ويرفع لك منزلتك بين خلقه ويجعل لك الخير في يومك وفي سائر أيامك إن شاء الله.

رابط هذا التعليق
شارك

وعليكم السلام 🙂

 

اكتب كلمة Randomize في مساعد الاكسس ، وستحصل على الجواب:

image.png.84366cfebb0b5d6ff1453baa97598d25.png

.

ولا تستخدم علامة الناقص في اسماء كائناتك (بل استعمل الشرطه السفليه _ ) ، لأنها في الكود تصبح :

image.png.1c06060e4ecab9815f8e2f857c1dc6fc.png

.

فتضطر الى معالجته بوضع اسم الكائن بين [] :

image.png.69060e0079ca025e34d31a48ea7f250b.png

.

 

ولا تستخدم الارقام في تسمية الحقول ، فالاسم لا يظهر في الكود VBE ، مثلا انا طلب الحقل الذي اسمه 1 ، ولكن الكود لا يراه :

image.png.43612d36d81ea0a7009789c812394b8b.png

.

ولاحظ ان اخي حسين لم يتعامل مع حقل النموذج مباشرة ، بل تعامل مع الجدول 🙂

 

 

وعليه ، وحتى نتعامل مع حقل النموذج ، يصبح الكود :

Private Sub cmd_Generate_Random_Click()

    Dim i As Integer
    Dim f As Integer
    Dim e As Integer
    
    'ÇÍÝÙ ÓÌá ÇáäãæÐÌ
    If Me.Dirty Then Me.Dirty = False
    
    f = Me.[f-no]
    e = Me.[e-no]
    
    
    For i = 1 To 32
    
Try_Again:

        Dim MyValue
        Randomize Timer

        MyValue = Int((e * Rnd) + f)
             
        
        If MyValue < f Or MyValue > e Then
            GoTo Try_Again
        Else
             Me("[" & i & "]") = MyValue
        End If
        
    Next i
    
End Sub

.

 

جعفر

  • Like 1
رابط هذا التعليق
شارك

شكرا جزيلا اخوي حسام انك نبهتنا لخطأ التكرار ، واللي صعب معرفته غير انك تجعل الارقام من 1 الى 32 🙂

 

هذا تعديل الكود حقي :

Private Sub cmd_Generate_Random_Click()

    Dim i As Integer
    Dim j As Integer
    Dim f As Integer
    Dim e As Integer
    
    Dim t As Single
t = Timer
    'احفظ سجل النموذج
    If Me.Dirty Then Me.Dirty = False
    
    f = Me.[f-no]
    e = Me.[e-no]
    
    For i = 1 To 32: Me("[" & i & "]") = 0: Next i
    For i = 1 To 32
    
Try_Again:

        Dim MyValue
        Randomize Timer

        MyValue = Int((e * Rnd) + f)
             
             
        '1. No Duplicates
        For j = 1 To i
            If Val(Me("[" & j & "]")) = MyValue Then GoTo Try_Again
        Next j
        
        '2 Smaller than, Or Greater than
        If MyValue < f Or MyValue > e Then
            GoTo Try_Again
        Else
             Me("[" & i & "]") = MyValue
        End If
        
    Next i
Debug.Print Timer - t
End Sub

.

وتلاحظ اني حسبت الوقت اللي الكود يأخذه في عمل اللازم ، ويمكن مقارنة سرعة الكود هذا مع كود اخوي حسين واخوي حسام 🙂

 

جعفر

  • Like 1
  • Thanks 1
رابط هذا التعليق
شارك

عظيم الشكر والامتنان لكل

1-  د.كاف يار  راعي الاوله مايلح (مثل يعبر عن من سبق الكل)

2- jjafferr (ماشاء الله عليك لكن انا مبندي فعمل ماذكرت صعب علي )

3-husamwahab    (مثالك في قمت الروعه) 

من ساهم في مساعدتي أو  مر على موضوعي ولم يتمكن من المساعده

كلمه الشكر لا تفيكم حقكم ولا تعبر مدى امتناني لكم والشكر لكافة اعضاء المنتدى

 

كل عام وانتم دائماً بخير بمناسبة عيد الأضحي وجعل الله عيدكم فرحة وسعادة.

  • Like 1
رابط هذا التعليق
شارك

منذ ساعه, TQTHAMI said:

انا مبندي فعمل ماذكرت صعب علي

حياك الله 🙂

انا وضعت لك الكود جاهز ولا يحتاج تفكير في التطبيق ، بس اسم زر امر توليد الارقام ، اسمه cmd_Generate_Random ، وهذا كود الحدث ، والسلام 🙂

 

جعفر

  • Thanks 1
رابط هذا التعليق
شارك

عندما يظهر الرقم المشابه لرقم المحدد يحتاج بحث بالنظر عن الرقم سويت قاعدة اف لكن تحتاج الى 32 مره

علشان اذا اخترت رقم نثلا 12 وطلع في الحقول التي يزرع فيها الارقام العشولئيه يصير الون واحد مثلا احمر اوغيره

واكيد ان فيه اختصار بدل دالة اف 

WhatsApp Image 2021-07-19 at 8.33.44 PM.jpeg

توليد ارقام.accdb

رابط هذا التعليق
شارك

 

اسماء الحقول اصبحت C1 و C2 و C3 ،

واعمل خلفيتهم باللون الذي تحب ،

وعند حدث بعد التحديث ، سيتم اختيار المربع الذي يحمل نفي الرقم ، بنفس لون الخلفية:

image.png.fe775500c5dcb948c86b780d75361a15.png

استعمل هذا الكود :

Private Sub Select_it(ctl As Control)

    For i = 1 To 32
    
        If Me("[" & i & "]") = Me(ctl.Name) Then
        
            Me("[" & i & "]").BackColor = Me(ctl.Name).BackColor
             
        End If
        
    Next i
    
End Sub

Private Sub C1_AfterUpdate()

    Call Select_it(C1)
End Sub

Private Sub C2_AfterUpdate()

    Call Select_it(C2)
End Sub

Private Sub C3_AfterUpdate()

    Call Select_it(C3)
End Sub

.

جعفر

 

1402.1.Random Numbers.accdb.zip

  • Like 3
رابط هذا التعليق
شارك

أتمنى من الله عز وجل أن يعطيكم الصحة والعافية، شكراً لكم على ما قدمتموه لي ودام الله عزّكم ودام عطائكم.

لي ولغيري 

نعم يستحق الموقع الشكر بالرجال القائمين عليه 

كل عام وانتم دائماً بخير بمناسبة عيد الأضحي وجعل الله عيدكم فرحة وسعادة.

 

رابط هذا التعليق
شارك

9 ساعات مضت, jjafferr said:

 

اسماء الحقول اصبحت C1 و C2 و C3 ،

واعمل خلفيتهم باللون الذي تحب ،

وعند حدث بعد التحديث ، سيتم اختيار المربع الذي يحمل نفي الرقم ، بنفس لون الخلفية:

image.png.fe775500c5dcb948c86b780d75361a15.png

استعمل هذا الكود :

Private Sub Select_it(ctl As Control)

    For i = 1 To 32
    
        If Me("[" & i & "]") = Me(ctl.Name) Then
        
            Me("[" & i & "]").BackColor = Me(ctl.Name).BackColor
             
        End If
        
    Next i
    
End Sub

Private Sub C1_AfterUpdate()

    Call Select_it(C1)
End Sub

Private Sub C2_AfterUpdate()

    Call Select_it(C2)
End Sub

Private Sub C3_AfterUpdate()

    Call Select_it(C3)
End Sub

.

جعفر

 

1402.1.Random Numbers.accdb.zip 57.38 kB · 2 downloads

 

سؤال هل هناك خلل!

image.png.fe775500c5dcb948c86b780d75361a15.png

ارى الرقم 52 باللون الأصفر والذي يقابله الرقم 40 باللون الأصفر، لماذا؟!

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information