-
יש לי 2 טבלאות.
טבלה עם נתונים של אנשים, וטבלה עם נתונים של סכומים.
על טבלת הסכומים יש שאילתות סיכום שמסכמות את הסכומים לפי מזהה של האנשים באנשים.אני מנסה לעשות שאילתת עדכון שמשתמשת בתנאים מטבלת האנשים ומהשאילתות שעל טבלת הסכומים, ומעדכנת ערכים בטבלת האנשים.
הגדרתי קש"ג בין המזהה בטבלת האנשים למזהים בשאילתות.
אבל אני מקבל שגיאת שאילתה שאינה ניתנת לעידכון. מה לא עשיתי טוב?
-
@אביי אי אפשר לעדכן טבלה על ידי נתונים מאותה טבלה.
תחשוב מה יכול לקרות - אתה מעדכן את השורה הראשונה על ידי תוצאה של סכום מהטבלה, ובשורה השניה כבר התוצאה תשתנה...
תנסה להשתמש עם DCOUNT, אולי זה ילך כי זה פונקציה של VBA (לא ניסיתי).אפשרות שניה שעשיתי בעבר - להשתמש בטבלת מעבר. כלומר להזין את הנתונים לטבלה ממנה לעדכן לטבלה שלך. ואם אתה רוצה - למחוק אותה אח"כ.
-
@אביי כשאתה באקסס, נקוט כללים אלו בידך:
- כל שאילתא שאינה ניתנת לעדכון - אינה יכולה להיות אחד המרכיבים של שאילתת עדכון.
- שאילתת סיכום אינה ניתנת לעדכון.
גם שאילתא שמבוססת על יותר מ-3 שאילתות - אינה ניתנת לעדכון.<- עריכה: זה לא נכון, כפי שהעיר @אפר-שריפה לקמן.
זכרתי משהו כזה, אך הניסוח הנכון הוא: "The query is based on three or more tables and there is a many-to-one-to-many relationship."
דהיינו שאילתא שמבוססת על 3 טבלאות שיש ביניהן קשר רבים-יחיד-רבים.
ממילא, הדבר שאתה מבקש אינו אפשרי בדרך זו.
ניתן להשתמש בפונקציית התחום DSum, DCount וכו' כפי שהציע @גגד, אבל הרבה יותר יעיל להשתמש בטבלת עזר זמנית:
א. צור שאילתת יצירת טבלה שיוצרת טבלת עזר זמנית המכילה את הסכומים עבור כל מזהה של איש.
ב. צור שאילתת עדכון שמעדכנת את טבלת האנשים לפי טבלת העזר. -
-