שורת ה-Total ב-Access מאפשרת לך להציג במהירות סיכום של הנתונים בעמודות של טבלה. לדוגמה, אם תוסיף שורת סה"כ לטבלה המכילה רכישות, תוכל להציג את סך המכירות מספר כולליחידות סחורה או מספר הסחורות שנרכשו.
הערה:כדי להציג את סכום ערכי העמודה, עליך להגדיר את סוג הנתונים של העמודה למספרי, חלקי או מטבע. עבור עמודות לא מספריות, אתה יכול לבחור רק את סוג סיכום ספירת הערכים.
לאחר הוספת השורה תוצאותאתה בוחר את סוג הסכום המוצג עבור כל עמודה. לדוגמה, ניתן להציג אגרגטים כגון סכומים כאשר סוג הנתונים הוא מספר, עשרוני או מטבע. ספירת ערכים אפשרית אם סוג הנתונים הוא ערך טקסט.
בוא נגיד שהטבלה בדוגמה זו תציג את סכום הערכים בעמודות מחיר הרכישהו פריטים שנרכשווהסך הכל עבור העמודה עמדהכפי שמוצג בתמונה למטה.
פונקציות מצטברות מבצעות חישובים על עמודות נתונים ומחזירות תוצאה בודדת. הם יכולים להיות שימושיים אם אתה צריך לחשב ערך בודד, כגון סכום או ממוצע. זכור שפונקציות מצטבר חלות על עמודות נתונים. זה אולי נראה מובן מאליו, אבל בעת תכנון ושימוש בבסיסי נתונים, אתה בדרך כלל מתמקד בשורות של נתונים ורשומות בודדות כך שמשתמשים יכולים להזין נתונים בשדה, להזיז את הסמן ימינה או שמאלה כדי למלא השדה הבאוכן הלאה, אתה משתמש בפונקציות מצטברות, תוך התמקדות בקבוצות של רשומות בעמודות.
נניח שאתה משתמש ב-Access כדי לאחסן ולעקוב אחר נתוני מכירות. באמצעות פונקציות מצטבר, ניתן לחשב את מספר הפריטים הנמכרים בעמודה אחת, את סך המכירות בשנייה ואת המכירות הממוצעות של כל פריט בשליש.
הטבלה שלהלן מתארת את הפונקציות המצטברות של Access הזמינות בשורה Total. זכור שיש פונקציות מצטברות אחרות ב-Access, אך הן משמשות בשאילתות.
פוּנקצִיָה | תיאור | סוגי נתונים נתמכים | זמין בשורת "סה"כ? |
---|---|---|---|
מחשב את הערך הממוצע עבור עמודה. העמודה חייבת להכיל ערכים מספריים, כספיים או תאריך או שעה. הפונקציה מתעלמת מערכים ריקים. |
|||
מספר ערכים |
סופר את מספר האלמנטים בעמודה. |
כל סוגי הנתונים מלבד נתונים סקלרים מורכבים שחוזרים על עצמם כגון עמודת רשימה מרובה ערכים. למידע נוסף על רשימות מרובות ערכים, ראה שיטות עבודה מומלצות ליצירה ומחיקה של שדות מרובים במדריכי הלימוד של שדות מרובים. |
|
ערך מקסימלי |
מחזירה את הרכיב בעל הערך הגבוה ביותר. עבור נתוני טקסט, הערך הגדול ביותר הוא הערך האחרון באלפבית, ו- Access אינו תלוי רישיות. הפונקציה מתעלמת מערכים ריקים. |
, "תאריך ושעה" |
|
ערך מינימלי |
מחזירה את הרכיב עם הערך הקטן ביותר. עבור נתוני טקסט, הערך הקטן ביותר הוא הערך האלפביתי הראשון, ו- Access אינו תלוי רישיות. הפונקציה מתעלמת מערכים ריקים. |
"מספרי", "אמיתי", "מטבע", "תאריך ושעה" |
|
סטיית תקן |
"נומרי", "אמיתי", "מטבע" |
||
מסכם את הרכיבים בעמודה. מתאים לנתונים מספריים וכספיים בלבד. |
"מספר", "אמיתי", "מטבע" |
||
פְּזִירָה |
מחשב את השונות הסטטיסטית עבור כל הערכים בעמודה. מתאים לנתונים מספריים וכספיים בלבד. אם הטבלה מכילה פחות משתי שורות, Access מחזירה ערך ריק. למידע נוסף על הפונקציה Variance, עיין בסעיף הבא. |
"נומרי", "אמיתי", "מטבע" |
פונקציות סטיית תקןו פְּזִירָהערכים סטטיסטיים מחושבים. בפרט, הם משמשים לערכים הנמצאים בקרבת ערכם הממוצע ומצייתים לחוק ההתפלגות הנורמלית (נמצאים על עקומה גאוסית).
נניח שבחרת באקראי 10 כלים שיוצרו על אותה מכונה ומדדת את חוזק השבר שלהם לצורך בדיקת מכונה ובקרת איכות. אם תחשב את חוזק השבר הממוצע תראה שלרוב הכלים יש חוזק שבר קרוב לממוצע, אבל יש גם כלים בעלי ערכים גבוהים ונמוכים יותר. עם זאת, אם תחשב רק את ערך חוזק השבר הממוצע, נתון זה לא ייתן לך מידע על יעילות בקרת האיכות, שכן כמה כלים חזקים או שבירים בצורה יוצאת דופן יכולים להגדיל או להקטין את הערך הממוצע.
פונקציות הִשׁתַנוּתו סטיות תקןציין בעיה זו על ידי ציון עד כמה הערכים קרובים לממוצע. עבור חוזק קריטי, מספרים קטנים יותר המוחזרים על ידי אחת מהפונקציות מצביעים על כך שתהליכי הייצור שלך פועלים כרגיל, מכיוון שחלקם בהיקף מוגבל, מעל או מתחת לממוצע.
תיאור מפורטשונות וסטיית תקן הם מעבר לתחום של מאמר זה. מידע נוסף על שתי התכונות ניתן למצוא באתרי סטטיסטיקה. בעת שימוש בפונקציות פְּזִירָהו סטיית תקןזכור את הכללים הבאים.
דוגמה לחישוב הסכום הכולל בטבלת מסד נתונים של Microsoft Access ללא שימוש בשאילתת SQL
יש מקרים שבהם בטבלת מסד נתונים אתה צריך לחשב את סכום הערכים המספריים של עמודה מסוימת. קיימות שיטות חישוב שונות לכך, אחת מהן מבוססת על באמצעות שאילתת SQL המתאימה.
במשימה זו, באמצעות טבלת Microsoft Access כדוגמה, הסכום הכולל מחושב ללא שימוש בשאילתת SQL. בנוסף, הממוצע האריתמטי של ערכי התאים של העמודה שצוינה מחושב.
באמצעות הדוגמה הזו, ניתן ליצור כל חישוב מספרי על פני מספר רשומות של עמודה נתונה.
המשימה
כתוצאה מכך, ConnectionString נוצר ברכיב ADOConnection1 (איור 2). שורה זו מציינת את סוג ספק הנתונים ואת הנתיב המלא לקובץ מסד הנתונים.
אורז. 2. ConnectionString של רכיב ADOConnection1
כדי להציג טבלת מסד נתונים, עליך להגדיר את מאפייני הרכיבים הבאים:
– ברכיב ADOConnection1, המאפיין LoginPrompt = "false" (איור 3) (ביטול הבקשה לשם משתמש וסיסמה לגישה למסד הנתונים);
- ברכיב ADOTable1, המאפיין Connection = "ADOConnection1" (איור 4);
- ברכיב DataSource1, המאפיין DataSet = "ADOTable1" (איור 5);
- ברכיב DBGrid1, המאפיין DataSource = "DataSource1" (איור 6);
– ברכיב ADOTable1, המאפיין TableName = "Worker" (איור 7);
– ברכיב DBGrid1, מהמאפיין Options, הגדר את האפשרות dgEditing = false (איסור על הזנת נתונים לתאי טבלה ישירות מהרשת DBGrid1) (איור 8).
אורז. 3. מאפיין LoginPrompt של רכיב ADOConnection1
אורז. 4. מאפיין חיבור של רכיב ADOTable1
אורז. 5. מאפיין DataSet של רכיב DataSource1
אורז. 6. מאפיין DataSource של רכיב DBGrid1
אורז. 7. מאפיין TableName של רכיב ADOTable1
אורז. 8. אפשרות dgEditing של המאפיין Options של רכיב DBGrid1
כדי להציג נתונים בטבלה עליך להפעיל את הפעולות הבאות(איור 9):
- בחר טבלה ADOTable1;
– מאפיין Active = true.
לאחר מכן, נתוני הטבלה יוצגו ב-DBGrid1.
אורז. 9. מאפיין פעיל של רכיב ADOTable1
השלב הבא הוא להתאים את הגדלים והמיקומים של הרכיבים בטופס, כפי שמוצג באיור 10.
אורז. 10. טופס בקשה ראשי
על מנת שהטבלה המוצגת תהיה בעלת מראה נכון, עליך להסתיר את השדה ID_Worker, שהוא שדה מפתח. בטבלה, שדה זה הוא מונה. בעת הוספה רשומה חדשההערך בשדה זה נוצר באופן אוטומטי (מוגדל ב-1).
ראשית עליך לקרוא לעורך השדות ("עורך השדות...") של רכיב ADOTable1 מתפריט ההקשר (איור 11).
אורז. 11. קריאה לעורך השדה של רכיב ADOTable1
החלון Form1.ADOTable1 ייפתח. בחלון זה, באמצעות העכבר, עליך לקרוא לתפריט ההקשר. IN תפריט הקשרבחר את הפקודה "הוסף את כל השדות".
כתוצאה מכך, חלון העורך ייראה כפי שמוצג באיור 12.
אורז. 12. עורך שטח
עורך השדות Form1.ADOTable1 מציג את כל השדות בטבלת Worker. כדי למחוק את השדה ID_Worker, עליך ללחוץ לחיצה ימנית על שורת ID_Worker ולבחור בפקודה Delete בתפריט ההקשר. לאחר מכן תוכל לסגור את העורך.
כתוצאה מכך, רק שני שדות יוצגו בטבלה DBGrid1 (איור 13).
אורז. 13. הצגת טבלת Worker עם שני שדות
על מנת שערך הסכום (2 מקומות עשרוניים) יוצג בצורה נכונה בשדה שכר, עליך לבצע את השלבים הבאים.
בחר את הרכיב ADOTable1. קרא לעורך השדות "עורך שדות..." כמתואר בשלב 6. כתוצאה מכך תיפתח רשימה של שני שדות שם ומשכורת. בחר את השורה שנקראת משכורת. אובייקט בשם ADOTable1Salary יופעל ב-Object Inspector.
השלב הבא הוא להגדיר את השדה "פורמט תצוגה" ב-Object Inspector ל-"0.00" (איור 14).
אורז. 14. הגדרת פורמט הפלט בשדה שכר של האובייקט ADOTable1
לאחר השלמת השלבים, שדה השכר בטבלה יוצג בדיוק של 2 מקומות עשרוניים.
כדי לשמור את נתוני הסכום והממוצע האריתמטי, עליך להזין משתנים פנימיים בשם sum ו-avg לתוך הטקסט של מחלקת הטופס TForm1.
משתנים מוזנים בחלק הפרטי. קטע הקוד עבור מחלקת הטופס TForm1 נראה כך:
... סוּג TForm1 = מעמד(TForm) ADOConnection1: TADOConnection; DataSource1: TDataSource; ADOTable1: TADOTable; DBGrid1: TDBGrid; StaticText1: TStaticText; StaticText2: TStaticText; StaticText3: TStaticText; ADOTable1Name: TWideStringField; ADOTable1Salary: TFloatField; תהליך FormActivate(שולח: TObject); תהליך FormClose(שולח: TObject; var Action: TCloseAction); פְּרָטִי( הצהרות פרטיות ) sum:real; // סכום avg:real; // ממוצע פּוּמְבֵּי(הצהרות פומביות) סוֹף; ...ברגע שהמשתמש מוריד את התוכנית, עליך לחשב מיד את ערכי הסכום והממוצע האריתמטי בטבלאות.
לכן, עליך לתכנת את אירוע OnActivate של Form1. אירוע OnActivate ייקרא כאשר הטופס יופעל לאחר הפעלת התוכנית לביצוע.
דוגמה לתכנות אירועים בדלפי מתוארת בפירוט.
במקרה שלנו, המטפל באירועים נראה כך:
תהליך TForm1.FormActivate(שולח: TObject); var f:Tfield; // משתנה נוסף מסוג "שדה" התחל // 1. בודקים אם יש רשומות בטבלה אם ADOTable1.RecordCount = 0 לאחר מכן יְצִיאָה; // 2. השבת את ההדמיה ב-DBGrid1 ADOTable1.DisableControls; // 3. חזור על כל הרשומות של טבלת העובד // 3.1. עבור לערך הראשון ADOTable1.First; // 3.2. אפס את הכמות לאפס sum:= 0; // 3.3. קח את ערך השכר מהרשומה הראשונה f:= ADOTable1.FieldByName("שכר"); // 3.4. עיון ברשומות בטבלה // - בדוק אם הגיע לסוף הטבלה בזמן ADOTable1.Eof<>נָכוֹןלַעֲשׂוֹת התחל // 3.4.1. הגדל כמות sum:= sum + f.Value; // 3.4.2. עבור לערך הבא ADOTable1.Next; סוֹף; // 4. חשב את הממוצע האריתמטי avg:= sum / ADOTable1.RecordCount; // 5. מילוי שורות מסוג TStaticText StaticText1.Caption:= "Sum: " + FloatToStr(sum, ffFixed, 8, 2); StaticText2.Caption:= "שכר ממוצע: " + FloatToStr(avg, ffFixed, 8, 2); // 6. אפשר הדמיה ב-DBGrid ADOTable1.EnableControls; סוֹף;בואו נסביר כמה קטעי קוד.
השיטות DisableControls ו-EnableControls אחראיות על השבתה והפעלה של בקרות חזותיות המחוברות למערך נתונים (מסד נתונים). קריאה לשיטת DisableControls יכולה להאיץ משמעותית את תהליך האיטרציה ברשומות, מכיוון שהיא תמנע מהאפליקציה לבזבז זמן בשרטוט מחדש של התוכן של הפקד DBGrid1 עם כל שינוי רשומה.
תכונה
ADOTable1.RecordCountמציין את מספר הרשומות בטבלה.
ADOTable1.Firstמגדיר את ערך הטבלה הראשון פעיל.
ADOTable1.FieldByName()מאפשר לך לקבל אובייקט מסוג TField עבור שדה נתון. ואז באובייקט זה אתה יכול לקבל מידע מהרשומה הנוכחית. בתוכנית, כדי לגשת לערכי רשומות שדה השכר, נעשה שימוש במשתנה f נוסף מסוג TField. כדי לקרוא את הערך ברשומה הנוכחית של שדה השכר, פשוט התקשר למפעיל
ו.ערךתכונה
ADOTable1.Eofהופך נכון אם מגיעים לסוף הטבלה.
ADOTable1.Nextמיישם מעבר לרשומת הטבלה הבאה.
תוצאת הסכום מוצגת במאפיין Caption של הרכיב StaticText1.
הערך הממוצע האריתמטי מוצג במאפיין Caption של הרכיב StaticText2.
כעת אתה יכול להפעיל את האפליקציה.
אֲנָשִׁים! עזור לי להגיש בקשה פשוטה יש טבלה: פורמט טבלה1: שם הזמנה | כמות | הסכום הכולל של כל ההזמנות הוא 10 רובל הראשונים. שני 20 שפשוף שלישי 30 שפשוף תגיד לי איך להוסיף את השורות בעמודה כמות. כדי להציג את התוצאה "סכום כולל של כל ההזמנות" = 60 רובל והטבלה תתווסף עם הזמן... כלומר. גם הסדר ה-100 יופיע... בהתאם, לצו ה-100 יש כמות משלו. יש צורך ש"הסכום הכולל של כל ההזמנות" יחושב מחדש באופן אוטומטי. תודה מראש על עזרתך.
8 תשובות
בהתבסס על הנתונים שסופקו, זה בלתי אפשרי כיצד נקבע מיון השורות בטבלה?קל לעשות זאת באקסל. לדוגמה, הפקודה =SUM(A1:A100) - כלומר. אנחנו מקבלים את הסכומים של 100 תאים בטבלה למה אנחנו לא יכולים לעשות את זה במסד הנתונים לכל שם הזמנה (טקסט) יש מספר מתאים. למעשה, המספרים האלה (מספרי הסדר) מסודרים. הָהֵן. דוגמה:1 | תיק | 100 לשפשף. |2 | צמיג | 50 לשפשף. |...100 | ספר | 60 לשפשף. |...איך אני יכול לחשב את הסכום הכולל של כל ההזמנות (1...100...)?
מיונג,ב-Excel, יש סדר פיזי של רשומות בטבלה. מה שקובע מה גבוה יותר ומה נמוך יותר. בבסיסי נתונים יחסיים סדר זה אינו קיים. הסדר נקבע לפי המיון שצוין בבקשה, ובהיעדרו הוא יכול להיות כל מיון. אם אתה רוצה שהשאלה תהיה הגיונית, ציין בבירור את הקריטריון שעל בסיסו תוכל לקבוע את סדר הערכים. בדוגמה למעלה, זהו, למשל, מספר השורה. עם זאת, אין שדה כזה במבנה הטבלה המוצגת.
אם אתה רוצה שהשאלה תהיה הגיונית, ציין בבירור את הקריטריון שעל בסיסו תוכל לקבוע את סדר הערכים. בדוגמה למעלה, זהו, למשל, מספר השורה. עם זאת, אין שדה כזה במבנה הטבלה המוצגת.הטבלה מכילה את שדה מספר ההזמנה. הָהֵן. התצוגה הכללית היא משהו כזה: הזמנה מס' שם ההזמנה | סכום הזמנה |1 | תיק | 10rur |2 | קרושקה | 20rur |3 | banka | 30rur |... | ... |***|האם יש כריכה עכשיו? או שוב לא הבנתי משהו... :(איך למצוא את הסכום הכולל של כל ההזמנות?
יש קישור עכשיו?כן. בחר טבלה1.[מספר הזמנה], טבלה1.[שם הזמנה], טבלה1.[כמות הזמנה], Sum(q1.[כמות הזמנה]) AS [סכום כולל של כל ההזמנות]FROM (SELECT t1.[מספר הזמנה] , t1. [שם הזמנה], t1.[כמות הזמנה], t2.[מספר הזמנה] FROM Table1 AS t1, Table1 AS t2 WHERE (((t1.[הזמנה מס.])>=.[הזמנה] ))) AS q1 INNER JOIN Table1 ON q1.t1.[הזמנה מס'] = טבלה1.[מספר הזמנה]קבוצה לפי טבלה1.[מספר הזמנה], טבלה1.[שם הזמנה], טבלה1.[כמות הזמנה];
בחר טבלה1.[מספר הזמנה], טבלה1.[שם הזמנה], טבלה1.[כמות הזמנה], Sum(q1.[כמות הזמנה]) AS [סכום כולל של כל ההזמנות]FROM [ SELECT t1.[מספר הזמנה] , t1. [שם הזמנה], t1.[כמות הזמנה], t2.[מספר הזמנה] FROM Table1 AS t1, Table1 AS t2 WHERE (((t1.[הזמנה מס.])>=.[הזמנה] ))]. AS q1 INNER JOIN Table1 ON q1.t1.[הזמנה מס'] = טבלה1.[מספר הזמנה]קבוצה לפי טבלה1.[מספר הזמנה], טבלה1.[שם הזמנה], טבלה1.[כמות הזמנה];מוצגת שגיאה: שימוש לא חוקי בסוגריים בשם "SELECT t1.[הזמנה מס'.":((מה הבעיה? נוסף לאחר 3 דקות ו-33 שניותאֲנָשִׁים! מוכן לשלוח את ה-BDK. אם אתה כן. אני משלם ב-WM. מאוד דחוף (תוך שעה)
נניח שיש לנו את הטבלה הבאה: טבלה: tblOrdersסוג שדה idOrders CounterfldName TextfldSumma Monetary ואז השאילתה תהיה בערך כך: SELECT Sum(tblOrders.fldSumma) AS FROM tblOrders; Sum-fldSummaזהו כינוי ביטוי Sum(tblOrders.fldSumma). כתוצאה מכך, אנו מקבלים טבלה עם תא אחד. לשם הבהרה, כתבתי דוגמה בקוד ב-VS 2005, ללא טיפול יוצא מן הכלל, כדי שיהיה ברור יותר ראשית עליך ליצור פרויקט ולהוסיף שם כפתור GetSumButtonושדה טקסט SumTextBoxכלומר לשנות את שמם. החלף את שם הטופס ב MainFormולהחליף את הקוד שלו בתחתון. אפשרות קפדנית על אפשרות מפורשת בייבוא System.Data.OleDbPublic Class MainForm """
במאמר זה נדבר על שדות מחושבים ב שאילתות גישה. שאילתה, כמו טבלה, יכולה לבצע חישובים על ערכי מספריים, מחרוזת או תאריך עבור כל רשומה באמצעות נתונים משדה אחד או יותר. תוצאת החישוב יוצרת שדה מחושב חדש בטבלת השאילתות. שלא כמו שדות טבלה מחושבים, שדות מחושבים בטבלאות מסד נתונים מקור אינם יוצרים שדות חדשים. בכל פעם שהשאילתה מבוצעת, מתבצעים חישובים על סמך ערכי השדות הנוכחיים.
ביטויי שדות מחושבים יכולים להשתמש בקבועים ובפונקציות בנוסף לשמות שדות. כתוצאה מעיבוד ביטוי, ניתן לקבל רק ערך אחד.
משימה 1.בטבלת PRODUCT יש את השדות PRICE ו- RATE_VAT חשב את המחיר כולל מע"מ והשווה אותו למחיר המתקבל בשדה המחושב של טבלת מחיר כולל מע"מ.
משימה 2.ניתן להשתמש בפונקציות מובנות בשדות מחושבים ובתנאי סינון. ל- Access יש יותר מ-150 פונקציות מוגדרות.
יהיה צורך לבחור את כל החשבוניות שעבורן בוצע משלוח בחודש נתון. ב-INVOICE, תאריך המשלוח מאוחסן בשדה DATE_OTG עם סוג הנתונים תאריך/שעה.
כדי לחזק זאת, צפה בסרטון הדרכה.