שאילתה אקסס
-
יש לי טבלה באקסס לצורך העניין נאמר שמדובר בטבלה שמאחסנת תשלומים ונאמר שהלקוח ביצע רכישה ב- 12 תשלומים
בטבלה מופיע שורה אחת כשבשדה מספר תשלומים מופיע 12
כעת אני רוצה ליצור שורות כמספר התשלומים
מדובר בטבלה קיימת כך שאין לי את האופציה כבר ביצירת השורה ליצור אירוע שיצור שורות כמספר התשלומים
אם מישהוא יכול להדריך אותי מה הדרך?
תודה רבה מראשפורסם במקור בפורום CODE613 ב05/01/2014 02:19 (+02:00)
-
מדובר בטבלה קיימת כך שאין לי את האופציה כבר ביצירת השורה ליצור אירוע שיצור שורות כמספר התשלומים
לא הבנתי, מדובר בטבלה שמכילה תשלומים, ועכשיו אתה משנה את המבנה במקום שתהיה שורה אחת אתה רוצה לפצל לX שורות? (באותה טבלה או טבלת משנה)
תצטרך ליצור שגרת אירוע חיצונית (חד פעמית כנראה), שפותחת את הטבלה הראשונה, ומוסיפה את הנתונים בטבלה השנייה
אתה יכול להשתמש בקוד הבא:dim rs as recordset dim subrs as recordset set rs=currentdb.openrecordset("select * from tbl1") set subrs=currentdb.openrecordset("select * from tbl2") dim i as integer do until rs.eof for i=1 to rs!PayCount subrs.addnew ' כאן תוסיף את הנתונים לטבלת המשנה - או לטבלה הראשית. אל תשכח להוסיף את ה ID של הטבלה הראשית subrs!bla=1 ' לדוגמא: subrs!id=rs!id ' וזה דוגמא של משתנה שנלקח מהטבלה השנייה subrs.update next i rs.movenext loop
ההערה בקוד יצאה קצת משובשת בגלל האנגלית, אבל אני משוכנע שתבין.
פורסם במקור בפורום CODE613 ב05/01/2014 08:52 (+02:00)
-
ובודאי במקום הקוד שמכניס דרך הוספת חדש בRS תוכל גם להשתמש בשאילתת INSERT
INSERT INTO Tbl2 (id, idpay, bla1, bla2, bla3) values (1, 2, bla1, bla2, bla3)
שים לב שתצטרך לאסוף קודם במשתנים את הכל ואז להחליף בVALUES.
וזה בכל מקרה צריך להיות בתוך הלולאה.
בגלל זה אני אוהב בכאלה מקרים להשתמש באובייקט RS, כי השאילתא במקרה הזה לא חוסכת הרבה.פורסם במקור בפורום CODE613 ב05/01/2014 09:13 (+02:00)
-
אם אתה צריך את זה לתצוגה בלבד (ועדיף שכך, כי זה יותר חסכוני לרשום שורה אחת לכל הכנסה שהיא בתשלומים.
כדאי לעשות את זה נטו עם שאילתה, בדרך הבאה. אתה עושה טבלה עם עמודה אחת שמכילה מספרים בלבד, נניח 24 רשומות שמכילות מספרים 1-24 שם אותה בשאילתה יחד עם טבלת התשלומים, ואז בעצם כל תשלום יופיע 24 פעמים (כי אין קשר גומלין בין הטבלאות), כדי להגביל את זה אתה עושה תנאי שהשדה מספר בטבלת המספרים הוא קטן או שווה לשדה מספר תשלומים בטבלת התשלומים. ואז הכפולות יהיו רק כמספר התשלומים. כעת אתה צריך גם לדאוג שהסכום יהיה חלקי התשלומים, והתאריך יהיה בתוספת של חודש כל רשומה (את זה אתה יכול לשאוב מהרשומה של טבלת המספרים להוסיף את החודשים על התאריך וכך לקבל את התאריך הנכון).
אם לא הובן, אעלה קוד וגם קובץ אם אפשרי.
בהצלחה.
פורסם במקור בפורום CODE613 ב05/01/2014 13:51 (+02:00)
-
ארכיטקט הוציא לי את המילים מהמקלדת.
בדיוק מה שהוא כתב: א. תלוי לשם מה, ב. אם חייבים ברמת מסד (אפי' לשמירה בטבלה (ע"י INSERT) ולא רק שאילתה) אז שאילתה עם קשר גומלין לטבלה עם מס' רץ.
ואז משתילים בכל חודש את התאריך + מיקום במספר הרץ.פורסם במקור בפורום CODE613 ב05/01/2014 14:14 (+02:00)
-
אם אתה צריך את זה לתצוגה בלבד (ועדיף שכך, כי זה יותר חסכוני לרשום שורה אחת לכל הכנסה שהיא בתשלומים.
מנסיון, זה תלוי מאד איזה תשלומים. אם זה שיקים,אז אפילו שזה לתצוגה בלבד אני מעדיף לעשות ממש ולא בשאילתא, מהסיבה שלפעמים שיקים חוזרים, ואז צריך להוציא אותם מהסכום הכללי. בעיקרון, גם באשראי זה קורה לפעמים, (שחברת האשראי מבטלת תשלום בודד מתוך סט של תשלומים, ועדיין לא דיברנו שם על ריטיינר).
דבר נוסף הוא החלוקה של האגורות, לדוגמא: אם יש 100 ש"ח ב3 תשלומים, התשלום הראשון יהיה 33.34 והשאר 33.33, וצריך לזכור לחשבן את זה בשאילתא, דבר נוסף,לפעמים בשיקים יש שיק חריג מבחינת מספר השיק או מבחינת הסכום,לדוגמא: ה33.34 נמצא דווקא בשיק האחרון ולא הראשון.אבל האמת היא ש:
@ארכיטקטאם אתה צריך את זה לתצוגה בלבד (ועדיף שכך, כי זה יותר חסכוני לרשום שורה אחת לכל הכנסה שהיא בתשלומים.
ולכן במקרה של תצוגה בלבד, ארכיטקט צודק לחלוטין. (מלבד שבטבלה השנייה [ללא הקשרי גומלין]) הייתי שם מאה רשומות כדי לא להיות מוגבל עם ה24 תשלומים.
אם כי ברוב המקרים הלקוח איזה שלב ירצה לעשות עם הנתון הזה משהו אמיתי. - לדוגמא מעקב על ההפקדה של השיקים....
@ארכיטקטrecordset עובד יותר מהר משאילתה, אבל מבחינת תחזוקת קוד לפעמים כדאי לעשות sql.
נראה לי, (אבל אני לא בטוח לגמרי) שrecordset יוצר בסופו של תהליך שאילתת יצירה או עידכון לפי העניין, אבל באמת זה רץ יותר מהר משאילתא... (לפחות זוהי התחושה)
פורסם במקור בפורום CODE613 ב05/01/2014 18:01 (+02:00)