-
שפת תכנות: C# winform, מסד נתונים SQL
יש לי טבלת היסטוריית מוצרים
(כל פעם שמעדכנים את רשומת הפריט,
לפני העדכון - אני מעתיק את השורה הנוכחית לטבלה נפרדת לתיעוד היסטוריה)אני מעוניין להציג למשתמש את היסטוריית השינויים שבוצעו בפריט
האפשרות הפשוטה היא להציג את כל הטבלה
אבל זה מצריך 'מאמץ' למשתמש להשוות שורה- שורה ולאתר עצמאית מה השינויים שבוצעו
(הנ"ל דוגמא, בטבלה אצלי ישנם יותר עמודות משמעותית)התוצאה שאני מחפש זה להציג אך ורק את השינויים
לדוגמא:
אשמח לעצתכם וניסיונכם
כיצד לגשת לפתרון(מה שעולה לי בראש זה בכיוון של לולאה
האם זה הכיוון הנכון? זה משהו שמעמיס מאוד על המערכת?
האם ישנם כלים/ספריות מוכנים?
או שבכלל צריך לשמור מראש את השינויים בצורה שונה שתאפשר את השליפה הנ"ל) -
@mekev אמר בפילטור שינויים בלבד לתצוגת המשתמש:
או שבכלל צריך לשמור מראש את השינויים בצורה שונה שתאפשר את השליפה הנ"ל)
אכן. ככה מקובל בכל אופן. יוצרים טבלת "שינויים" שמכילה רק את השינויים.
בעת עדכון אתה עובר בלולאה על השדות ומשווה חדש לישן,
ההבדלים נכנסים לטבלה בסגנון כזה:
זמן, משתמש, [טבלה], שדה, ערך ישן, ערך חדש
העמודה טבלה אופציונלית להתאים לכלל הטבלאות במסד.הדרך הזאת מעבירה את ה"עבודה" משגרת הצפיה בשינויים (שהיא השימוש הרווח) למקרה של שחזור (שזה מקרה שאמור להיות פחות שכיח) בעת שחזור יצטרכו לעבוד יותר מהדרך שנקטת:
א. צריך לולאה כדי לייצר שורה מתאימה למה שהיה קודם
ב. הטיפוסים הם תמיד טקסטואליים (כי הערך ישן וחדש הם בהכרח מסוג טקסט להתאים לכל האפשרויות).אתה יכול לרקוד על כל החתונות עם שני טבלאות, אחת כמו שיש לך כעת לצורך שחזור נקודות זמן מהירים, ואחת טבלת "שינויים" בשביל צפיה נוחה בשינויים.
-