בס"ד
ישנם הרבה פעולות שמתבצעות לאחר תוצאת השאילתא (ולא ציטטתי אותן בקוד לעיל - כי חשבתי שהן לא רלוונטיות לעניינינו),
אבל לדוגמא,
תסתכל בשורה השלישית של המקטע הראשון שציטטתי - כאשר לוחצים על הלחצן של ביצוע השאילתא:
If result Is Nothing OrElse result.Tables.Count = 0 Then If MsgBox("לא קיימים נתונים בטבלה זו.", הודעה) Then Exit Sub
דהיינו, אם אין עדיין תוצאת שאילתא, או שהתוצאה היא 0 טבלאות, זרוק מסג'בוקס ותעיף החוצה.
היות וסדר הפעולות הוא:
- השגרה המופעלת ע"י לחצן "בצע שאילתא", קוראת לפונקצייה beforeQuery, ומחכה לה בסבלנות בשביל להמשיך לשורה הבאה.
- הפונקצייה beforeQuery מדליקה את התהליך query ולא מחכה לו אלא גומרת מיד ומחזירה שליטה לשגרה "בצע שאילתא" שקראה לה.
- השגרה של "בצע שאילתא" ממשיכה לשורה הבאה ומחפשת מה קורה במשתנה result, אבל הוא כמובן ריק, כי התהליך שמתחבר לשרת המרוחק תמיד יהיה יותר איטי מ-2-3 משפטי קוד בתוכנית עצמה.
- result ריק? שלום ולא להתראות.
כך שאין לי ברירה אלא לחכות לתהליך בסבלנות שיגמור את עבודתו, ואז להחזיר שליטה לפונקצייה שתחזיר לשגרה - חד גדיא חד גדיא...
פורסם במקור בפורום CODE613 ב04/12/2017 23:45 (+02:00)