ארכיון תגיות: Scriptcase

איך לעשות כפתור "שמור וסגור" בטופס scriptcase ?

הבעיה

בטופס של scriptcase אין אפשרות מובנה לשמור וסגור ביחד

אלא כל אחת מהאפשרויות מופיעה בנפרד.

העניין נהיה אקוטי יותר, כאשר משנים דברים מתוך טופס-משנה אל טופס-אב (יש מאקרו מובנה עבור זה ) .

הפתרון

באירוע של AfterUpdate

להכניס 2 פקודות

אחת ששומרת את הנתונים

והשניה שיוצאת אל הטופס הרצוי

דוגמא :

sc_commit_trans();
sc_redir(grid_leads.php);

 

בהצלחה

 

איך ב-ScriptCase לשים ערך ברירת מחדל מתוך Session אל שדה בשורה חדשה ב-Editable grid view ?

הבעיה

כאשר משתמשים ב Editable grid view של scriptcase , אז בהוספת שורה – נניח ונרצה ערך ברירת מחדל מתוך session או מתוך global variable

הבעיה היא שגם האירועים OnLoad וגם OnRecordLoad  נטענים לגבי כל השורות

הפתרון

צריך לעשות תנאי לגבי ערך שקיים רק ברשומות קיימות, וכך אפשר להבדיל בין רשומות קיימות לבין רשומות חדשות.

למשל – האם המפתח הראשי קיים או שהוא empty ?

זה תנאי שמאפשר להשים ערך רק עבור רשומות חדשות.

בהצלחה.

חיפוש מובנה בטופס Form ב- ScriptCase

כאשר משתמשים ב-grid, יש אפשרות מובנה ל-Start With Search

לעומת זאת באפליקציית Form זה לא מובנה
אבל אפשר להגיע בדיוק לאותו מצב – עם Search application/

פשוט מגדירים אפליקצית Search
ומתוכה יוצרים link אל ה- form

בהגדרות ה- link מגדירים שיפתח ב- iframe
וזהו
בצצורה הזו מקבלים למעלה את תיבת החיפוש
ובחלק התחתון את ה-iframe עם הטופס.

איך לעשות לולאה על רשומות נבחרות בטופס מסוג Multiple Records של ScriptCase

ל-ScriptCase יש טופס נפלא שנקרא multiple records , היתרון העצום שלו הוא שהוא מזהה לבד באיזה רשומות המשתמש מטפל, ומציע כפתור שישמור את כל הרשומות האלו *יחד*, בפעולה אחת.

עכשיו – נניח ואני רוצה ליצור לולאה על כמה רשומות נבחרות
על פניו – זה נראה בעיה ,
כיוון שיש אומנם שדה (לא בדאטאבייס, רק על המסך) של ScriptCase שמזהה את הטיפול ברשומה, וזה באמת שדה CheckBox.
אבל
אי אפשר לגשת אליו בצורה קלה.

ולכן – עשיתי ככה :
1 הוספתי שדה על המסך בלבד – מסוג CheckBox
2 בשדה הזה – ה-Lookup הוגדר Manual, עם ערך בודד של 1 במקרה של ChecK (כלומר אם סימנו אותו =1 )
3 אחרכך באירוע OnLoad של הטופס – הגדרתי מערך ריק,
4 כאשר ב-Gloabal Variable הגדרתי אותו כ-Out
5 באירוע OnLoadRecord של כל רשומה – איפסתי את הערך הרלוונטי במערך, כאשר שימו לב
ה-Key שלי במערך הוא – המפתח הראשי של הרשומה .

[selected][{id_partner}] = 0;

6 עכשיו עשיתי אירוע Ajax על OnClick של השדה מסוג CheckBox
ובאירוע הזה למעשה אני מציג באיבר הרלוונטי במערך – את הערך של ה-CheckBox
כלומר אם הוא מסומן – אנחנו נקבל 1, אחרת נקבל 0

 [selected][{id_partner}] = {select_record};

7 עכשיו הגענו סוף סוף לכפתור , תגדירו כפתור חדש בטופס
וזה הקוד שמציג בסוף את המפתחות הראשיים של הרשומות הנבחרות :

foreach (array_keys([selected], 0, true) as $key)
{
unset([selected][$key]); //get rid of the unselected id's
}
$selection = implode(',',array_keys([selected])); // now you have a comma separated list of id's of your selected records
echo $selection;

הסבר קצר לקוד
הפונקציה Array_keys – יוצרת "מערך" שמכיל רק את המפתחות.
הפרמטר השני שהוא אפס – אומר לפונקציה להחזיר רק מפתחות שמכילים 0.
והפרטמטר השלישי – true אומר לפונקציה שהאפס חייב להיות מאותו סוג משתנה , כמו האופרטור === ב-php

בתוך הריצה של הלולאה – אנחנו למעשה מוחקים את כל האיברים שמכילים 0.

ואז אחרי הלולאה – הפונקציה implode למעשה יוצרת מחרוזת עם כל איברי המערך (שנותרו) , ובינהם היא שמה פסיק.
ולבסוף מציגים את זה.

זהו תרגום בעברית, מסודר יותר, של מה שכתוב בדיון הזה בפורום :
http://www.scriptcase.net/forum/showthread.php?5574-How-select-records-from-a-multiple-record-form-flagging-row-specific-check-box-field&highlight=selected

איך לגרום ל-ScriptCase בשדה Select להציג ערך ריק כאשר השדה = NULL

ב-ScriptCase כאשר אתה עושה שדה Select , אז הערך הראשון שהוא ברירת המחדל הוא – הערך הראשון של השאילתא.
כדי להימנע מכך
פשוט – להגדיר את המאפיין Title על YEs

ניתן גם לתת Title שהוא כמובן, לא חלק מרשימת הערכים.

מה ההבדל בין sc_lookup ל- sc_select

יש 2 הבדלים
1. ב-sc_lookup מקבלים dataset מוכן לגמרי, כאשר לא צריך לדפדף בין השורות, אפשר מייד לגשת לכל שורה.
לעומת זאת ב-sc_select צריך לדפדף בין השורות (ראה דוקומנטציה)

2. ההמלצה של החברה היא כאשר השאילתות גדולות – להשתמש ב-sc_select

זהו

3 רמות של שתילת קוד ב-Scriptcase

רמה רגילה – בתוך אירוע בטופס/אירוע Ajax / או בתוך כפתור בטופס

רמה שניה – בתוך תפריט Programing של הטופס > מוסיפים Library – ושם אפשר להוסיף פרמטרים באמצעות "אשף" של scriptcase.

רמה שלישית – אפשר להוסיף library כללי – בתוך תפריט Tools> Libraries
במקרה כזה- כותבים ממש "PHP טהור"
כלומר *כל* פונקציה צריכה להיכתב בתוך function {} וכו'
כדי להשתמש ב-ספריה כזו, אז צריך לסמן אותה תחת תפריט programing בטופס הרלוונטי.

איך לעשות מסך מודאלי בטופס multiple records ב-ScriptCase

אחד החסרונות *לכאורה* בטופס מסוג multiple records הוא שאין לו חלק מהיכולות של grid.
מצד שני – הוא הכי נוח לעדכון עבור המשתמשים.
כי הם פשוט מקלידים – ובסוף שומרים, בדיוק כמו בכל תוכנה אחרת (בסגנון Desktop applications )

אז אם משווים את זה לגריד
מיון – יש בשניהם
Group By – יש רק בגריד
מסך מודאלי – תיאורטית , יש רק בגריד
אבל זה לא נכון.

אומנם בגריד זה מאוד קל לביצוע באמצעות Links ישירות על השדה – מקפיץ מסך מודאלי.
אבל זה אפשרי גם בטופס multiuple records
ככה :
1. פתח אירוע Ajax על השדה הרלוונטי
2. שים פה פקודת redirect , כאשר הפרמטר של צורת הפתיחה הוא modal

sc_redir(form_tbl_customers, "", "modal");

וברגע שזה אירוע ajax – אז אפשר כמובן להעביר פרמטרים, והשמים הם הגבול.