اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

قام بنشر

محتاج موديول يطبق في استعلام يقوم بتقسيم رقم علي 6 أعمدة

بشرط في العمود الأول لا يزيد عن 20 ولا يقل عن 2

و في العمود الثاني لا يزيد عن20 ولا يقل عن 2

و في العمود الثالث لا يزيد عن 20 ولا يقل عن 2

و في العمود الرابع لا يزيد عن 20 ولا يقل عن 2

و في العمود الخامس لا يزيد عن 10 ولا يقل عن 2

و في العمود السادس لا يزيد عن 5 ولا يقل عن 2

ولكم جزيل الشكر ووافر الاحترام

ss (2Saad-1).rar

قام بنشر

جرب الكود التالى 
 

Public Function DivideIntoColumns(totalNumber As Integer, columnIndex As Integer) As Integer
    Static result(1 To 6) As Integer
    Static lastNumber As Integer
    Dim remaining As Integer
    Dim i As Integer
    Dim randNum As Integer

    ' حدود الأعمدة
    Dim maxLimits(1 To 6) As Integer
    maxLimits(1) = 20
    maxLimits(2) = 20
    maxLimits(3) = 20
    maxLimits(4) = 20
    maxLimits(5) = 10
    maxLimits(6) = 5

    ' Reset results if the input number changes
    If lastNumber <> totalNumber Then
        lastNumber = totalNumber
        remaining = totalNumber

        ' Initialize the result array to zero
        For i = 1 To 6
            result(i) = 0
        Next i

        ' Step 1: Ensure each column has at least 2
        For i = 1 To 6
            If remaining >= 2 Then
                result(i) = 2
                remaining = remaining - 2
            End If
        Next i

        ' Step 2: Distribute remaining values randomly while respecting max limits
        Randomize
        While remaining > 0
            i = Int((6) * Rnd) + 1 ' Random column (1 to 6)

            ' Check if the column can accept more values without exceeding its max limit
            If result(i) < maxLimits(i) Then
                randNum = IIf(remaining > maxLimits(i) - result(i), maxLimits(i) - result(i), remaining)
                result(i) = result(i) + randNum
                remaining = remaining - randNum
            End If
        Wend
    End If

    ' Return the value for the requested column
    DivideIntoColumns = result(columnIndex)
End Function

والاستعلام سوف يكون بناء على الكود كالتالى 
 

SELECT Table1.MyNum, 
        DivideIntoColumns([MyNum],1) AS Col1, 
        DivideIntoColumns([MyNum],2) AS Col2, 
        DivideIntoColumns([MyNum],3) AS Col3, 
        DivideIntoColumns([MyNum],4) AS Col4, 
        DivideIntoColumns([MyNum],5) AS Col5, 
        DivideIntoColumns([MyNum],6) AS Col6
FROM Table1;

 

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