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

كود لايحوي اخطاء لكن يعلق البرنامج

مغلق
بدأه POWER _GIRL في 23 مارس 2005 · 19 رد · 1,364 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

تحيه طيبه ولكن لدي كود اجهل سبب تعليقه!!

:blink: نعم يعلق الكود مو غلط بس البرنامج يعلق لما يلاقي تاريخ اكبر من تاريخ اليوم ..مالسبب..

Do Until rs_TST.EOF = True

If Not IsNull(rs_TST.Fields(0)) Then
If rs_TST.Fields(0) < Date + 15 And rs_TST.Fields(0) > Date Then
MSGBOX("باقي اقل من 15 يوم")
rs_TST.MoveNext
Exit Sub

ElseIf rs_TST.Fields(0) < Date Then
MSGBOX("انتهت المده")
rs_TST.MoveNext
Exit Sub

End If
rs_TST.MoveNext
End If
Loop

<< CLICK TO START>>

post-41869-046528000%201305052277.jpg

ليس أن تجد حلا بل أن تجد الافضل

أن تصـــنع الخـيال هذا هوا الأفضل</span>

#2

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

بس عندى ملاحظات

أين شرط المساواة ؟ أى إذا ساوى تاريخ اليوم ماذا يفعل؟

وأيضا أفضل أن تستخدمى DateAdd بدلا من + 15 فهى الأصح

وأيضا - وأن كنت غير أكيد - أفضل أن تضعى شرط أكبر من اليوم قبل شرط أقل من اليوم + 15 فبذلك سيقل عدد السجلات التى يفحصها وفق الشرط الأول ثم الثانى

ثم يمكنك اللجوء لحيلة ظريفة تنفعنى فى بعض الأحيان

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

أيضا لا تنسى الاستفادة من DoEvents لكى لا يصاب البرنامج بالشلل حتى ينفذ التكرار

هذا والله أعلم

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

#3

الله يبارك فيك ويكثر من امثالك.. انا وضعت حدث DoEvents ولكن لاعرف ماهوا المكان المناسب لهذا الكود فهل مكانه مناسب! وشكرا على تذكيري بشرط = وغيرت فالكود على توجهاتك فمارأيك فالكود الأن! والبرنامج صار سريع :lol:

Do Until rs_TST.EOF = True
DoEvents 
If Not IsNull(rs_TST.Fields(0)) Then 
If rs_TST.Fields(0) < Date Or rs_TST.Fields(0) = Date Then
MSGBOX("انتهت المده")

rs_TST.MoveNext
Exit Sub
ElseIf rs_TST.Fields(0) < DateAdd("d", 15, Now()) And rs_TST.Fields(0) > Date Then
MSGBOX("باقي اقل من 15 يوم")

Label4.Caption = rs_TST.Fields(1)
rs_TST.MoveNext
Exit Sub
End If

rs_TST.MoveNext
End If
Loop

تم تعديل هذه المشاركة بواسطة POWER _GIRL في 23 مارس 2005 في 18:00

<< CLICK TO START>>

post-41869-046528000%201305052277.jpg

ليس أن تجد حلا بل أن تجد الافضل

أن تصـــنع الخـيال هذا هوا الأفضل</span>

#4

ولكن اخي لحظه فالغالب الموظف المسؤول لما يشيك على تواريخ اقامه موظفي الشركه راح تكون الي قربت تنتهي مده صلاحيتها هيا الاغلب لأنو فالغالب حيكون متابع وماراح يخلي احد الموظفين موجود فالشركه بدون اقامه فاعتقد ان ترتيب الشروط فالكود الاول اصح!

<< CLICK TO START>>

post-41869-046528000%201305052277.jpg

ليس أن تجد حلا بل أن تجد الافضل

أن تصـــنع الخـيال هذا هوا الأفضل</span>

#5

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

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

ثم بخصوص شروط التاريخ - كان رأى على السريع وليس حتميا - لو عملت فرز للسجلات حسب التاريخ كم سجل سيكون تاريخه أقل من اليوم وكم سيكون أكبر من اليوم + 15 ؟

وعلى حسب عدد السجلات تختارى أيهما تبدأى به - يعنى - لو كان الأغلبيه أقل من اليوم إبدأى به ، والعكس صحيح

بهذا سيتم تنفيذ الشرط الثانى على عدد أقل من السجلات. أنت متخيلة كيف يقوم SQL بالتصفية حسب الشرط؟

أولا سيثتسنى ما ينطبق عليه الشرط الأول ثم يقارن النتائج بالشرط الثانى لأن AND تطرح النتائج ولا تجمعها مثل OR .

سبحانك لا علم لنا إلا ما علمتنا

ولله الحمد من قبل ومن بعد

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

#6

شكرا لك اخي على التوجيه جعله في ميزان حسناتك

أنا كنت اعتقد انك تتحدث عن ترتيب جمل if ولكن يبدوا انك تقصد ايضا نفس السطر لكل جمله if ..

فلـor نراعي الترتيب أما and ماتفرق لأنها محتاجه ان تقارن الشرطين اهذا ما قصدته!

بالنسبه لي and تجمع الشروط وor تطرح انا ارى ذلك أخي :( !وليس العكس

تحياتي

<< CLICK TO START>>

post-41869-046528000%201305052277.jpg

ليس أن تجد حلا بل أن تجد الافضل

أن تصـــنع الخـيال هذا هوا الأفضل</span>

#7

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

بخصوص And و OR

ممكن تراجعى الشرح البسيط ده يوضح قصدى من الطرح

http://m.elshabab.com/docs/general/index.p...6&categoryid=14

هذا يبين أننا نتفق على المسميات ولكن النتيجة من AND تستبعد ما لا يناسب الشرط الأول ومن النتائج تستبعد ما ينافى الشرط الثانى - هذا ما قصدته من طرح

أما OR فهى تختار ما يناسب الشرط الأول وما يناسب الشرط الثانى

بهذا أقصد أنى كنت أتكلم على البيانات وليس العمليات المنطقية أى طرح بيانات أو جمع بيانات

هل نتكلم لغة واحدة الآن؟

تم تعديل هذه المشاركة بواسطة abulyaman في 25 مارس 2005 في 20:36

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

#8

أخي قلبتلي راسي :wacko:

AND تستبعد ما لا يناسب الشرط الأول ومن النتائج تستبعد ما ينافى الشرط الثانى - هذا ما قصدته من طرح

AND

تقصد انها تستبعد النظر للشرط التاني بعد كلمهAND لو ماتحقق الشرط الاول

أما OR فهى تختار ما يناسب الشرط الأول وما يناسب الشرط الثانى

OR=او :blink:

ستنظر للشرط الي قبل OR وأيضا للي بعد OR حتى لو لم يكون الشرط السابق لي OR متحققا

ولو كان متحقق الشرط الاول ماراح تنظر على الشرط التاني الي بعد OR

مارأيك في كلامي :(

ORتطرح النتائج ولا تجمعها مثل AND

تم تعديل هذه المشاركة بواسطة POWER _GIRL في 27 مارس 2005 في 16:29

<< CLICK TO START>>

post-41869-046528000%201305052277.jpg

ليس أن تجد حلا بل أن تجد الافضل

أن تصـــنع الخـيال هذا هوا الأفضل</span>

#9

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

اقتباس
أخي قلبتلي راسي wacko.gif

المشكلة أنك تنظرين إلى المعنى المنطقى للكلمتين وأنا أنظر إلى البيانات الناتجة من أيهما

سبب أنى قلت عن Or أنها (و) كنت أقول أنك ستحصلين على كل البيانات التى تناسب الجزء الأول من الشرط بالإضافة لكل البيانات التى تناسب الجزء الثانى لأن Or التى معناها (أو) ستتحقق من تحقق أحد الشرطين على الأقل فبذلك ما يناسب أى من الشرطين سيمر فهى بذلك تجمع نتائج الشرط الأول على تنائج الشرط الثانى ويكون الناتج أكبر من لو استخدمنا AND التى ستبحث عن كل ما ينطبق الشرط الأول عليه ومن هذه النتائج فقط ستختار ما يناسب الشرط الثانى فهذا الاستثناء ما أسميته طرح

ولم أقصد الطرح المنطقى

ولكن لكى لا أربكك ولا ندخل فى جدل - لا داعى له - أنت تفهمين معنى المعاملات صحيح، وأنا كنت أفسر تأثر البيانات باستخدام هذه المعاملات

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

#10

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

rs_TST.MoveNext

الإنسان الذي يقول بأنه لا يمكن عمل شيء يجب ألا يعيق مطلقاً الإنسان الذي يقوم بعمل ذلك الشيء.

إن تخطئ فأنت إنسان ... أما أن تلوم جهازك الكمبيوتر على خطأك فهذا أكثر إنسانية.

#11

أستاذي القدير abulyaman

ليس جدل هذا نقاش مثمر :lol:أرجو ان لا أكون قد ازعجتك .. ولكن الان فهمتك أشكرك على التوضيح

تحياتي لك

<< CLICK TO START>>

post-41869-046528000%201305052277.jpg

ليس أن تجد حلا بل أن تجد الافضل

أن تصـــنع الخـيال هذا هوا الأفضل</span>

#12

لم افهمك ! لماذا ستكون دائره مكرره وأنا اضيف بعدها أمر الانهاء للإجراء!

:blink:

<< CLICK TO START>>

post-41869-046528000%201305052277.jpg

ليس أن تجد حلا بل أن تجد الافضل

أن تصـــنع الخـيال هذا هوا الأفضل</span>

#13

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

تذكرت أمرا آخر يسرّع الاسترجاع من قاعدة البيانات بنسبة أكثر من 30% عما قمت به

النصيحة هى استخدام For - Next بدلا من Do - Loop

أى أن تعملى التكرار على عدد السجلات RecordCount بدلا من أن يتحقق فى كل دورة من وصوله لنهاية البيانات أم لا

لو الفكرة عويصة ولا حاجة ممكن أفسرها بمثال

Dim R as Long
If rs_TXT.recordCount>0 then
rs_TXT.MoveLast: rs_TXT.MoveFirst '''*** Important just to know how many recourd we have
End If
For R=0 to rs_TXT.RecordCount -1
DoEvents
If Not IsNull(rs_TST.Fields(0)) Then
If rs_TST.Fields(0) < Date Or rs_TST.Fields(0) = Date Then
MSGBOX("انتهت المده")

rs_TST.MoveNext
Exit Sub
ElseIf rs_TST.Fields(0) < DateAdd("d", 15, Now()) And rs_TST.Fields(0) > Date Then
MSGBOX("باقي اقل من 15 يوم")

Label4.Caption = rs_TST.Fields(1)
rs_TST.MoveNext
Exit Sub
End If


rs_TST.MoveNext
End If
Next R

أنا لم أغير من التكرار غير اللوب - ولكن منطقيا هذا الكود يجب أن يكون أسرع لتوفيره خطوة التحقق من نهاية البيانات

هذا والله أعلى وأعلم - وهو يهدى السبيل

تم تعديل هذه المشاركة بواسطة abulyaman في 29 مارس 2005 في 11:04

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

#14

السلام عليكم

أستاذي التكرار لاينفذ..

مالسبب

Dim r As Long
If rs_TST.RecordCount > 0 Then
rs_TST.MoveLast: rs_TST.MoveFirst '''*** Important just to know how many recourd we have
End If

For r = 0 To rs_TST.RecordCount - 1
DoEvents 
If Not IsNull(rs_TST.Fields(0)) Then 

If  rs_TST.Fields(0) < Date Or rs_TST.Fields(0) = Date Then
MSGBOX("انتهت المده")
rs_TST.MoveNext
Exit Sub

ElseIf rs_TST.Fields(0) > Date And rs_TST.Fields(0) < DateAdd("d", 15, Now()) Then
MSGBOX("باقي اقل من 15 يوم")
rs_TST.MoveNext
Exit Sub
End If
rs_TST.MoveNext
End If
Next r

<< CLICK TO START>>

post-41869-046528000%201305052277.jpg

ليس أن تجد حلا بل أن تجد الافضل

أن تصـــنع الخـيال هذا هوا الأفضل</span>

#15

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

أكيد السبب فى عدم تنفيذ التكرار هو أحد هذه ال Exit Sub

لذلك أفضل لو تستبدليها بجملة تفرع لتنقلك إلى نهاية التكرار Next R وتسميه مثلا NextRec:

وبدلا من Exit Sub ضعى GoTo NextRec

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

#16

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

أستاذي عرفت المشكله

Set rs_TST = cn.Execute("SELECT Emp_Ikama_enddate,Emp_Name FROM Employees", adOpenStatic, adLockReadOnly)

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

أنا افضل هذا السطر على إعاده تعريف rs_tst

وجربت تغير adOpenStatic, adLockReadOnly

بكل اشكالها الا ان القارءه لمجموع السجلات دائما -1 ماالحل!

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

List1.AddItem rs_TST.Fields(0) 'تعمل
MsgBox (rs_TST.RecordCount) '  -1 دائما

تم تعديل هذه المشاركة بواسطة POWER _GIRL في 29 مارس 2005 في 15:24

<< CLICK TO START>>

post-41869-046528000%201305052277.jpg

ليس أن تجد حلا بل أن تجد الافضل

أن تصـــنع الخـيال هذا هوا الأفضل</span>

#17

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

أعتقد أفضل تستخدمى الصياغة دى

rs_TST.Open "Your Select Statement", YourConnection, adOpenStatic, adLockOptimistic

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

#18

ياخوي abulyaman

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

يطلع لي رسالة قبل انتهاء الموعد بـ 5 ايام واذا انتهاء

والله يعطيك العافية

#19

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

أخى العزيز HOMICRO

لو عندك مشكلة معينة (كل ما يشغل بالك لفترة زمنية هو مشكلة) تحب نفكر فيها مع بعض أنا تحت أمرك

أفضل نفكر مع بعض فى مشكلة ونشارك فيها الإخوة زى الخبرة فأفكارنا تزداد بإسهاماتهم

يا ريت تعرض مشكلتك وهذا هو أول طريق الحل (تحديد المشكلة)

والله من وراء القصد وهو يهدى السبيل

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

#20

مشكور ياخوي على ردك

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

فعدما يحل موعد الانتهاء او قبله بـ 3 ايام يقوم ويذكرني بالي رايح ينتهي

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

يعني لو يحصل كود جاهز او مبسط مع الشرح يكون افضل وافضل

:D B)

ارجوا اني اوصلت المشكلة

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

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