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

توزيع حمولات السيارات

بدأه KhalidMurad في 23 أكتوبر 2013 · 29 رد · 1,523 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

إلى جميع الخبراء

لدي مشكلة شيبت راسي ,, نريد الدعم  :ph34r:

 

 

لدينا في جدول 1

المجموعة | اسم السيارة | عدد مرات حمولة 20 طن | عدد مرات حمولة 7 طن |

 

و في جدول 2

المجموعة | التاريخ | حمولة 20 طن | حمولة 7 طن 1 | حمولة 7 طن 2 |

 

 

نريد ارسال حمولة 20 طن مرة واحدة يوميا ً على حسب المرات المحددة بالجدول

ونريد أيضا ارسال حمولة 7 طن مرتين يوميا ً على حسب المرات المحددة بالجدول

 

 

القواعد

في الشهر الواحد

القدرة باليوم الواحد في التحميل 

20 طن مرة واحدة

7 طن مرتين

 

يمكن تحميل 20 طن مرة "و" 7 طن مرتين باليوم الواحد

و يمكن تحميل 7 طن مرة واحدة باليوم "أو" مرتين "بدون" تحميل 20 طن

أو مرة واحدة فقط 7 طن "أو" 20 طن

 

وكل ذلك لايتم تجاوز عدد المرات المحددة بالجدول

 

 

طريقة عمل البرنامج

يتم تحديد تاريخين في النموذج البداية و النهاية

و تحدد أيام الإجازة الأسبوعية

و أيضا ً يتم تحديد تاريخ إجازة خاصة بالتاريخ بحيث لا يتم تحميل أي شئ في ذالك اليوم مثل الاجازة الاسبوعية

 
 

المطلوب

على حسب المجموعة ( كود يتم اضافة جميع الأيام بين التاريخين في جدول 2 و يوزع أسماء السيارات بشكل عشوائي في الجدول على حسب الحمولة المحددة تحت عمود الحمولة

يوضع اسم السيارة بحيث لا يتم تكرار حمولتين مثلا ً "تحميل 20 طن باليوم الواحد مرتين" ولا يتم تحميل أكثر من المحدد خلال التاريخين المحددين بالنموذج ).

 

وإذا يوجد طريقة أخرى بحيث في المستقبل إذا استطاعوا في تحميل حمولتين 20 طن في اليوم الواحد و 3 حمولات 7 طن يتم تحديدها في جدول 0 (القدرة)  ^_^

 

و في المثال تفهمها أكثر  :rolleyes:

 

أشكركم مقدما ً

ولمن يجد لي ضالتي مع الشرح سأعطيه يوزر Hotfile بعضوية امتياز جديدة ينتهي تاريخ 2013-11- 15 

لحق قبل الانتهاء

 

post-278203-0-64960700-1382521404_thumb.

 

db.zip

 

#2

يا جماعة الخير 

أين الجميع

أين العباقرة

 

الأستاذه زهرة ,, نرجو منك المساعده

#3

أين الجميع

أيعقل بأن لا احد يستطيع فعله

#4

المحاولة الأولى في إضافة جميع التواريخ التي تم تحديدها في النموذج

 

وهذه هي الكود

Private Sub Command23_Click()
Dim GroupNumber, xdays, i, x As Integer
Dim xDate, LDate As Date
Dim xSQL As String
Dim frxbool, spdatexbool As Boolean
Dim xStringArr(90) As String

GroupNumber = Me.TGroup.Value
xDate = Me.TFrom.Value
LDate = Me.TTo.Value
xdays = DateSerial(Year(LDate), Month(LDate), Day(LDate)) - DateSerial(Year(xDate), Month(xDate), Day(xDate))

DoCmd.SetWarnings False
xSQL = "DELETE * From TB2"
DoCmd.RunSQL xSQL

'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\=======//////////////////////////////////////////////
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\=======//////////////////////////////////////////////
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\=======//////////////////////////////////////////////
For x = 0 To xdays
LDate = DateSerial(Year(xDate), Month(xDate), Day(xDate) + x)
'========
frxbool = True
For i = 0 To Me.LWeekday.ListCount - 1
If Int(Me.LWeekday.ItemData(i)) = Weekday(LDate) Then
frxbool = False
End If
Next
'========
spdatexbool = True
For i = 0 To Me.LSpecialDate.ListCount - 1
If Format(Me.LSpecialDate.ItemData(i), "MM/DD/YYYY") = Format(LDate, "MM/DD/YYYY") Then
spdatexbool = False
End If
Next
'========
If frxbool = False Then
GoTo nexts
ElseIf spdatexbool = False Then
GoTo nexts
End If
xSQL = "INSERT INTO TB2 ( [Group], MyWDate ) VALUES(" & GroupNumber & ", #" & Format(LDate, "MM/DD/YYYY") & "# )"
DoCmd.RunSQL xSQL
nexts:
Next
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\=======//////////////////////////////////////////////
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\=======//////////////////////////////////////////////
DoCmd.SetWarnings True

End Sub

يضيف جميع الأيام بين تاريخين ماعدا الأيام المحددة أنها اجازة بمربع القائمة في النموذج

 

و حتى الآن لا أحد يساعد   <_<

على الأقل عطونا وجه أو أي رد :angry:   <_<

db.zip 

#5

سأوفيكم محاولاتي

 

أضفت هذه الكود لفتح الجدول وأخذ أسماء السيارات وعدد المرات

ولكن بقي كيف ...يسبلسيلاتشثفاتاي  :wacko:  :wacko:  :wacko:  :wacko:

وصلت لطريق مسدود  :tbcry:

Private Sub NewRnd_Click()
Dim countitem, GroupNumber, x, i, f, xf, s, xs, d, xd As Integer
Dim item(1 To 90), myItem(1 To 90) As String
Dim iTL(1 To 90) As String
Dim iSL1(1 To 90) As String
Dim iSL2(1 To 90) As String
Dim xRower, xSQL As String
Dim tMax, tMin As Long
Dim RS As Recordset
GroupNumber = Me.TGroup.Value

xSQL = "SELECT * FROM TB1 "
Set RS = CurrentDb.OpenRecordset(xSQL)

If Not RS.EOF Then
    RS.Filter = "[Group] = " & GroupNumber
        Set RS = RS.OpenRecordset
            With RS
                Do While Not .EOF
                    .MoveFirst
                    countitem = .RecordCount
                        For x = 1 To countitem
                            item(x) = .Fields("LName").Value
                            f = .Fields("TL").Value
                            s = .Fields("TS").Value
                            d = IIf((f * 1) > (s * 2), (f * 1), (s * 2)) ' number of work days to this item(X)
                            For xd = 0 To d
                            'some code to repeat ;-(
                            ' XXXXXXXXXXXXXXXXXXXXX
                            'XXX/  XXXXXXXXXXX  \XXX
                            'XXX|__XXXXXXXXXXX__|XXX
                            'XXXXXXXXXXXXXXXXXx xXXX
                            'XXXXXXXXXXXXXXXXXXXXXXX
                            'XXX   ___________   XXX
                            'XXX _/XXXXXXXXXXX\_ XXX
                            'XXXxxxXXXXXXXXXXXxxxXXX
                            ' XXXXXXXXXXXXXXXXXXXX
                            Next
                            
                            If f > 0 Then
                                For xf = 1 To f
                                    
                                    
                                Next
                            End If
                            'anything
                            .MoveNext
                        Next
                Loop
            End With
    For i = 1 To UBound(item)
        xRower = xRower & item(i) & ";"
    Next
End If
    Me.List4.RowSource = xRower
End Sub

وأرفق لكم نسخة db.zip

 

يا أهل الخبرة ياناس تكفون أعطونا حل

أملي بالله ثم فيكم

#6

For i = 1 To UBound(item)
xRower = xRower & item(i) & ";"
Next
End If
Me.List4.RowSource = xRower
End Sub

 

الجزئية الأخيرة للتجربة في ليست بوكس 

#7

إضافة كود وضع اسماء السيارات بعدد المرات المحددة في الجدول 1 إلى جدول 3 , فقط TL و المشكلة كيف يتم إضافة عدد مرات TS وكيف يكون التعامل لتوزيعهم بالتاريخ 

Private Sub NewRnd_Click()
' ÇáßæÏ ÇáÞÏíã Êã ÍÝÙå Ýí ÇáÜ Module1


Dim countitem, GroupNumber, x, i, f, xf, s, xs, d, xd As Integer
Dim xRower, xSQL, xSQLT As String
Dim tMax, tMin As Long
Dim RS, RST As Recordset
GroupNumber = Me.TGroup.Value

xSQL = "SELECT * FROM TB1 "
xSQLT = "SELECT * FROM TB3 "

Set RS = CurrentDb.OpenRecordset(xSQL)
Set RST = CurrentDb.OpenRecordset(xSQLT)

If Not RS.EOF Then
    RS.Filter = "[Group] = " & GroupNumber
        Set RS = RS.OpenRecordset
            With RS
                Do While Not .EOF
                    .MoveFirst
                    
                    countitem = .RecordCount
                        For x = 1 To countitem
                            f = .Fields("TL").Value
                            For i = 1 To f
                            RST.AddNew
                            RST.Fields("F1").Value = .Fields("LName")
                            RST.Update
                            Next
                            'anything
                            .MoveNext
                        Next
                Loop
            End With
    
End If

RS.Close
RST.Close
Set RS = Nothing
Set RST = Nothing

 End Sub

 وهذه المرفق 

db.zip

#8

وعليكم السلام :)

 

عندي بعض الاسئلة ، وانا انزلت المرفق مع موضوعك الاصلي ، ولم انزل المرفقات التاليه له.

 

انت قلت:

نريد ارسال حمولة 20 طن مرة واحدة يوميا ً على حسب المرات المحددة بالجدول

ونريد أيضا ارسال حمولة 7 طن مرتين يوميا ً على حسب المرات المحددة بالجدول

هل معناه ان نأخذ عدد المرات من الجدول1 ، ثم نكررها في الجدول2 ، صح؟

هل العملية لكل السيارات في الجدول1 ، بين فترتي التاريخ من-الى الذي في النموذج؟

 

وكل ذلك لايتم تجاوز عدد المرات المحددة بالجدول

اي جدول ، واي حقل؟

 

جعفر

1
#9

آسف جدا على التأخير

 

اقتباس

 

 

هل معناه ان نأخذ عدد المرات من الجدول1 ، ثم نكررها في الجدول2 ، صح؟

صح 

نضع اسم السيارة بعدد مراتها 

 

اقتباس

 

 

هل العملية لكل السيارات في الجدول1 ، بين فترتي التاريخ من-الى الذي في النموذج؟

نعم

 

اقتباس

 

اي جدول ، واي حقل؟

 

عدد المرات المحددة بالجدول 1

يتم وضعها في الجدول 2 أرفق لك مثال بالصورة ان شاءالله

#11

سؤال لو سمحت :)

 

الصورة التالية للجدول:

post-273849-0-76384200-1383150788.jpg

 

هل هذا معناه ان هناك:

3 شاحنات تويوتا تحمل 20 طن ، و3 شاحنات تويوتا تحمل 7 طن ،

1 شاحنه مرسيدس تحمل 20 طن ، و7 شاحنات مرسيدس تحمل 7 طن ،

 

اذا كان كذلك ، فالافضل ان نغير الجدول الى الطريقة التالية:

post-273849-0-72449800-1383153764.jpg

 

واذا مفهومي غلط ، فلوسمحت اشرح لي اكثر عن هذا الجدول.

 

 

اما الجدول الثاني ، فرجاء ان تشرح لي كيف وزعت الشاحنات على الايام؟

post-273849-0-75805800-1383150802.jpg

 

وارى من الافضل ان يكون الجدول هكذا:

post-273849-0-69491100-1383153778.jpg

 

جعفر

تم تعديل هذه المشاركة بواسطة jjafferr في 30 أكتوبر 2013 في 20:23

1
#12

يا هلا أخ جعفر

 

طريقتك رائعة ولكن انظر 

اقتباس

 

وارى من الافضل ان يكون الجدول هكذا:

post-273849-0-69491100-1383153778.jpg

 

 

مرسيدس 1 مكررة مرتين

اذا طريقتك لن يسمح بتكرار , فهذا هو المطلوب

و أرى إذا نستطيع بعشوائية وضع 20 و 7 أو 20 فقط أو 7 و 7 أو 20 و 7 و 7 بتاريخ واحد

 

بالنسبة 

اقتباس

 

اما الجدول الثاني ، فرجاء ان تشرح لي كيف وزعت الشاحنات على الايام؟

post-273849-0-75805800-1383150802.jpg

 

 

هذا هو المطلوب

ولكن لا يهم أريد طريقتك مثل ما ذكرته لك

وجزيت خيرا 

أشكرك من أعماق قلبي

#13

اسمح اخي خالد ، ورد على سؤالي لوسمحت:

اما الجدول الثاني ، فرجاء ان تشرح لي كيف وزعت الشاحنات على الايام؟

 

وهل معنى كلامك ان عندك 14 شاحنة ، 4 منها تحمل 20 طن و 10 تحمل 7 طن؟

 

جعفر

 

مرسيدس 1 مكررة مرتين:

لا وانت الصادق ، هي في يومين مختلفين ، ولان ما عندك الا مرسيدس واحد 20 طن (طبعا على حسب فهمي) :)

تم تعديل هذه المشاركة بواسطة jjafferr في 30 أكتوبر 2013 في 22:22

1
#14

أريد أن يكون عشوائي ليس مرتبة مسبقا

 

مثلا التاريخ

 

الأفضل و المطلوب ان يكون مثلا

 

من 2013/10/01 حتى 2013/11/15

تويوتا 1 20

تويوتا 2 7

مرسيدس 1 20

 

الناتج يكون

2013/10/09 تويوتا 1 20

2013/10/27 مرسيدس 1 20

2013/11/10 تويوتا 2 7

وهكذا

 

 

و اذا كانت

 

من 2013/10/01 حتى 2013/10/02

تويوتا 1 20

تويوتا 2 7

مرسيدس 1 20

 

الناتج يكون

2013/10/01 تويوتا 1 20

2013/10/01 مرسيدس 1 20

2013/11/03 تويوتا 2 7

وهكذا

#15

والله يخليك اشرح لي:

 

و أرى إذا نستطيع بعشوائية وضع:

20 و 7

أو 20 فقط

أو 7 و 7

أو 20 و 7 و 7 بتاريخ واحد

1
#16

أرجوك ركز معي

وزعت

من تاريخ الى تاريخ محددين

 

في المرة الواحدة

سيارة س 20 طن 4 مرات

سيارة س 7 طن 2 مرة

 

بين التاريخين بعشوائية تم وضع على حسب قانون انه لا يجب تكرار س 20 طن أكثر من 4 مرات لبن التاريخين & القدرة المحددة 20 طن 1 مرة بتاريخ واحد و 7 طن 2 مرة بتاريخ واحد ولذلك لا يجب تكرار س 20 طن أكثر من 1 مرة بتاريخ واحد 

#17
اقتباس

 

والله يخليك اشرح لي:

 

و أرى إذا نستطيع بعشوائية وضع:

20 و 7

أو 20 فقط

أو 7 و 7

أو 20 و 7 و 7 بتاريخ واحد

 

 

مثلا

لنعرف أن

د = دجاجة كاملة

ت = تفاحة

 

أنت تستطيع أن تأكل باليوم 

"د" 

أو تستطيع أن تأكل باليوم الواحد

"د" و "ت"

أو تستطيع أن تأكل باليوم الواحد

"د" و "ت" + "ت"

 

يعني القدرة في الأكل باليوم الواحد

"د" = 1

"ت" = 2

 

يتبع ...

#18

نحدد حصصك أن تأكل 

من تاريخ 2013/10/01 حتى 2013/11/20

"د" = 3 مرة
"ت" = 7 مرة
 

 

ونريد توزيع بعشوائية (هذا هو المطلوب)

التاريح             |   المطلوب

2013/10/04  |  "د"

2013/10/04  |  "ت"

 

2013/10/09  |  "ت"

 

2013/10/14  |  "د"

 

2013/10/17  |  "ت"

2013/10/17  |  "ت"

 

2013/10/24  |  "د"

2013/10/24  |  "ت"

2013/10/24  |  "ت"

 

2013/11/14  |  "ت"

 

 

 

وهكذا

انظر عدد مرات "د" و "ت"

هي الحصص

#19

و انظر عدد مرات "د" و "ت" باليوم الواحد لم يتجاوز قدرتك 

يعني بتاريخ واحد

تم تعديل هذه المشاركة بواسطة KhalidMurad في 30 أكتوبر 2013 في 22:49

#20

معقدة جدا صح !

 

والله صدعت  :wacko:  :sick:

 

 

أستأذنك ياغالي تعبان مرررة , تصبح على خير  :tbsleep:

تم تعديل هذه المشاركة بواسطة KhalidMurad في 30 أكتوبر 2013 في 23:09

#21

الظاهر ان الدجاج والتفاح اثاروا عندي انزيم معين ، فبدأ مخي يشم ويتذوق ويفكر (بس ما قلت لي ، دجاج مشوي وإلا شئ ثاني  :excited:  )

اخبرك باللي فهمته ، وصحح لي لوسمحت :)

 

عندنا بالجدول1 شاحنتين (ممكن يكونوا اكثر لاحقا) ، ولازم نخلص كل الشحنات المطلوبة حسب التواريخ المبينه في النموذج ،

وكل شاحنة توصل شحنتها بالعدد المحدد لها (تويوتا مثلا ، توصل 3 شحنات 20طن ، وثلاث شحنات 7طن) ،

وكل شاحنه لها طاقة قصوى يجب ان لا نتعداها وهي 20 + 7  ، ولكن مب لازم نستخدم هذه الطاقة القصوى ،

احنا نختار ونوزع بين الشاحنات ، بحيث في النهاية ، نستخدم جميع الشحنات في الفترة بين التاريخين ،

ومب مهم اي شاحنه في اي يوم في اي وزن.

 

1. صح؟

رد عليّ لوسمحت علشان انتقل للبقية :)

 

جعفر

 

على العموم اكمل السؤال التالي ، وهو عن الطريقة العشوائية ،

واذا فهمي صح ، فمعناه ، انه نعمل قائمة بالشحنات كلها ، ثم بالطريقة العشوائية نوزعها على الايام ، ويمكن هذا التوزيع يصير فيه استخدام شاحنه بطاقة قصوى في احد الايام ، بينما لا يكون في شحنات في اليوم التالي ،

2. صح؟

 

جعفر

تم تعديل هذه المشاركة بواسطة jjafferr في 30 أكتوبر 2013 في 23:32

1
#22

هههههههه أكيد تروح تتغدى دجاج شواية :haha:على قول الأخوة المصريين ( فراخ مشوية :D )

 

ياعيني عليك ايوه كذا صح

 

اقتباس

 

 

وكل شاحنة توصل شحنتها بالعدد المحدد لها (تويوتا مثلا ، توصل 3 شحنات 20طن ، وثلاث شحنات 7طن)

:thumb_up:  صحححح

 

اقتباس

 

 

وكل شاحنه لها طاقة قصوى يجب ان لا نتعداها وهي 20 + 7  ، ولكن مب لازم نستخدم هذه الطاقة القصوى

ليست كل شاحنة فردا فردا شاحنة شاحنة لآآآ لآآ

 

قدرة عمال المكتب أنهم خلال 8 ساعات العمل يستطيعوا تحميل شاحنة 20 +7 +7 بأقصى طاقة

فممكن إذا زاد عدد العمال يستطيعوا التحميل في اليوم أكثر على حسب مايتم تحديده في جدول جديد وهي القدرة مثلا نضع فيه عمودين 20 و 7 ونسجل فيهما الـ 20 = 1 و الـ 7 = 2 وتعني انه القدرة في التحميل 20 + 7  + 7  :rolleyes:

 

 

وباقي كلامك عن العشوائية صح 

 

 

وتسلم ياغالي على اهتمامك بالموضوع  :thumbup:

#23

مثلا اذا استعملنا تويوتا 20 طن

نستطيع استعمالها 7 طن + 7 طن

في يوم واحد بالطاقة القصوى

 

ولكن اذا فيها مجال

يتم تشكيلها 

تويوتا 20 + مرسيدس 7 + تويوتا 7

في يوم واحد بالطاقة القصوى

#24

السلام عليكم ...
 

أخ جعفر هل وصلت لحل , أم انها مستحيلة

#25

اعتذر منك اخوي خالد ، فكت احاول احل موضوع في المنتدى (بدأت بيه قبل ما ابدا في موضوعك) ،

وكان صعب حيل على مخي الشايب :( ، بس الحمدلله الله سبحانه وتعالى رفق بي وخلصت قبل شوي :)

 

بكرة الصبح ان شاء الله اتفرغ لموضوعك ، ولبكرة الصبح خليك تدعي لي ان الله يفرجها لي واخلص موضوعك بعد :)

 

جعفر

−1

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