יום רביעי, 23 בנובמבר 2011

ליסטבוקס היררכי

לא פעם יש בגיליון הרבה ליסטבוקסים, וזה עמוס מדיי.
אחת האפשרויות היא להשתמש ב"שידת-מגירות", הלא היא ה-Multi-Box. אני לא מת על זה, בעיקר כי אם נבחר יותר מערך אחד, אז לאחר שהמגירות נסגרות, המשתמש לא רואה מה הערכים שהוא בחר.
אפשרות חלופית היא ליצור ליסטבוקס היררכי. למשל במקום ליסטבוקס של מדינות וליסטבוקס של ערים, יהיה ליסטבוקס היררכי אחד המאגד את שניהם.
ניצור בסקריפט שדה המשרשר את המדינה והעיר, עם תו מפריד כלשהו:
Country & '/' & City as CountryAndCity
 ואז בליסטבוקס נסמן את Show as TreeView (ואם התו המפריד שונה מלוכסן - להכניס את התו). זה ייראה כך:
אמנם זה מסדר את המדינות והערים בהיררכיה, אבל הבעיה היא, שכפי שניתן לראות מהצבע האפור, ערכי ה-"אב" - מדינות, לא ניתנים לבחירה. ניתן לבחור רק את ה-"בנים" - הערים.
מה עושים?
הפתרון הוא ליצור בסקריפט טבלה חדשה ובה שני שדות: שדה העיר - כדי לקשר לטבלה הראשית, ושדה נוסף, שמכיל גם ערכים עם הביטוי הנ"ל, אבל גם (באותו שדה!) את המדינות בלבד:
CitiesHierarchy:
load
  City,
  Country & '/' & City as CountryAndCity
Resident
  Cities;
load
  City,
  Country as CountryAndCity
Resident
  Cities;

וכעת הליסטבוקס יאפשר לבחור גם מדינות:
ניתן לעשות זאת גם על היררכיות עם יותר רמות (לי יש ליסטבוקס עם 5 רמות וזה עובד מצוין). אבל זה בפעם אחרת...

אין תגובות:

הוסף רשומת תגובה