עזרה בטבלה

DAVC22

New member
עזרה בטבלה

היי, יש לי טבלה שמרכזת הכנסות והוצאות.בין היתר יש שדה לסכום הכנסה,הוצאה ויתרה. היתרה היא ההפרש בין הכנסה להוצאה כמובן.אם אני עושה SUM להכנסה מינוס SUM להוצאה אני מקבל היתרה אבל זה מעדכן באותה תוצאה את כל הרשומות. כיצד אני עושה שהתוצאה הקודמת תשאר ותציג את ההפרש נכון לעד אותה רשומה? תודה מראש דוד
 

tberger

New member
יותר פרטים

האם עד לחישוב היתרה ריקה ? ניתן להוסיף בשאילתה WHERE FIELD=NULL
 

DAVC22

New member
יותר פרטים..

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

אלון_פ

New member
שתי אופציות:

א. לבנות שאילתה אשר מציגה את כל השדות + תוצאת חישוב של כל הנתונים עד לאותה נקודה. ב. להוסיף שדה יתרה מצטברת, ולעדכן אותו כל פעם בקוד, העדכון יכול להעשות בין עם פרוצדורת VB או על ידי השאילתה בדומה לשעיף א´ לעיל. אופציה זו עשויה להיות יותר נוחה מבחינת ביצועים. אלון
 

arye9

New member
תבדוק את זה

דבר ראשון בניתי את זה לפני המון זמן, רצוי שלא תתן שמות בעברית כמו שאני נתתי. דבר שני עד כמה שאני זוכר עשיתי שם איזה פישול קטן שהיתי צריך ללכוד אותו בERR אבל זה עובד בסדר רק לא כל כך אלגנטי דבר שלשי שמתי מדידה לזמן רק לשם הדגמה כי בדקתי את זה ב 30.000 רשומות (פיקטיביות כמובן, הכנסתי באופן אוטומטי) וזה לוקח כמה דקות, דבר שקצת מעצבן דבר רביעי בקשר ל Application.Echo 0 תנטרל את זה עד שתראה שהכל עובד בסדר, אם יהיה לך בג זה יכול לעצור את המחשב ודבר רביעי בהצלחה
Private Sub פקודה61_Click() On Error GoTo er OrderByOn = True OrderBy = "תאריך_ערך" Dim T T = Timer Application.Echo 0 ´AllowAdditions = -1 Requery Refresh Dim ctl As Control, Schum Dim Dbs As Database Dim recS As Recordset Set Dbs = CurrentDb Set recS = Dbs.OpenRecordset("תזרים") DoCmd.GoToRecord , , acFirst Dim a As Integer For a = 0 To recS.RecordCount Schum = Schum + סכום סך_הכל = Schum DoCmd.GoToRecord , , acNext Next DoCmd.GoToRecord , , acFirst ex: DoCmd.GoToRecord , , acFirst ex1: Application.Echo -1 AllowAdditions = 0 MsgBox Format(Timer - T, "0.0") & " שניות ", vbInformation, "זמן חישוב יתרות" Idkun_TOTAL = Now txt_IDKUN_TIME = Format(Now, "dd/mm/yy hh:mm") Exit Sub er: If Err = 2105 Then Resume ex ´ If Err = 94 Then Resume ex If Err = 2427 Then MsgBox "עדיין אין פעילות, מומלץ לצאת מהטופס", vbInformation, "טופס ריק" Resume ex1 End If MsgBox Err ´.Description Resume ex1 End Sub​
 

תמיר2000

New member
דרך נוספת שאני משתמש בה

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

arye9

New member
שאלה קטנה לתמיר

האם יש דרך לכתוב ב: DATA>CONTROL SOURCE משהוא כמו
=(This_Schum+Prev_Total)​
כלומר כמו שאמרתה לחבר את הסכום הנוכחי ואת היתרה הקודמת? תודה אריה
 

DAVC22

New member
תודה.מצאתי גם דרך..

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