אופיס 365 שני שאלות באקסס

ראש לשועלים

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

ראש לשועלים

מהמשתמשים המובילים!
תעלומה:
העתקתי את הנוסח שאפקטיביות העלה לפרוייקט שלי, ואקסס מסכם לי את כל הנתונים בכל שורה.
הנה מה שאפקטיביות העלה, ועובד מצויין:
SELECT לקוחות.קוד_לקוח,
(select Sum([תשלומים]![סכום]) from [תשלומים] where [תשלומים].[קוד לקוח] = [קוד_לקוח]) AS [סכום תשלומים],
(select Sum([הזמנות].[סכום_הזמנה]) from [הזמנות] where [הזמנות].[קוד לקוח] = [קוד_לקוח]) AS [סכום הזמנות]
FROM לקוחות
GROUP BY לקוחות.קוד_לקוח;​
והנה אצלי, שלא עובד:
SELECT מוצרים.קוד_מוצר,
(select Sum([אספקה]![מחיר]) from [אספקה] where [אספקה].[קוד_מוצר] = קוד_מוצר) AS [סופק],
(select Sum([מכירות].[מחיר]) from [מכירות] where [מכירות].[קוד_מוצר] = [קוד_מוצר]) AS [נמכר]
FROM מוצרים
GROUP BY מוצרים.קוד_מוצר;​
 

אפקטיביות

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

תעלומה:
העתקתי את הנוסח שאפקטיביות העלה לפרוייקט שלי, ואקסס מסכם לי את כל הנתונים בכל שורה.
הנה מה שאפקטיביות העלה, ועובד מצויין:
SELECT לקוחות.קוד_לקוח,
(select Sum([תשלומים]![סכום]) from [תשלומים] where [תשלומים].[קוד לקוח] = [קוד_לקוח]) AS [סכום תשלומים],
(select Sum([הזמנות].[סכום_הזמנה]) from [הזמנות] where [הזמנות].[קוד לקוח] = [קוד_לקוח]) AS [סכום הזמנות]
FROM לקוחות
GROUP BY לקוחות.קוד_לקוח;​
והנה אצלי, שלא עובד:
SELECT מוצרים.קוד_מוצר,
(select Sum([אספקה]![מחיר]) from [אספקה] where [אספקה].[קוד_מוצר] = קוד_מוצר) AS [סופק],
(select Sum([מכירות].[מחיר]) from [מכירות] where [מכירות].[קוד_מוצר] = [קוד_מוצר]) AS [נמכר]
FROM מוצרים
GROUP BY מוצרים.קוד_מוצר;​
1. מה זה "אצלי לא עובד"???
2. מופיע אצלך קוד_מוצר ללא [], אולי זה קשור ל"אי העבודה"??..
 

ראש לשועלים

מהמשתמשים המובילים!
לא עובד פירושו שהSELECT FROM עובד וה WHERE לא, כך שהוא מציג את אותו סיכום בכל הרשומות. והסוגריים לא משנים.
 

ראש לשועלים

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

ראש לשועלים

מהמשתמשים המובילים!
הנה המוצר המוגמר:
SELECT מוצרים.קוד_מוצר, (select Sum([אספקה]![מחיר]) from [אספקה] where [אספקה].[קוד__מוצר] = קוד_מוצר) AS סופק, (select Sum([מכירות].[מחיר]) from [מכירות] where [מכירות].[קוד__מוצר] = [קוד_מוצר]) AS נמכר
FROM מוצרים
GROUP BY מוצרים.קוד_מוצר;
 

ראש לשועלים

מהמשתמשים המובילים!
הנה המוצר העוד יותר מוגמר, באדיבות אפקטיביות:
SELECT מוצרים.קוד_מוצר, (select Sum([אספקה]![מחיר]) from [אספקה] where [אספקה].[קוד_מוצר] = [מוצרים].[קוד_מוצר]) AS סופק, (select Sum([מכירות].[מחיר]) from [מכירות] where [מכירות].[קוד_מוצר] =[מוצרים].[קוד_מוצר]) AS נמכר
FROM מוצרים
GROUP BY מוצרים.קוד_מוצר;
 

ראש לשועלים

מהמשתמשים המובילים!
מוכר
אפשר גם להוסיף את שם הטבלה לפני שם השדה
[טבלה].[שדה]
מה שכבודו אומר נכון אבל לא מדוייק, כי נכון שבSQL בשונה מפונקציות דומיין DLOOKUP וכדומה, צריך לקרוא לילד בשמו ואין תחום שהוא ברירת מחדל כביכול. ברם אקסס תמיד צועק בהודעת שגיאה כאשר יש מזהה שיכול להתייחס לשני שדות, שהוא לא יודע לאיזה משני השדות קראת, וכאן הוא הריץ את השאילתה כרגיל ולכן זה לא כל כך מוכר.
נ.ב. אם בפונקציות D עסקינן פתאום חשבתי למה כל הדרך הנ"ל טובה יותר מלכתוב בשאילתה 2 פונקציות DSUM שהן קצרות יותר ממשפט SQL?
 

ראש לשועלים

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

ראש לשועלים

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

FullTime

משתמש מקצוען
רציתי שכשהמשתמש עושה אנטר בתיבת טקסט מסוימת הטופס יסגר. אירוע אנטר כאמור אין. אז ניסיתי לעשות את זה ב"בעת יציאה" ואז הוא מתחיל לסגור את הטופס (כלומר לא נתתי לו פרמטרים אז הוא שאל אם לשמור) אבל אז נתקע, הנה התמונה:צפה בקובץ המצורף 380158
מי אומר שאין?
קוד:
Private Sub txtBox1_KeyDown(KeyCode As Integer, Shift As Integer)

    If KeyCode = 13 Then
        DoCmd.Close acForm, "form1"
    End If

End Sub
 

FullTime

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

ראש לשועלים

מהמשתמשים המובילים!
עקומה בהחלט ביחס למה שאפשר לעשות ברשת העיצוב של השאילתות ברגע כמימריה
 

FullTime

משתמש מקצוען
אולי השיטה הזאת תהיה יותר מהירה
קוד:
SELECT לקוחות.קוד_לקוח, Sum([סכום_הזמנה]) AS Expr1, Sum([סכום]) AS Expr2
FROM תשלומים INNER JOIN (הזמנות INNER JOIN לקוחות ON הזמנות.[קוד לקוח] = לקוחות.קוד_לקוח) ON תשלומים.[קוד לקוח] = לקוחות.קוד_לקוח
GROUP BY לקוחות.קוד_לקוח;
 

אפקטיביות

משתמש צעיר
אולי השיטה הזאת תהיה יותר מהירה
קוד:
SELECT לקוחות.קוד_לקוח, Sum([סכום_הזמנה]) AS Expr1, Sum([סכום]) AS Expr2
FROM תשלומים INNER JOIN (הזמנות INNER JOIN לקוחות ON הזמנות.[קוד לקוח] = לקוחות.קוד_לקוח) ON תשלומים.[קוד לקוח] = לקוחות.קוד_לקוח
GROUP BY לקוחות.קוד_לקוח;
זה מה שהוא עשה מלכתחילה ויצר לו מכפלה של הסכומים, בגלל שמדובר על סיכום משני טבלאות
אני הצעתי את הפתרון של משפט SQL בתוך העמודה, פשוט בגלל שאני רגיל להקליד SQL בשפות אחרות... הפונקציה DSUM עושה אותה פעולה, ולא זכרתי ממנה. (ייתכן שבביצועים SQL יהיה יותר מהיר מDSUM. לא בדקתי!)
 

אולי מעניין אותך גם...

הפרק היומי

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


תהילים פרק קכו

א שִׁיר הַמַּעֲלוֹת בְּשׁוּב יי אֶת שִׁיבַת צִיּוֹן הָיִינוּ כְּחֹלְמִים:ב אָז יִמָּלֵא שְׂחוֹק פִּינוּ וּלְשׁוֹנֵנוּ רִנָּה אָז יֹאמְרוּ בַגּוֹיִם הִגְדִּיל יי לַעֲשׂוֹת עִם אֵלֶּה:ג הִגְדִּיל יי לַעֲשׂוֹת עִמָּנוּ הָיִינוּ שְׂמֵחִים:ד שׁוּבָה יי אֶת (שבותנו) שְׁבִיתֵנוּ כַּאֲפִיקִים בַּנֶּגֶב:ה הַזֹּרְעִים בְּדִמְעָה בְּרִנָּה יִקְצֹרוּ:ו הָלוֹךְ יֵלֵךְ וּבָכֹה נֹשֵׂא מֶשֶׁךְ הַזָּרַע בֹּא יָבוֹא בְרִנָּה נֹשֵׂא אֲלֻמֹּתָיו:
נקרא  106  פעמים

אתגר AI

תאומים • אתגר 145

לוח מודעות

למעלה