אשף Generate Fields List
הפקודה Generate Fields List הנמצאת תחת אובייקט טבלה בעץ האובייקטים, מפעילה אשף המייצר קוד אוטומטי בהקשרים שונים של גישה לשדות ונתוני טבלאות.
מטרת האשף לייצר את שלד הקוד הרלוונטי בזיכרון, ובכך לעזור למתכנת לכתוב קוד נכון ומהר ללא צורך לזכור בעל-פה שמות שדות ותחביר וערכי SELECT בהקשר של שדות עם ערכי בחירה.
כמו כן, שימוש באשף מונע שגיאות הקלדה (Typos), חוסך זמן יקר בחיפוש שמות שדות, ומבטיח שימוש בסינטקס תקין.
האשף קיים באופן אוטומטי תחת כל אובייקט טבלה הקיים בעץ הניווט, כולל בטבלאות דינאמיות שהוגדרו בגוף התסריט על ידי המתכנת בשלב הפיתוח.
שים לב, התוכן בעמוד הנוכחי מתבסס על הכרת דרכי הגישה לשדות המערכת כמודרך כאן!
הסבר מהיר כיצד לעבוד עם האשף
- בחר את הטבלה הנכונה בעץ הניווט, והפעל את האשף בלחיצה כפולה.
- בשדה Mode בחר בפקודה המתאימה למטרתך (קריאה/כתיבה, חיפוש, מיון, מחיקה, או בלוק שאילתה).
- בשדה Select Fields בחר (ב-V) את השדות בהם ברצונך לטפל בקוד הנוכחי (כאשר רלוונטי ל- MODE הנבחר).
- הגדר Row לפי ההקשר. לדוגמה: שורה נוכחית= 1-, שורה ראשונה = 0, או הזן שם פרמטר כחלק מלולאה (במידה ורלוונטי ל- MODE הנבחר).
- הגדר Space Count רק אם חשוב לך הזחה מסודרת לפני כל שורה.
-
לחץ OK.
כעת הקוד הרלוונטי הועתק ללוח הגזירים (Clipboard). הדבק את הקוד במקום הנדרש בעורך והשלם ערכים חסרים לפקודה.
השדה Mode
שדה זה קובע את הפקודה/הקוד שייווצר על ידי האשף.| ערך (Mode) | הסבר ושימוש | קוד דוגמה |
|---|---|---|
| Access fields by Name |
מייצר קוד גישה לקריאה/כתיבה מול שדות הטבלה על פי שמם הגנרי (TableName.Field...) .
זוהי שיטת העבודה המומלצת והבטוחה ביותר. אם תבחר שדות מסוג Select, יתווספו לקוד כל ערכי הבחירה האפשריים של כל שדה, מה שמקל מאוד על כתיבת הקוד וחוסך לך זמן חיפוש ומאמץ זיכרון. |
|
| Access fields by Cell |
מייצר קוד גישה לקריאה/כתיבה מול שדות הטבלה על פי אינדקס השדות (מספרם) באותה הטבלה (TableName.Cell...) .
גישה בשיטה זו אמנם מהירה יותר מחיפוש השם, אך היא מסוכנת! כי במידה והטבלה תעבור שינוי מבני וסדר השדות ישתנה, תיווצר אי התאמה של הקוד מול הטבלה ועלול להיווצר מצב של "קריסת הקוד" ואף גרוע מכך דריסת נתונים שלא במכוון! מומלץ להשתמש בשיטה זו אך ורק כאשר מדובר בקוד העוסק בדוחות בהם ניגשים פעמים רבות לשדות שונים, או בקוד זמני. גם במקרה זה ערכי ה-Select יוצגו לנוחותך. |
|
| (FieldName = lowcase) |
מייצר קוד עבור תנאי ובו שם השדה באותיות קטנות.
* השימוש ב־Row אינו רלוונטי בפקודה זו |
|
| Fields Settings Code |
מייצר קוד קריאה לפונקציה Set_Duty העוסקת בהגדרות התנהגות (כגון חובה, תצוגה בלבד, או הסתרה) לשדה/שדות שתבחר.
* השימוש ב־Row אינו רלוונטי בפקודה זו |
|
| Table Sort Code |
מייצר קוד קריאה לפרוצדורת מיון של הטבלה, על פי שמות השדות שנבחרו.
כברירת מחדל, המיון הוא עולה (מהקטן לגדול). הוספת התו "!" לפני שם השדה תבצע מיון יורד. * השימוש ב־Row אינו רלוונטי בפקודה זו |
|
| Search [] |
מייצר את שלד הקוד לפקודת החיפוש המובנית של טבלאות הפלטפורמה.
פקודה המחזירה ערך בוליאני על הצלחה/כישלון ובמקביל מקפיצה את הסמן אל הרשומה שנמצאה בטבלה (הרשומה שנמצאה תהיה 1-). * השימוש ב־Row אינו רלוונטי בפקודה זו |
|
| Delete [] |
מייצר את שלד הקוד לפקודת מחיקת רשומות, המקבלת את השדות לפיהם יתבצע זיהוי הרשומה המיועדת למחיקה.
* השימוש ב־Row אינו רלוונטי בפקודה זו |
|
| Update_Exist_Records |
מייצר פקודה המבצעת שמירה ספציפית וממוקדת למקבץ השדות שנבחרו. מצוין לעדכון מהיר ללא שמירה של כל השדות באותה הרשומה.
שים לב, חובה לוודא שצוינו בפקודה שדות המפתח של אותה הרשומה אחרת השמירה לא תתבצע. * השימוש ב־Row אינו רלוונטי בפקודה זו |
|
| Query Block |
מייצר בלוק קוד שלם ומוכן המשמש כשאילתה מול אותה הטבלה על בסיס השדות שנבחרו באשף.
מיועד לשימוש בקוד של דוח או כלי שירות ולא בחלון של רשומה יחידה כגון רשומת לקוח / קריאת שירות / הזמנה וכיו"ב. * השימוש ב־Row אינו רלוונטי בפקודה זו * האובייקט DBconn ישתנה אוטומטית בהתאם למודול בו מופק הקוד אך שאר הפקודה תישאר זהה. |
|
| Add Fields |
מייצר פקודות הוספת שדות דינמיים ( Add_DB_Field ) לטבלה הנבחרת, המתבססות על סכימת שדות קיימים בסכימה.
רלוונטי לשימוש עבור מודול דוחות ובפרט לקטעי קוד אתחול (INIT). האשף יציג רשימת שדות לבחירה בהתקיים התנאים הבאים: 1. הטבלה הינה פרטית (ThPrvTable) 2. הטבלה קושרה מראש לסכימה של טבלת מערכת קיימת |
|
הגדרות נוספות בחלון האשף
Select Fields
שדה מסוג בחירה מרובה (GroupSelect) המאפשר למפתח לסמן מספר רב של שדות בו-זמנית.האשף יעבור על כל השדות המסומנים וייצר את הקוד המבוקש עבור כולם בבת אחת בהתאם לפקודה (Mode) שנבחרה, דבר החוסך זמן פיתוח רב.
שדה זה יציג רשימת שדות בהתקיים התנאים הבאים:
1. הטבלה הרלוונטית הינה טבלת מערכת או טבלה פרטית המקושרת לסכימה של טבלת מערכת.
2. טבלה פרטית שהוספו לה שדות ובוצע תהליך INIT למודול טרם הפעלת האשף.
Space Count
שדה מספרי המגדיר את כמות הרווחים ש"יוזרקו" לתחילת כל שורת קוד המופקת על ידי האשף.ברירת המחדל הינה 2 רווחים. מטרת אפשרות זו היא לאפשר למפתח לשמור על הזחה (Indentation) מדויק כך שכאשר ידביק את התוצאה בתוך בלוק קיים (כמו בתוך לולאה או תנאי), הקוד ישתלב באופן אסתטי ללא צורך בסידור ידני.
עליך להציב את הסמן בתו הראשון של השורה ולבצע הדבקה של הקוד (PASTE).
Row
הגדרה זו רלוונטית עבור קריאה או כתיבה של נתונים, וקובעת לאיזו רשומה (שורה בטבלה) הקוד יפנה.למרות שבאפשרותך להזין כל ערך שתרצה חשוב להבין את משמעות המספור:
- ערך 1-: מייצג את הרשומה הנוכחית הנמצאת כעת בפוקוס או נטענה. למשל, בעת עבודה על כרטיס לקוח, פנייה ללקוח עצמו תמיד תתבצע במיקומים אלו באמצעות 1- או 0.
- ערך 0 ומעלה: מייצג אינדקס פיזי של שורה בטבלה. 0 מייצג את השורה הראשונה, 1 את השנייה וכך הלאה. נדרש בעבודה בדוחות ומול טבלאות בנים (כגון טבלת התקשרויות).
- ערך כשם פרמטר: מזריק את שם הפרמטר לקוד - רלוונטי כאשר הקוד מיושם בלולאה. שם הפרמטר יכול להיות עד 40 תווים.
לדוגמה, עדכון רשומת הלקוח כאשר מתייחסים לרשומה הנוכחית:
ClientTb.Field['Client Full Name', -1]:= 'Smith Dan'; {שם הלקוח}
לעומת זאת, דוגמה לעדכון השורה הרביעית (אינדקס 3):
ContactsTb.Field['Full Name', 3]:= 'Smith Dan'; {שם איש הקשר במיקום 4 מתחילת הרשימה}
דוגמה ללולאה שרצה על כל רשומות הטבלה ומסמנת דגל חיובי בשדה VIP. כאן הוזן הפרמטר "Y" לשדה ROW
Var Y: Integer;
For Y:=0 to Clients_Tb.RowCount -1 Do
Clients_Tb.BField['VIP Member', Y]:= True;
For Y:=0 to Clients_Tb.RowCount -1 Do
Clients_Tb.BField['VIP Member', Y]:= True;