תכנות VB באקסל

ufo11

New member
תכנות VB באקסל

שלום לכולם. הוטל עליי לבצע פרויקט במסגרת לימודי באוניברסיטה. במסגרתו, עליי ליצור פיצוץ עץ מוצר רקורסיבי ב-VB באקסל. אולם, לא לימדו אותנו דבר ואין לי מושג איך אני אמור לעשות את זה. למישהו יש במקרה מושג איפה ניתן למצוא קוד לפיצוץ עץ מוצר רקורסיבי? הערה: אסור לנו להשתמש ב-TreeView. אודה לכם בתשובתכם, זה מאוד חשוב. יום טוב לכם.
 

ufo11

New member
אגב,

לשם בייצוע פיצוץ העץ, המשתמש יקיש את קוד הפריט (מק"ט במקרה זה) וזה יחזיר את כל מה שתחתיו בעץ. אם מישהו צריך שאצרף הסבר מורחב יותר, אעשה זאת תודה לכם שוב.
 

בסג

New member
איך העץ מיוצג?

אתה אמור לכתוב דרך לייצג אותו, ואח"כ לכתוב דרך שבה אתה מוצא בו איבר ומחזיר אותו ואת כל הצאצאים שלו?
 

ufo11

New member
העץ מיוצג

על ידי קוד פריט. כלומר, לכל אבא שמחזיק קוד פריט שמזהה אותו, יש שדה של קוד פריט של הבן שלו. למשל... אם האבא הוא בעל קוד פריט 1 (החיפוש יתבצע על ידי הזנת קוד הפריט) ולאבא הזה יש את הבנים הבאים: 2,4,5. משמע, יש 3 רשומות בבסיס הנתונים המוצגות כך: קוד פריט אב:1, קוד פריט בן 2. קוד פריט אב:1, קוד פריט בן 4. קוד פריט אב:1, קוד פריט בן 5. בסופו של דבר, ברגע שיחפשו את קוד פריט 1, אני אמור להחזיר אותו ואת שלושת בניו. וכנ"ל בכל רמה בעץ. אם ל-2 יש בנים, אז אני אציג אותו ואת כל הבנים שלו וכו'... זה בערך הרעיון, וזה צריך להתבצע ברקורסיה. זה משהו כמו עץ חיפוש כזה למיטב ידיעתי.
 

בסג

New member
אז מהי בעצם הבעיה?

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

ufo11

New member
הבעיה היא

שאני יודע מה צריך לעשות, אני לא יודע לבצע את זה ב-VB. ולצערי הדרישה היא לבצע את זה ברקורסיה ב-VB ובעזרת שאילתות SQL בתוכנת האקסל.
 

בסג

New member
הרעיון הוא כזה

אני מבין שלכל פריט יש השדות הבאים ID - הקוד שלו PID - הקוד של אביו; במקרה שאין אב PID=0 NAME - השם שלו שדות נוספים כמו NAME, זה לא ממש משנה מי עוד יש שם הרקורסיה צריכה להיות כך:
const FIELD_ID = 0 const FIELD_PID = 1 const FIELD_NAME = 2 sub ShowSubTree(current_id as long) 'here will be SELECTion all details of product with ID=current_id text1.text = text1.text & vbNewLine & rs.fields(FIELD_ID) & " - " & rs.fields(FIELD_NAME) 'here will be SELECTion all products with PID=current_id while not(rs.eof) ShowSubTree rs.fields(FIELD_ID) wend end sub​
אם אתה מכיר קצת SQL, תוכל לגגל ולמצוא מידע לגבי SQL באקסל.
 
למעלה