@בער
הלואי והיה אפשר לפתור את זה ברמת הפורמס...
אם תדע, אשמח מאוד לשמוע, יהיה לי נפק"מ הרבה.
הפתרון הפשוט הוא ליצור בשיטס המקבל את הנתונים פונקציה
=ARRAYFORMULA(IF(A:A100="ארה""ב",B:B100,C:C100)
@בער
הלואי והיה אפשר לפתור את זה ברמת הפורמס...
אם תדע, אשמח מאוד לשמוע, יהיה לי נפק"מ הרבה.
הפתרון הפשוט הוא ליצור בשיטס המקבל את הנתונים פונקציה
=ARRAYFORMULA(IF(A:A100="ארה""ב",B:B100,C:C100)
לכאורה, אפשר אולי להכליל בצורה גסה שהתכנון תלוי עד כמה אתה רוצה לתכנן תבנית ברורה ובנויה עד הסוף.
אם הכל מדויק, אז אפשר בכלל לכתוב תשלום מ- עד או מספר פעימות והשאילתה תחשב הכל.
אבל אם תגלה שיהיה לך צורך פתאום בהערות על כל תשלום, וכו' וכו', אז אולי עדיף כן להעביר כל תשלום בפועל לטבלה אחרת.
בעצם זה עד כמה אתה עובר מאקסל לאקסס. לפעמים הצורך הוא דווקא גמישות, שם הדמיון לאקסל יעזור, שהכל כתוב ברור ותמיד אפשר להוסיף פרטים. ולפעמים הצורך הוא שיהיה אוטומטי ומסודר לגמרי, שאז צריך לבנות ממש 'לפי הספר' בחשבון של כמה שפחות שורות DATA מיותרות.
כשאני עושה לעצמי בדר"כ אני עושה מתוכנן עד הסוף, כשלכל הנתונים שיכולים להיות מחושבים על ידי שאילתה אני יוצר שאילתה. ואם צריך שינוי כלשהו אני בונה עוד. (כך זה קל יותר באקסס, כי הבניה קלה, אבל הקוד VBA / מאקרו המתערב בDATA מקשה מאוד ובו בעיקר הבדיקות למניעת באגים)
לגוף השאלה:
@איש-ימיני כתב באקסס | איך מתכננים גביית הו"ק מזומן?:
או אולי טוב יותר ליצור בתחילת בחודש שורת חובה לכל תשלום, במקום לחשב הכל בשאילתות?
אני רק עונה רעיון איך ליצור את זה בלי קוד / מאקרו - אפשר ליצור את זה עם DSUM בפקד מחושב על ידי בונה הביטויים (קונטרול F2).
@איש-ימיני מוסיף עוד:
אני הייתי עורך את זה - טבלת התחייבויות, בה יש שדה בשם 'מספר תשלומים' ושדה בשם 'סוג תשלום המכיל רשימה של 'חד פעמי; שבועי; חודשי לועזי; חודשי עברי; רבעוני; שנתי' ויוצר כלל אימות שכל פעם שנבחר בסוג תשלום חד פעמי מספר התשלומים יהיה == 1.
שם אפשר בטופס לתת כפתור 'עמד בתשלומים בזמן עד כאן' או V/X (או ברירת מחדל שעמד - שאז צריך לציין רק כשלא) וכו'
ואז ליצור טבלת תשלומים בה אפשר לקשר לטבלת התחייבויות (ע"י מפתח זר אופציונלי, אם אני לא טועה זכור לי שעושים את זה בטבלה מקשרת נפרדת הקשורה בשדה ראשון בקשר יחיד ליחיד לID של טבלה נוכחית, ובשדה שני קשורה לID של טבלת התחייבויות) ובה להוסיף את התשלומים בפועל מתי שהתרחשו.
@איש-ימיני
תגובה ראשונית:
מה קורה אם יש תורם שרוצה להוסיף תרומה בלי קשר להו"ק? צריך ליצור חלוקה ברורה - אפשר אפי' ע"י שדה כן/לא - בין תרומה ח"פ החוסכת את הוראות הקבע הבאות לבין תרומה ח"פ שאינה קשורה להו"ק.
@איש-ימיני
בעצם הצורך שנוסף דווקא בגבייה במזומן הוא:
יש גם את הצורך שיש כבר בכל ניהול תשלומים:
לא חשבנתי כאן את הדרך לעשות את זה ואיך להשתמש, רק את הארכיטקטורה הכללית.
@mekev תודה רבה!
כשאני בוחן איך לבצע למעשה,
לכאורה כדאי לשלב את זה - אולי לעשות גליון נוסף בו יהיו כל הפרטים בצורה מעוצבת כנ"ל ובכל שורה קיימת בגליונות הקיימים לעשות פונקציה המכילה לינק לשורה בגליון המעוצב.
כך יהיה אפשר לשלב - גם לסנן או לראות את הפרטים אחד אחרי השני בגליונות הקיימים, וכשרוצים להתמקד ילחצו על הלינק ויראו רק פרטים של בחור/ה אחד.
@אוריי
על זה נאמר "אקסס!!!!" (בעצבים, או בהשלמה...)
כמויות הבאגים הקטנים האלה ללא מספר.
בניתי מאגר שידוכים חינמי, המבוסס על SHEETS + FORMS, פרסמתי כאן - "מאגר בני הישיבות".
אני רוצה כעת בל"נ לעבוד עליו להגדלת הקיבולת שלו תוך הגבולות של SHEETS (לחלק לכמה חוברות עבודה וכו') לשפץ ולבנות את החישובים מאחוריו מחדש.
רציתי לשאול אם יש למישהו רעיון לשיפור - בתוך הגבולות החינמיים של GOOGLE.
יש מאגר אחד גלוי ב SHEETS.
טפסי המאגר -
אחרי מילוי טפסים אלו מתבצעת שליחה אוטומטית ועם עותק זה מתאפשרים העדכון / מחיקה.
במה אפשר לשפר?
חשבתי להוסיף
יש לכם רעיון נוסף?
.
@dovid כתב בC# - הוספת פעולת Poperty מאיבר לאיבר כשהם מקוננים ב List בתוך List.:
הגנריות של List שנתונת לבחור טיפוס כפרמטר לT, הינה דרך מהירה להשתמש בקלאס בהמון וריאציות כאילו כתבנו מחדש שוב ושוב את המחלקה, אבל זה לא נותן בכלל אפשרות לבחור בזמן ריצה איזה טיפוס יהיה שמה.
במקרה שלך הטיפוס יוברר רק בעת ריצה, בזמן קמפול לא ידוע מאומה על מספר העמודות וסוגיהם ושמם. בשביל זה הטיפוסיות של Cֳ# בחיים לא תעזור.
אתה צודק, לא חשבתי עד הסוף...
נפק"מ באמת היא רק במקרה ואתה יוצר טבלה חדשה מתוך הקוד. אבל בדר"כ אתה מנסה לקרוא לטבלה קיימת שאינה ממוקמת ב C# עצמו אלא חיצונית לו, בשונה מ ACCESS / SAP-ABAP שם לכאורה זה ממש חלק מהתוכנה...
איך? אתה מתכוון פשוט לבנות CASE? וכך לבדוק את הTYPE של כל ערך אם הוא נמצא ברשימה?
לא ממש הבנתי את השאלה, אולי בהזדמנות אכתוב קוד.
יוצא שבאמת אין מנוס מלכתוב CASE על הטיפוס המתקבל (GetType), ולפ"ז להכניס לSQL בצורה הנכונה, (לא צריך לכתוב - אני יודע לכתוב CASE פשוט:)
כמובן כל זה יהיה נצרך כל עוד שאני לא משתמש בגלגל קיים: EntityFramework או ב Dapper או אפילו בתוך SqlClint בספריות DataTable-TableAdapter וכו' בתנאי שזה לא כולל הרכבת משפט SQL ידנית.
@dovid כתב בC# - הוספת פעולת Poperty מאיבר לאיבר כשהם מקוננים ב List בתוך List.:
בשביל לכוף על נתונים להיות מספר ולא טקסט אין צורך (ובמקרה דינמי כמו פה גם אין יכולת) להשתמש בטיפוסיות של השפה.
אגב, בספירה שהצעתי לך Dapper היא עושה את העבודה הזו, אבל צריך בכל זאת שהקלט יגיע עם טיפוס, ולכן חוזרת השאלה הקודמת שלך. אם תעשה רשימת סוגים אז תעשה פונקציה מתאימה לכל סוג שיודעת להמיר את הסוג הזה מטקסט, ואז זה יזוהה נכון ע"י הDapper.
איך? אתה מתכוון פשוט לבנות CASE? וכך לבדוק את הTYPE של כל ערך אם הוא נמצא ברשימה?
נשמע לי עבודה לא מתאימה לסדר של C#...
מוזר שאין יכולת כזו של הגבלת טיפוסים, בTYPESCRIPT יש אפשרות להגבלת טיפוסים עם OR לדוגמה - string | int
אי אפשר להשתמש איכשהו עם <T> כמו שהאובייקט List לדוגמה משתמש?
אולי כן ליצור קלאס משנה עם קלט טיפוסי
class Column <T>
שיירש מאינטרפייס הכולל אישכשהו סוג מסויים של טיפוסים,
או רעיון דומה?
@dovid רציתי להגיב מזמן, ולא התאפשר...
ישנם שני חידושים בתשובה שלך,
חידוש אחד בתשובת הקוד הראשונה - אפשר להגיע לאינדקסר של המחלקה הקיימת למרות שיורשת מLIST שיש לו כבר אינדקסר בפנ''ע וללא פעולת OVERRIDE, ואיך לבצע זאת.
חידוש שני בתשובת הקוד השניה - אפשר ליצור אינדקסר חדש למחלקה בה אין לה מראש אינקסר, ואיך לבצע זאת.
למרות החידוש השני הוא פשוט יותר, מבחינתי גדול החידוש הזה האחרון מן הראשון.
מה שעשיתי בפועל במסגרת האימון המצאת הגלגל (כבר אנימנסה ללמוד לעומק את הגלגל של C#, אל דאגה לא נתקעתי בזה... אבל אולי אחרי הלימוד כן אצור גלגל יפה יותר, ולכן אני משתף כאן) זה להעמיס כמה אינדסקרים - [int,int] לכל הנתונים לפי אינדקס, [int,string] לכל הנתונים לפי אינדקס שורה ושם עמודה, [Int] לשורה שלימה.
ומחקתי את קלאס CLOUMNS ויצרתי רק קלאס אחד 'values' פרייווט. וכו' (פונקציות להוספת ומחיקת שורה / עמודה).
נתקעתי באיך אפשר ליצור TYPE לכל עמודה (מה שיחייב אותי לכאו' לקנן את השורות בעמודות ולא להיפך) אחרי שהיא מקוננת כבר בLIST כללי, וזה שצריך להגביל את בחירת הטיפוס רק לפי הטיפוסים של SQLSERVER.
גם איך להכניס את הנתונים לשאילתות => טיפוסים מסוג סטרינג להוסיף מרכאות, מסוג INT LONG DOUBLE וכו' לא להוסיף כלום, DATE וכו' שאני חושש לפספס משהו...
@OdedDvir כתב באכסס - פתיחת שני טפסים במקביל:
למעשה, הגדרת טופס X כמודולרי גורמת שלא יוכלו לפתוח שום טופס אחר, מודולרי או לא, בזמן שטופס X פתוח. (לפחות לא בצורה סטנדרטית)
אם הטופס לא נפתח מתוך הטופס הראשוני:
אם הטופס נפתח מתוך הטופס הראשוני:
אני מצרף דוגמה שבניתי הרגע.Microsoft Access Database חדש.accdb
(יוצא שעדיין הנוסח הקודם שלי לא היה מדוייק...)
@בער כתב בנוסחאות בגוגל שיטס בין קבצים:
@בער כתב בנוסחאות בגוגל שיטס בין קבצים:
@אביי
כן זה עובד
אבל שאלה: אם אני רוצה להביא עם הנוסחה רק עמודות ספציפיות כגון A C F איך אני רושם את זה. ברגיל רושמים את זה עם { }, איך עושים את זה בנוסחת IMPORTRANGE?זה מה שיצא לי....
=FILTER({IMPORTRANGE("https://docs.google.com/spreadsheets/d/1VIsjQAdAFnEd8bO_5ck3lzC0aUfKLmlXmSIOYCyGPUE/edit#gid=280443997","אספקה חדש!$B:$B"),IMPORTRANGE("https://docs.google.com/spreadsheets/d/1VIsjQAdAFnEd8bO_5ck3lzC0aUfKLmlXmSIOYCyGPUE/edit#gid=280443997","אספקה חדש!$U:$U"),IMPORTRANGE("https://docs.google.com/spreadsheets/d/1VIsjQAdAFnEd8bO_5ck3lzC0aUfKLmlXmSIOYCyGPUE/edit#gid=280443997","אספקה חדש!$F:$F")},IMPORTRANGE("https://docs.google.com/spreadsheets/d/1VIsjQAdAFnEd8bO_5ck3lzC0aUfKLmlXmSIOYCyGPUE/edit#gid=280443997","אספקה חדש!$W:$W")="חטיפים")
מצויין, אבל לכאורה זה עלול להיות כבד, בפרט אם יהיה לך הרבה עמודות, כי יש הרבה קריאות שוב ושוב לחוברת עבודה אחרת.
יש באג בגוגל בייבוא מחוברת עבודה לחוברת עבודה, שקורה במקרה וישנה נוסחה עם חישובים מורכבים בגליון הקודם או בייבוא תאים מרובים מדי.
פשוט מדי פעם הפונקציה הופכת לשגיאה, ורק במחיקת הפונקציה וכתיבתה מחדש היא תחזור לעבוד.
אולי אני טועה, אבל יכול להיות שלפ"ז יש נפק''מ לנסות לצמצם בקריאות IMPORTRANGE ולכתוב בגליון מקור את הנתונים סמוכים, כך הקריאה תהיה אחת, ל A:D.
@ארי כתב באכסס - פתיחת שני טפסים במקביל:
@יששכר-יעקבזון כנראה הוא מוגדר כטופס מוקפץ, תשנה במאפיינים של הטופס.
לא מדוייק, עם טופס מוקפץ אפשר לפתוח עוד טפסים.
רק אם מוגדר גם 'כן' על 'מודולרי'
אי אפשר לפתוח טפסים שאינם מודולריים.
אני מביא מקור ראשון שיצא בחיפוש, אמנם יצא לי מאמר שמדבר בסביבת VBA אבל זה עדיין מוכיח (וגם כמובן הבדיקה הפשוטה) - https://learn.microsoft.com/en-us/office/vba/api/access.form.modal
@אביי
תודה על ההצעה! - מחפש גם לזה קיצורי דרך, במקום להמציא את הגלגל מחדש...
אמנם השאלה שלי ל @יעקב-מ-פינס היתה על ההתקדמות שלו עם מסד נתונים חיצוני איך הוא מבצע, ומה עדיף לעשות מבין שני האפשרויות.
אבל אשמח לשמוע.
@יעקב-מ-פינס
אשמח שתעדכן אותנו, זה יכול לעזור גם למאגר שלי
@צבי-ש נשמח לראות את התוצאה אחרי שתגמור לקודד ולעצב וכו':)
@יעקב-מ-פינס ע"י טפסי גוגל אני מניח שזה פשוט לך (אם לא - תשאל כאן).
השאלה רק איך לגשת לאפשרות הזו במייל.
אציע לך לעבור על הקוד שפרסם @אביי ב https://tchumim.com/topic/13820/שליחת-וקבלת-מיילים-באמצעות-הטלפון-הכשר-בחינם-abaye-מדריך-מפורט-מתעדכן
שם בין השאר הוא עבד עם מסננים וטריגר שמיגש למייל כל דקה. (תצטרך לבודד את הקוד הזה, יש שם גם קוד של בנייה וגישה לימות המשיח שלא קשורה אליך כמובן).
@dovid כתב בC# - הוספת פעולת Poperty מאיבר לאיבר כשהם מקוננים ב List בתוך List.:
רק תשנה את הIReadOnlyCollection לReadOnlyCollection
הוא רושם לי שאין כזה קלאס / אינטרפייס.
@OdedDvir כתב במעונין בקוד לאקסס שירענן נתונים כאילו סגר את האקסס ופתח **נפתר**:
כנראה שהאובייקט של MSXML2.XMLHTTP מפעיל מנגנון מטמון של הבקשות והתגובות, מה שמסביר את התופעה לעיל בדיוק, כי כל מופע של אקסס משוייך לאותו סשן על ידי המערכת.
@OdedDvir אלוף!
הסימנים והרמזים היו לשם... אבל רק אחד מצא את המטמון!