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

ראש לשועלים

מהמשתמשים המובילים!
כתיבה ספרותית
איך אני מתייחס לאירוע הקשת 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. לא בדקתי!)
 

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

הפרק היומי

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


תהילים פרק קלב

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

אתגר AI

תקווה לעתיד טוב יותר • אתגר 17

לוח מודעות

למעלה