@dovid
התנסיתי הרבה עם חלוקת טבלאות לאיברים רבים
יש הרבה דרכים, תלוי בסוג הפילוחים,
אבל הדרך הכי פשוטה והכי בסיסית היא פשוט ליצור דו"ח על הטבלה שכל עמוד בו מכיל 20 רשומות (או 10)
וכל בחור מקבל דף אחד (או שניים)....
מומחה באקסס
-
איך אני מייצא מתוך טבלא באקסס כל 20 רשומות לטבלא נפרדת? -
איך אני עושה שכל דקה יפתח טופס אחר|אקסס@mgm-ivr
אם יש לך רשימת טפסים מוגדרת מראש
תמלא אותה בטבלה כל שהיא
ותריץ לולאה מטופס מסוים שתרוץ על כל הרשומות ותפעיל את הטפסים לפי הסדר
אגב, כדאי לבדוק אם אתה חייב הרבה טפסים, או שהטיימר יכול רק להחליף את הנתונים בטפסים -
איך אני עושה שכל דקה יפתח טופס אחר|אקססלמה לא לעשות זאת בפאוור פוינט?
בא נאמר שצריך חיבור לנתונים, יש לך מה להציע בפאוור פוינט?
יש תוכנת DataPoint שמחברת בין אקסס לפאוור פוינט
כאן -
אקסס למתחילים: תגובות@odeddvir אמר באקסס למתחילים: יצירת מערכת לניהול תורמים:
Private Sub Form_Current() If Me.frmReceipt.Form.Recordset.RecordCount = 0 Then Me.frmReceipt.Form.AllowAdditions = True Else Me.frmReceipt.Form.AllowAdditions = False End If End Sub
אני אוהב 'לקצר' בקוד שמגדיר מאפיין ל TRUE או FALSE
על ידי השמה של תוצאת התנאי ישירות,
ככה:Me.frmReceipt.Form.AllowAdditions = Me.frmReceipt.Form.Recordset.RecordCount = 0
זה נכון?
-
המאפיין CurrentRecord מזייףשלום וברכה
יש לי טופס שמציג רשומות באקסס (טופס בודד), ויש לחצנים למעבר לרשומה הבא ולמעבר לרשומה הקודמת
אני מעוניין שכאשר הטופס טעון לרשומה הראשונה שלא יהיה מאופשר הלחצן של רשומה קודמת וכאשר הוא על הרשומה האחרונה שלא יהיה מאופשר הלחצן של רשומה הבאהכתבתי קוד כזה
GoPrevious.Enabled = CurrentRecord <> 1 GoNext.Enabled = CurrentRecord <> RecordsetClone.RecordCount
אבל משום מה כאשר אני פותח את הטופס מתוך טופס אחר שמכיל את הרשומות בצורה של טפסים רציפים ואני עושה בתוכו חיפוש (על ידי
bookmark
בRecordSetClone
) פתאום הוא משתבש ולפעמים חוסם את הכפתור הנ"ל למרות שהוא לא הראשון וכן להיפך
אשמח להכוונה
תודה! -
זמן ריצה של קוד@odeddvir אמר בזמן ריצה של קוד:
@מומחה-באקסס תודה על המשוב.
אודה לך אם התגובות בנושא המדריך שלי יתרכזו באשכול המיועד לכך. אשמח לענות לך שם.מצטער שבהשראת השעה כתבתי שלא מן הענין, אשתדל להבא.
אני רואה שגם הסגנון של המשוב על המדריך היה קצת 'כפוי טובה', אולי באמת צריך למחוק אותם, הייתי צריך יותר להתמקד בכמה שהוא מועיל ומוצלח.אם אפשר שאלה נוספת, בבקשה,
כפי שהמלצת, אני כעת מנסה להפוך את כל ה Dcount שלי לערכים של שאילתת קיבוץ
השאלה מה אני עושה בטופס שאני צריך לאפשר בו עריכה, כך שאי אפשר לעשות בו מקור רשומה של משפט SQL המכיל גם GROUP BY
ומצד שני כן חשוב לי שהערך הזה יופיע במקור של הטופס כדי שאני יוכל להפעיל את הטופס עם סינון על הערך הזה
מה שנותן לי רק אפשרות של Dcount (שמצד אחד עדיין מאפשר עריכה, ומצד שני מאפשר פילטור על השדה שלו)
תודה מראש!! -
אקסס למתחילים: תגובות@felner
אם אתה צריך עזרה עם db לתרומות באקסס, ובפרט תת של פורים
יש לי נסיון עשיר בתחום, הן בפרקטיקה והן במתודולוגיה
מרפרוף מלמעלה מה שנתת שם זה עומס של פוקנציות מסובכות אחד על השני, צריך לעשות סדר..
צור קשר ampsoftware1@gmail.com -
זמן ריצה של קוד@odeddvir
משתף את התוצאה שעשית לבסוף בזכותך, אולי יש לך הארות?DoCmd.RunSQL "INSERT INTO DonorsInfoDonations ( DID_Donor_id, YearInCampaign, campaignAbsentee, averageDonation, campaignDonation, DonationOnYear ) " & _ "SELECT Q1.Donor_ID, Q1.YearInCampaign, Q2.campaignAbsentee, Q2.averageDonation, Q2.campaignDonation, Q3.DonationOnYear " & _ "FROM ((SELECT Donor_ID, lngGetCurrentCampaign()-[lngCampaignAdd] AS YearInCampaign FROM Donors) AS Q1 " & _ "LEFT JOIN (SELECT DonationsAllInfromation.Donor_ID, Count(DonationsAllInfromation.donation_ID) AS campaignAbsentee, Avg(DonationsAllInfromation.amountInILS) AS averageDonation, Sum(IIf([amount]>0,1,0)) AS campaignDonation FROM DonationsAllInfromation GROUP BY DonationsAllInfromation.Donor_ID) AS Q2 ON Q1.Donor_id = Q2.Donor_ID) " & _ "LEFT JOIN (SELECT DonationsAllInfromation.Donor_ID, DonationsAllInfromation.amountInILS AS DonationOnYear FROM DonationsAllInfromation WHERE DonationsAllInfromation.YearCampaign=GetYearToGetDonation()) AS Q3 ON Q1.Donor_ID = Q3.Donor_id"
אגב, במקביל הצצתי על ההדרכה שאתה נותן על אקסס,
אתה כותב מצויין ומסביר שלב אחרי שלב, נותן בהירות וקל ללמידה!
ברשותך, נראה שאת הכלל שכתבת בענין התכנון לא כ"כ יישמת בכתיבת המדריך, לדוגמא, אתה מלמד על 'שאילתת עדכון' במקום מאוד שולי ומשני בתור פתרון לנתונים ישנים שלא עודכנו (שמדובר על 3 רשומות שאפשר לעשות ביד), מה גם ש'בטעות' מישהו יכול לדלג על זה. כך שהוא אמנם ידע לבנות מערכת תורמים, אבל פחות את ה'קטע'. ככה נראה לי.
דבר שני, ישנה קפיצה מסוימת. עד שהגעת ל - VBA אתה מסביר ממש בצורה פשוטה וברורה, משם ואילך, דוקא ביסודות של VBA נראה לי עפת מהר מידי.בכל אופן, בתור חובב אקסס, נהניתי מאוד מהמדריך!
ואם כבר, מותר לשאול, איך הגדרת את הצבעים של ה VBE ?
זה קצור לגירסאות החדשות של אקסס? מה חדש בהם בכלל (באופן כללי)?סליחה על ההתקפה...
-
זמן ריצה של קוד@odeddvir אמר בזמן ריצה של קוד:
@מומחה-באקסס אמר בזמן ריצה של קוד:
אפשר על ידי Sum עם IIF:
Count(Donor_ID) AS campaignAbsentee, Sum(IIF(Amount>0,1,0)) AS campaignDonation
ברוך שכיונתי, חשבתי על זה גם כן.
עשיתי כדברך ואכן רץ תוך 4 שניות, במקום 3 דקות... הזוי!
לא יודע למה אני מקובע על ה Dcount ....אם כבר אנחנו מדברים,
הסיבה שאני מאכלס את הנתונים האלה בטבלה נפרדת זה משום שאני צריך הרבה פילטורים על הערכים האלה, כך שלעשות כל פעם Filter בטופס, בדוח או בשאילתה גרם לכך שכל פעם מחדש הוא חישב את כל ה 6,000 לכן אני מאכלס אותם בטבלה, כיון שהם משתנים רק משנה לשנה (כי היחס הוא לשנים), השאלה אם זה נכון להחזיק נתונים בצורה כזאת כאשר הם אינם מוחלטים? -
זמן ריצה של קוד@odeddvir
דבר ראשון, תודה!- אתה צודק, משום מה היה לי איזה עיקרון כזה לשמור בטבלה רק את הDATA הגולמי ביותר, אבל במקרה הזה ההפסד הוא גדול
- אני כן רוצה שיהיה רשומה עבור תורם שאין לו ותק, ושיהיה לו null בשדות הרלוונטים
- אכן, אבל ישנה בעיה קטנה, שים לב של- Count הראשון יש תנאי אחד, ולשני יש 2 תנאים, כך שלא אוכל לעשות את שניהם באותה שאילתה,
אם כן אני חייב לעשות תחילה שאילתת INSERT ל Count הראשון וכן ל avg ואח"כ UPDATE ל Count השני, הבעיה שאי אפשר לעשות Update עם שאילתת קיבוץ
האמת שישנו פתרון לעשות INSETR של השאילתת קיבוץ לטבלה זמנית וממנה לעשות UPDATE אבל משום מה מרגיש לי מסורבל ולא נכון, לא?
-
זמן ריצה של קוד@odeddvir
במקרה הזה ספציפית דוקא בדקתי על ידי שאילתה
לקח לי פי שנים זמן
מדובר בסך הכל על עדכון נתונים על פי Dcount ו Davg
מצו"ב הקוד
זמן הריצה שלו על 6000+ רשומות, הוא בערך 3.5 דקות
המסך שחור כל הזמן
יש לי גם פקד שמציג התקדמות (פס ירוק שמתקדם) והוא אמור להיות מעודכן מערכי הלולאה, אבל כיון שהמסך נתקע זה לא משתקף
תודה!Dim rs As Recordset DoCmd.RunSQL "DELETE * FROM DonorsInfoDonations" Set rs = CurrentDb.OpenRecordset("SELECT Donor_ID, CampaignAdd FROM Donors ") Set rs1 = CurrentDb.OpenRecordset("DonorsInfoDonations") Do While Not rs.EOF rs1.AddNew rs1("DID_Donor_id") = rs("Donor_id") YearInCampaign = GetCurrentCampaignLNG - GetGimatria(rs("CampaignAdd")) If YearInCampaign Then rs1("YearInCampaign") = YearInCampaign rs1("campaignAbsentee") = DCount("Donation_ID", "Donations", "Donor_ID= " & rs("Donor_ID")) rs1("campaignDonation") = DCount("Donation_ID", "Donations", "Donor_ID= " & rs("Donor_ID") & " AND amount >0") rs1("averageDonation") = DAvg("amountInILS", "DonationsAllInfromation", "Donor_ID = " & rs("Donor_ID")) End If rs1.Update rs.MoveNext Loop
הסבר:
הקוד מאכסן בטבלתDonorsInfoDonations
נתוני תרומות ביחס לתורם, הוא רץ על recordSet שמכיל את כל הDonor_ID
ועל כל אחד מהם הוא מוסיף רשומה חדשה בטבלה הנ"ל, ואז מאכלס את השדות הבאים:DID_Donor_id
- מזהה התורם,YearInCampaign
- ותק שנים (על פי חישוב שלGetCurrentCampaignLNG
- שזה מציין במספרים את השנה הנוכחית, פחותGetGimatria
של השנה בה התורם נכנס למאגר , באם יש לו ותק של שנה ומעלה מאכסן גםcampaignAbsentee
- שנים שנפקד, על פי Count של רשומות בטבלתDonations
, וכןcampaignDonation
- שנים שתרם, על פי Count נתוני תרומה בטבלה הנ"ל, וכןaverageDonation
- ממוצע תרומה על פי Avg מהטבלה הנ"ל -
API לקבל את שם הבנק ושם הסניף@katz אמר בAPI לקבל את שם הבנק ושם הסניף:
@חוקר או להשאיר ריק ואז מחזיר לך הכל
לא מדוייק, אם משאיר רק מחזיר 100 ראשונים
-
זמן ריצה של קודשלום וברכה
יש לי קוד באקסס שרץ על 6000 רשומות (דרך RecordSet)
זמן הריצה של הקוד הוא בערך 6-7 דקות
במהלך הריצה היישום נתקע ולא מגיב, ולכן גם אי אפשר לקבל חיווי על מצב ההתקדמות
אני רוצה לווסת את הקוד ולגרום לו לעבוד אפילו ביותר זמן אבל בצורה 'רגועה' בלא לתקוע את הקובץ
ניסתי להריץ לולאה אחרת 'פשוטה' (בלי הרבה משתנים ומניפולציות) שהיא גם לקחה 6 דקות, אבל רצה לי בנחת בלי להיתקע
אני מבין שישנם גורמים מסויימים שגורמים לקוד הארוך - גם להיתקע
האם מישהו יודע מה גורם לקוד 'ארוך' להיות גם 'מסורבל'? -
מבנה נתונים נכון של רשומת הזמנהשלום,
שאלה בסיסית, אבל מצאתי בזה חילוקי דעות.
נניח שיש לי טבלת 'הזמנות' המכילה קוד הזמנה, ושם לקוח, לדוגמא.
במקביל טבלת 'מוצרים' המכילה מוצרים שהוזמנו עם קוד הזמנה (מקושר לטבלת 'הזמנות'), כמות, מחיר ליחידה, מחיר כולל
כעת לכל הזמנה ישנו מחיר כולל (שמחושב לפי סך כל המחירים הכוללים של הפריטים שמקושרים לקוד ההזמנה)
השאלה היא, האם זה נכון לאכסן את הערך הזה בטבלת 'הזמנות' בשדה 'סכום הזמנה' (ואז ליצור איזשהוא אירוע שעל כל פריט שיתווסף יעודכן הערך הזה)
או כיון שהוא תלוי בטבלת המוצרים, זה לא נכון לאכסן אותו בשום טבלה, אלא רק לחשב אותו view \ שאילתה? -
ימות המשיח - ממשק לקריאה נוחה של לוג השיחות@מומחה-באקסס
העלתי את המודולים לפורום של ימות המשיח
ניתן לצפות בהם כאן
https://www.call2all.co.il/f2/viewtopic.php?f=7&t=5922&p=42316#p42316 -
ימות המשיח - ממשק לקריאה נוחה של לוג השיחותאני פיתחתי מודלים רבים לתקשור בין אקסס לימות
המודלים קוראים את קבצי ymgr או קבצי ini וכל סוג קובץ טקסט שנמצא במערכת בקידוד של UTF_8
כמו כן הם פועלים בדרך ההפוכה לעלות קבצי ini מכל סוג
כמו כן יש מודול של Json שמתרגם את כל הקבצים לרשומות בטבלה
כמו כן ישנם פונקציות web שמתקשרות עם המערכת של ימות בapi לכל פקודות הapi של ימות כולל הפעלת קמפיין עדכון רשימת תפוצה ועוד ועוד ועוד
מלבד זאת כמובן אפשר להשתמש בכלל הפונקציות של אקסס ליצירת מיונים דוחות שאילתות קיבוץ וכו' וכו'
במיוחד אם יש לכם מערכת קיימת באקסס שמנהלת את המוסד \ ארגון שלכם זה יוצר נוחות בלתי רגילה
בנוסף, כמעט אין צורך לגשת לאתר של ימות, אפשר לנהל את כל השלוחות דרך האקסס (כולל יצירת השלוחה עצמה על ידי העלאת קובץ ext.ini עם סוג השלוחה)
ניתן ליצור קשר
amp.software1@gmail.com