@אוריי
על זה נאמר "אקסס!!!!" (בעצבים, או בהשלמה...)
כמויות הבאגים הקטנים האלה ללא מספר.
Y.Excel.Access
-
לא מזהה את הפקד או הטופס -
שיפור SHEETS & FROMS המתפקדים כאתר (מאגר בני הישיבות)בניתי מאגר שידוכים חינמי, המבוסס על SHEETS + FORMS, פרסמתי כאן - "מאגר בני הישיבות".
אני רוצה כעת בל"נ לעבוד עליו להגדלת הקיבולת שלו תוך הגבולות של SHEETS (לחלק לכמה חוברות עבודה וכו') לשפץ ולבנות את החישובים מאחוריו מחדש.
רציתי לשאול אם יש למישהו רעיון לשיפור - בתוך הגבולות החינמיים של GOOGLE.
יש מאגר אחד גלוי ב SHEETS.
טפסי המאגר -
- יש טופס רישום בודד עם פרטי שדכנית / איש קשר
- טופס הוספה עם פרטי בחור/ה
אחרי מילוי טפסים אלו מתבצעת שליחה אוטומטית ועם עותק זה מתאפשרים העדכון / מחיקה.
- טופס לקבלת פירוט המיקומים במאגר של כל מה שהוספת למייל (איזה גליון / שורה זה נמצא, והאם חסרים פרטים ברישום (כגון מי שהוסיף ולא נרשם)).
- טופס בקשה למחיקת פרטים שמישהו אחר הוסיף, כשכבר לא רלוונטי.
במה אפשר לשפר?
חשבתי להוסיף
- אופציה לטופס 3 שבמייל תשובה יישלח גם קישור לעריכה מחודשת של כל שם, כך שלא יצטרכו לשמור את העותק שנשלח למייל אוטומטית.
- אולי גם - שכל הוספה של פרטי בחור/ה תמחק אוטומטית אחרי 3 שנים (או שנה או חמש שנים - אשמח לשמוע) אלא אם עדכנו משהו לבנתיים.
יש לכם רעיון נוסף?
.
- נ.ב. כתבתי את הנושא בקטגורית תוכנה, אך אולי צריך לכותבו בגומלין - אם טעיתי אשמח לשנות את הקטגוריה.
-
C# - הוספת פעולת Poperty מאיבר לאיבר כשהם מקוננים ב List בתוך List.@dovid כתב בC# - הוספת פעולת Poperty מאיבר לאיבר כשהם מקוננים ב List בתוך List.:
הגנריות של List שנתונת לבחור טיפוס כפרמטר לT, הינה דרך מהירה להשתמש בקלאס בהמון וריאציות כאילו כתבנו מחדש שוב ושוב את המחלקה, אבל זה לא נותן בכלל אפשרות לבחור בזמן ריצה איזה טיפוס יהיה שמה.
במקרה שלך הטיפוס יוברר רק בעת ריצה, בזמן קמפול לא ידוע מאומה על מספר העמודות וסוגיהם ושמם. בשביל זה הטיפוסיות של Cֳ# בחיים לא תעזור.אתה צודק, לא חשבתי עד הסוף...
נפק"מ באמת היא רק במקרה ואתה יוצר טבלה חדשה מתוך הקוד. אבל בדר"כ אתה מנסה לקרוא לטבלה קיימת שאינה ממוקמת ב C# עצמו אלא חיצונית לו, בשונה מ ACCESS / SAP-ABAP שם לכאורה זה ממש חלק מהתוכנה...איך? אתה מתכוון פשוט לבנות CASE? וכך לבדוק את הTYPE של כל ערך אם הוא נמצא ברשימה?
לא ממש הבנתי את השאלה, אולי בהזדמנות אכתוב קוד.
יוצא שבאמת אין מנוס מלכתוב CASE על הטיפוס המתקבל (GetType), ולפ"ז להכניס לSQL בצורה הנכונה, (לא צריך לכתוב - אני יודע לכתוב CASE פשוט:)
כמובן כל זה יהיה נצרך כל עוד שאני לא משתמש בגלגל קיים: EntityFramework או ב Dapper או אפילו בתוך SqlClint בספריות DataTable-TableAdapter וכו' בתנאי שזה לא כולל הרכבת משפט SQL ידנית.
-
C# - הוספת פעולת Poperty מאיבר לאיבר כשהם מקוננים ב List בתוך List.@dovid כתב בC# - הוספת פעולת Poperty מאיבר לאיבר כשהם מקוננים ב List בתוך List.:
בשביל לכוף על נתונים להיות מספר ולא טקסט אין צורך (ובמקרה דינמי כמו פה גם אין יכולת) להשתמש בטיפוסיות של השפה.
אגב, בספירה שהצעתי לך Dapper היא עושה את העבודה הזו, אבל צריך בכל זאת שהקלט יגיע עם טיפוס, ולכן חוזרת השאלה הקודמת שלך. אם תעשה רשימת סוגים אז תעשה פונקציה מתאימה לכל סוג שיודעת להמיר את הסוג הזה מטקסט, ואז זה יזוהה נכון ע"י הDapper.
איך? אתה מתכוון פשוט לבנות CASE? וכך לבדוק את הTYPE של כל ערך אם הוא נמצא ברשימה?
נשמע לי עבודה לא מתאימה לסדר של C#...מוזר שאין יכולת כזו של הגבלת טיפוסים, בTYPESCRIPT יש אפשרות להגבלת טיפוסים עם OR לדוגמה - string | int
אי אפשר להשתמש איכשהו עם <T> כמו שהאובייקט List לדוגמה משתמש?
אולי כן ליצור קלאס משנה עם קלט טיפוסיclass Column <T>
שיירש מאינטרפייס הכולל אישכשהו סוג מסויים של טיפוסים,
או רעיון דומה? -
C# - הוספת פעולת Poperty מאיבר לאיבר כשהם מקוננים ב List בתוך List.@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
-
בירור | סקריפט למייל לבדיקת נתונים ב - google sheets@אביי
תודה על ההצעה! - מחפש גם לזה קיצורי דרך, במקום להמציא את הגלגל מחדש...אמנם השאלה שלי ל @יעקב-מ-פינס היתה על ההתקדמות שלו עם מסד נתונים חיצוני איך הוא מבצע, ומה עדיף לעשות מבין שני האפשרויות.
אבל אשמח לשמוע. -
בירור | סקריפט למייל לבדיקת נתונים ב - google sheets@יעקב-מ-פינס
אשמח שתעדכן אותנו, זה יכול לעזור גם למאגר שלי -
איקס עיגול|בדיקה האם יש מנצח|js@צבי-ש נשמח לראות את התוצאה אחרי שתגמור לקודד ולעצב וכו':)
-
בירור | סקריפט למייל לבדיקת נתונים ב - google sheets@יעקב-מ-פינס ע"י טפסי גוגל אני מניח שזה פשוט לך (אם לא - תשאל כאן).
השאלה רק איך לגשת לאפשרות הזו במייל.
אציע לך לעבור על הקוד שפרסם @אביי ב https://tchumim.com/topic/13820/שליחת-וקבלת-מיילים-באמצעות-הטלפון-הכשר-בחינם-abaye-מדריך-מפורט-מתעדכן
שם בין השאר הוא עבד עם מסננים וטריגר שמיגש למייל כל דקה. (תצטרך לבודד את הקוד הזה, יש שם גם קוד של בנייה וגישה לימות המשיח שלא קשורה אליך כמובן).
-
C# - הוספת פעולת Poperty מאיבר לאיבר כשהם מקוננים ב List בתוך List.@dovid כתב בC# - הוספת פעולת Poperty מאיבר לאיבר כשהם מקוננים ב List בתוך List.:
רק תשנה את הIReadOnlyCollection לReadOnlyCollection
הוא רושם לי שאין כזה קלאס / אינטרפייס.
-
מעונין בקוד לאקסס שירענן נתונים כאילו סגר את האקסס ופתח **נפתר**@OdedDvir כתב במעונין בקוד לאקסס שירענן נתונים כאילו סגר את האקסס ופתח **נפתר**:
כנראה שהאובייקט של MSXML2.XMLHTTP מפעיל מנגנון מטמון של הבקשות והתגובות, מה שמסביר את התופעה לעיל בדיוק, כי כל מופע של אקסס משוייך לאותו סשן על ידי המערכת.
@OdedDvir אלוף!
הסימנים והרמזים היו לשם... אבל רק אחד מצא את המטמון! -
C# - הוספת פעולת Poperty מאיבר לאיבר כשהם מקוננים ב List בתוך List.@dovid תודה רבה! אני לומד את הקוד.
בכוונתי להתנסות ולהמשיך וללמוד את זה.
במקביל אבקש שתי בקשות.-
האם אפשר לקבל קישור לאתר (מייקרוסופט?) שמסביר על האופציה של "לתפוס" את הINDEX של איברי המערך / LIST בדומה למה שביצעת כאן, וייתן לי מבט מעמיק יותר?
או אפילו מילים לחיפוש בגוגל שייתנו לי את התוצאות הקשורות ולא יסיטו אותי לנושאים מגוונים אחרים - איך קוראים לנושא שלנו באנגלית תכנותית? -
אם זה קל מבחינתך - האם אפשר גם לעשות אופציה של
Public class Table { public Rows Values; } public class Rows:List<List<object>> { }
כלומר ליצור אובייקט LIST מקונן ב LIST ובו לשלוט.
ואולי אפילו לוותר בכלל על קלאס ROWS.כך שהשימוש יוכל להיות גם כך
/* אתחול. לא על זה השאלה ואני כבר פיתחתי את זה. אבל כאן אני רק מסביר מה כוונתי - אני מקבל את שם הטבלה ואני מתחבר אל הנתונים שלה, ואח"כ אשנה את הנתונים בערכים שבטבלה וממילא יווצר Update Insert Delete. */ List<string> columnsNames columnsNames.Add("name"); columnsNames.Add("family name"); var t = new Table(ColumnsNames:= columnsNames, TableName:= "Table1" , ConnectionText:= "..............."); // שימוש - זהו האופציה שרציתי לקבל: t.Values[0][2] = "tttttt";
-
-
C# - הוספת פעולת Poperty מאיבר לאיבר כשהם מקוננים ב List בתוך List.@dovid כתב בC# - הוספת פעולת Poperty מאיבר לאיבר כשהם מקוננים ב List בתוך List.:
מובן שאתה יכול לאכוף את זה יותר חזק על ידי שהList יהיה List מיוחדת לקריאה בלבד (זה אכיפה שהמפתח כלומר אתה בעצמך לא תעדכן באיזה מקום בטעות שלא דרך המתודה. בשפות עיליות רוב האנרגיות היא נגד (טעויות של) עצמך:) ), ואתה יכול לחילופין לעשות מחלקה משלך שמייצגת שורה ואז יכולו לעדכן איך שרוצים ואתה תידע מזה:
Class Row{ //.... initalize all fields UpdateCell(string field) => .... UpdateCell(int field) => ....}במקרה הזה אתה יכול גם לשלוט על האינדקסר כלומר מה יקרה כשכותבים row[x,y] ושגם אז זה יעדכן ושתדע מזה ותפעיל את השאילתה המתבקשת.
תודה רבה על התשובה המדוייקת, אבל לא הבנתי את דרך היישום.
דווקא היה לי כמה נסיונות עקרים ליצור מחלקה משלי, אבל עדיין המחלקה לא יכולה לצאת מתוך עצמה למתודה אחרת בקלאס הראשי.
אם יש לי 3 מחלקות: TABLE (דרך אגב לא הכרתי את ה DATATABLE של NET), ROWS ו COLUMNS, כך:Public class Table { Public Rows MyRows; } Public class Rows : List<Columns> { } Public class Columns: List<object> { }
איך אני יכול על ידי יישום ROWS ב TABLE לגעת ב GET ו SET הפנימי של COLUMS? איך האוביקט מסוג COLUMNS שנוצר יוכל לצאת ממחלקתו ולשנות משהו בTABLE?
מקווה שהובנתי, אם לא אפשר לשאול מה התכוונתי.
-
מעונין בקוד לאקסס שירענן נתונים כאילו סגר את האקסס ופתח **נפתר**@OdedDvir לא חזר כלום.
ה response היה פשוט == "". -
c# שימוש שוטף בTry/Catch@OdedDvir כתבת מצוין!
הסכמתי ממש עם כל מילה (בפרט על באגים שנוצרים...), הקוד לא אמור להיות מראש עם באגים בשלב ההרצה.
ואוסיף - חלק מההבדל בין שפות עיליות לשפות נמוכות הוא שהשפות העיליות עושות לקוד כל הזמן קצת בדיקות תוך כדי הרצת התוכנה, כדי לחסוך למתכנת את זה, וזה מאט יותר. (לדוגמה - כמדומני ב C אם אתה מכניס ערך למשתנה בו יש קיבולת נמוכה הערך פשוט 'מתקזז' לתוך המשתנה הקטן יותר).אבל, לכאורה את הגירסה ללקוח - בלבד - אכין מראש כמה TRY במקומות מועדים, אם מראש אני יודע שלא הייתי מושלם שם...
ולמה לשחרר ללקוח מוצר לא מושלם? כי לפעמים זה יעלה לו הרבה פחות שעות פיתוח כשנבחנת ההרצה בפועל - כמובן תלוי בסוג הלקוח, ברצונו ובצרכיו. -
מעונין בקוד לאקסס שירענן נתונים כאילו סגר את האקסס ופתח **נפתר**@OdedDvir כתב במעונין בקוד לאקסס שירענן נתונים כאילו סגר את האקסס ופתח:
@Y-Excel-Access ההסבר שהצעת לתופעה, שיש דחייה על ידי השרת של בקשות תדירות של נתונים דומים, לא מסביר מדוע סגירה ופתיחה מחדש של אקסס - כן מועילה? לכן חשבתי שהבעייה היא בעדכון של הנתונים הקיימים באקסס.
אגב, הבקשה היא GET ולא אמורה להעלות נתונים לשרת, רק למשוך ממנו.אבל הRECORDSET עובד מצויין?
בזמנו בדקתי עם @אליהו-בן את השגיאה גם שורה אחר שורה... והכל עבד רק השרת פשוט לא עונה תשובה. -
C# - הוספת פעולת Poperty מאיבר לאיבר כשהם מקוננים ב List בתוך List.אני כעת עובד על המצאת הגלגל מחדש:)
מנסה ליצור קלאס שידמה טבלת SQL, וכל הפעולות שיפעלו על הקלאס ישתקפו בטבלה. (כהמשך לנסיון פתרון השאלה כאן)אז, הדרך שחשבתי הוא ליצור שדה בשם
// private List<List<object>> dataTable; Public List<List<object>> DataTable {get; set;}
אך אני צריך שברגע שישתנה ערך בתוך DATATABLE אוכל לעדכן את הקלאס שהשתנה ערך. (בעצם LIST אחר שכל איבר בו משמש לאחסון הנתונים: שם הטבלה, שם העמודה, וערכי שדות ה ID, או - ליצור מיד UPDATE / DELETE / INSERT).
איך אני ניגש ל PROPERTY של הערכים בתוך ה LIST?
אם אי אפשר הברירה היחידה לכאורה תהיה ליצור מתודה לכל שינוי, אבל אני מנסה להבין לעומק יותר, ולפשט יותר, האם אפשר ליצור את התיעוד של השינוי מעצם שינוי המשתנה?
(רעיון שחשבתי, קצת מופרע אבל אולי זה הכיוון, ליצור קלאס היורש מ LIST<LIST<OBJECT>> ולעשות override
נ.ב. גם אם הדרך לעשות את זה היא לא כמו שאני מנסה, תוכלו במקביל לתשובה על השאלה להכניס את זה בהערת אגב, אבל בבקשה לא להסיט את הנושא לאיך כדאי לפתח.