יותר

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


אני כותב תוסף ArcMap באמצעות C # עם Visual Studio 2010 ו- ArcGIS 10.1. אני רוצה להוסיף תכונות לשיעור תכונות ב- Geodatabase Enterprise (שרת ArcGIS 10.1 בשרת SQL). זה הקוד שלי:

var mapLayers = GetAllLayersFromMap (); אם (mapLayers.Count> 0) {IWorkspace workpace = ((IDataset) mapLayers [0]). סביבת עבודה; IFeatureWorkspace fWorkspace = שטח עבודה כמו IFeatureWorkspace; IWorkspaceEdit workspaceEdit = fWorkspace כ- IWorkspaceEdit; workspaceEdit.StartEditing (שקר); workpaceEdit.StartEditOperation (); ILayer layerPunt = mapLayers [0] כ- ILayer; IFeatureLayer featureLayer = layerPunt כמו IFeatureLayer; נקודות IFeatureClass = featureLayer.FeatureClass; IFeatureBuffer bufferPunten = נקודות.CreateFeatureBuffer (); IFeatureCursor cursorPunten = נקודות.הכנס (נכון); workspaceEdit.StopEditOperation (); workspaceEdit.StopEditing (נכון); }

כשאני מעמיס תכונה שאין לה קבצים מצורפים זה עובד בסדר. אם אני יוצר קבצים מצורפים לאותה תכונה ונסה שוב, זה נכשל. הקוד מתרסק בשורה שבה נוצר סמן ההוספה: "לא ניתן לערוך אובייקטים במחלקה זו מחוץ להפעלת עריכה". כשאני מוחק את הקבצים המצורפים מהכיתה, זה עובד שוב.

אם אני מתחיל הפעלת עריכה מ- ArcMap דרך סרגל הכלים של עורך, אני יכול לערוך משקפי משקל עם קבצים מצורפים (btw: זה מוכיח שרמת הרישוי בסדר). אז ניסיתי להתחיל את הפעלת העריכה מקוד דרך ממשק IEditor. זה נכשל באותו קו עם חריג COM.

רעיונות מישהו?


אני לא בטוח למה הקוד שלך לא עובד, אבל הנה דוגמה שעושה זאת. אם נניח שיש לך הפניות לסביבת העבודה ולסדרת התכונות, בצע את זה:

var editWorkspace = סביבת עבודה כ- IWorkspaceEdit; editWorkspace.StartEditing (שקר); // או נכון, מה שאתה רוצה var cursor = featureclass.Insert (true); var buffer = featureclass.CreateFeatureBuffer (); buffer.Shape = PointClass חדש {X = 150000, Y = 455000}; // הסמן לא הכרחי בהחלט. InsertFeature (חיץ); editWorkspace.StopEditing (נכון);

יהיה עליך להשתמש ב- IMultiuserWorkspaceEdit בשילוב עם IWorkspaceEdit:

IMultiuserWorkspaceEdit muWorkspaceEdit = (IMultiuserWorkspaceEdit) מערך נתונים. IWorkspaceEdit workspaceEdit = (IWorkspaceEdit) dataset.Workspace; muWorkspaceEdit.StartMultiuserEditing (esriMultiuserEditSessionMode.esriMESMVersioned); // או esriMultiuserEditSessionMode.esriMESMNonVersioned workpaceEdit.StartEditOperation ();

.NET 4.0 נכשל בעת שליחת דוא"ל עם קבצים מצורפים גדולים מ -3 MB [סגור]

רוצה לשפר את השאלה הזו? עדכן את השאלה כך שהיא תהיה בנושא בנושא הצפת Stack.

לאחרונה הייתה לי בעיה לאחר שדרוג המסגרת .net שלי ל -4.0 מ -3.5:

System.Net.Mail.SmtpException: כישלון שליחת דואר. ---> System.IndexOutOfRangeException: האינדקס היה מחוץ לתחום המערך. ב- System.Net.Base64Stream.EncodeBytes (מאגר בייט [], קיזוז Int32, ספירת Int32, dontDeferFinalBytes בוליאני, בוליאני אמור להשלים את SpaceToCRLF) ב- System.Net.Base64Stream.Write (מאגר בתים [], קיזוז Int32, ספירת Int32) ב- System.Net .Mime.MimePart.Send (כותב BaseWriter) ב- System.Net.Mime.MimeMultiPart.Send (כותב BaseWriter) ב- System.Net.Mail.Message.Send (כותב BaseWriter, בוליאני sendEnvelope) ב- System.Net.Mail.SmtpClient. שלח (הודעת MailMessage) --- סוף עקבות הערימה החריגה הפנימית ---

אם למישהו אכפת מהנושא הזה, אנא הצביעו עליו בקונטקט, כך שהוא יתוקן מוקדם יותר.


7 תשובות 7

כפי שאחרים אמרו, מכיוון שהשדה הוא פרטי, אתה לא צריך לנסות להשיג אותו עם קוד רגיל. הפעם היחידה שזה מקובל היא במהלך בדיקת יחידות, וגם אז אתה צריך סיבה טובה לעשות זאת (כגון הגדרת משתנה פרטי ל- null כך שהקוד בגוש חריג ייפגע וניתן יהיה לבדוק אותו).

אתה יכול להשתמש במשהו כמו השיטה למטה כדי להשיג את השדה:

אז אתה יכול לקרוא לזה כמו:

שוב, אין להשתמש בזה ברוב המקרים.

אתה לא יכול - ואתה לא אמור לעשות זאת. שֶׁלָה פְּרָטִי. אם מדובר בכיתה של מישהו אחר, ברור שהם לא רוצים שתהיה לך גישה לשדה זה. העובדה שהיא פרטית מאפשרת להם לשנות את היישום מאוחר יותר - הם עשויים בסופו של דבר לערך זה כחלק ממשתנה אחר, או לשנות את שמו, או אולי להיעלם לחלוטין אם זה כבר לא נדרש על מנת ליישם את ה- API הציבורי.

אם זה הכיתה שלך ואתה בטוח שאתה רוצה שאנשים אחרים יוכלו לגשת אליו, פשוט חשף אותו עם נכס:

עריכה: לאחר שראית את הערותיך, אתה פחית לגשת לשדות הפרטיים עם השתקפות. אבל למבחן קבלה אתה לא צריך. אתה צריך לבדוק את ה- API הציבורי. ל יחידה מבחנים זה הגיוני לכופף את הכללים לפעמים, ולהתייחס לכיתה כאל "קופסה לבנה" ולא לעשות בדיקות "קופסה שחורה", אבל לבדיקות קבלה בהחלט הייתי מקפיד על ה- API הציבורי.

אם זה לא עוזר, אני מציע שתשוחח עם מפתחי קוד הייצור: הסביר מדוע אתה רוצה גישה, ובקש מהם לחשוף אותו דרך נכס. הם יכולים להפוך את זה לנכס פנימי ולהשתמש ב- [InternalsVisibleTo] כדי לקבל גישה אליו במכלול הבדיקה שלך. אני מעדיף זאת באופן אישי על פני השתקפות - אחרת אם קוד הייצור ישתנה באופן תקף לחלוטין, הבדיקות שלך ייכשלו כשלא היו צריכות.


טיפים וטריקים

AutoCAD 2014 מכונה גם ACAD2014 או ACAD 2014.

שפות AutoCAD 2014 זמינות: אנגלית, פורטוגזית ברזילאית, צרפתית, גרמנית, איטלקית, קוריאנית, סינית פשוטה, ספרדית וסינית מסורתית. יפנית זמינה גם אך לא במסגרת חבילת השפה של AutoCAD 2014. רוסית, צ'כית, הונגרית ופולנית חסרים עד כה אך יתווספו.

שורת פקודה המוגדרת כברירת מחדל להפעלת AutoCAD 2014: "C: Program Files Autodesk AutoCAD 2014 acad.exe" / מוצר ACAD / שפה "en-US"

כיצד לשנות את הרישיון מעצמאי לרשת:

מיקום הרישום לשינוי ההתקנה מעצמאי לרשת עבור AutoCAD 2014 נמצא כאן:

ACAD-D001 מיועד ל AutoCAD וניל.
לשנות את ה סוּג להתקנה תוך שימוש באחד מהערכים הבאים:
1 - רשת
2 - עצמאי
3 - עצמאי רב מושביים

ב- AutoCAD וניל:
פקודה: _vernum
_VERNUM = "I.18.0.0 (UNICODE)" (לקריאה בלבד)

AutoCAD 2014 SP1:
_VERNUM = "I.108.0.0 (UNICODE)" (לקריאה בלבד)


עזרה בסימנים מסחריים - מערכת יישומים אלקטרונית של סימנים מסחריים (TEAS) - סוגיות חתימה - מידע טכני - מערכת יישומים אלקטרונית של סימנים מסחריים (TEAS) - אחר

ה- USPTO ניסה להקל על האפשרות לחתום על טופס אלקטרוני שהוגש באמצעות TEAS. לטפסים האלקטרוניים שלוש אפשרויות חתימה.

1. חתמו ישירות: האדם המשלים את הבקשה רשאי, אם יבחר בכך, לחתום ישירות בסוף טופס הבקשה. היישום לא "יחתום" במובן מסמך נייר מסורתי. כדי לאמת את תוכן היישום, החתום יכניס כל תו אלפא / מספרי או שילוב מהם לפי בחירתו בבלוק החתימה בטופס הבקשה, לפניו ואחריו סמל הקו הקדמי (/). ה- USPTO אינו קובע או מאשר מראש מה צריכה להיות הערך, אלא פשוט מניח שהערך הספציפי הזה אומץ כדי לשרת את תפקיד החתימה. מרבית החותמים פשוט מזינים את שמם בין שני הקו הקדמי, אם כי "חתימות" מקובלות יכולות לכלול / john doe / / jd / או / 123-4567 /.

הערה: האדם המתאים (כלומר, (1) אדם בעל סמכות חוקית לחייב את המבקש או (2) אדם בעל ידע ממקור ראשון על העובדות והסמכות בפועל או משתמעת לפעול בשם המבקש או (3) ארה"ב - עורך דין מורשה שיש לו ייפוי כוח בכתב או בעל פה בפועל או מרומז מהמבקש) חייב לחתום באופן אישי על הטופס על ידי הקלדת שילוב התווים שקודם ואחריו סמל הקו הקדמי (/) שהאיש החתום אימץ לו. "חֲתִימָה." מישהו אחר מטעם החותם הראוי לא צריך להקיש זאת.

2. טופס טקסט דואר אלקטרוני לצד שני לחתימה: באמצעות שיטה זו, ניתן לשלוח בדוא"ל את "טופס הטקסט" לחותם המתאים כ"היפר-קישור "(אין צורך ב"הורדה" של טופס נייד). החותם יזין את החתימה בין שני קו נטוי קדימה (למשל, / john smith /). הטופס החתום מוחזר לאחר מכן למכינה המקורי, אשר יוכל להשלים את תהליך ההגשה ל- USPTO.

כדי להשתמש בגישה זו בחר בשיטת "טופס טקסט בדואר אלקטרוני לצד שני לחתימה" במקטע מידע חתימה. הזן את שם החתימה, המיקום ומספר הטלפון שלו ולחץ על "אמת". בדף האימות, לחץ על הקישור "טופס טקסט לחתימה אלקטרונית". לאחר מכן לחץ על הקישור "שלח טופס טקסט זה לחותם המוסמך לבקש חתימה (ים) אלקטרוני." על המבקש להזין את שמו וכתובת הדואר האלקטרוני שלו ולחץ על "שלח דוא"ל".

TEAS ישלח את בקשת החתימה האלקטרונית ישירות למבקש, ואז על המבקש להעביר את הדואר האלקטרוני שהתקבל לחותם המיועד. בגישה זו, המבקש יקבל כל הודעה אפשרית "שאינה ניתנת למסירה", וככזה, מיד יהיה מודע כאשר קיימת בעיה בדואר האלקטרוני של החותם הדורשת תיקון ושליחה חוזרת. כל תקשורת "תשובה" תהיה ישירות בין החותם למבקש.

כדי לחתום על הטופס, על החותם המיועד ללחוץ על הקישור בדואר האלקטרוני ולהזין את החתימה בין שני קו נטוי קדימה. לאחר השלמת כל שדות החובה, על המבקש ללחוץ על כפתור "חתימה" כדי להחזיר את הטופס החתום למקור הבקשה. המבקש יקבל דואר אלקטרוני עם קישור "הגש", כדי לאפשר גישה לדף האימות בו השלבים האחרונים של התהליך הושלמו.

הערה: יש לחתום על הטופס ולהשלים את הגשתו ל- USPTO תוך 14 יום. השעון מתחיל לפעול ברגע שהמבקש לוחץ על "שלח טופס טקסט זה לחותם המוסמך לבקש חתימה (ים)" והוא אינו מבוסס על מתי המבקש מעביר את הדואר האלקטרוני לחותם המיועד. . שימו לב גם כי התקופה מחושבת לדקה, ואינה מבוססת על "סוף היום" ליום ה -14 (למשל, יש להגיש בקשה שמקורה בשעה 14:00 לא יאוחר משעה 14:00 אחר הצהריים 14. ימים לאחר מכן. אם לוחצים על כפתור ההגשה הסופי בשעה 14:01, תוצג הודעת שגיאה המציינת שתקופת הזמן להגשה פגה ויש להתחיל את כל התהליך מההתחלה). עם זאת, תוכל להוריד ולשמור את הטופס הנייד (זמין מדף האימות) ללא הגבלת זמן.

3. חתימה ידנית ("עט ודיו"): באמצעות שיטה זו ניתן להדפיס את "טופס הטקסט" ולשלוח אותו בדואר או בפקס אל החותם, שיחתום על הטופס באופן "עט ודיו" המסורתי. לאחר שהטופס החתום נשלח בדואר או נשלח חזרה למכינה, יש לסרוק הצהרה חתומה זו ולצרפה מחדש כקובץ תמונה JPG (תבניות התמונה היחידות המקובלות) ליישום האלקטרוני המקורי ואז ניתן לאמת ולהגיש את הבקשה המלאה. באופן אלקטרוני.

הערה: תחת אפשרות זו, יש לשמור את היישום המקורי באמצעות כפתור הורדת הטופס הנייד בדף האימות.


החלטה על חומת אש

פתרון תוכנה

חומות אש של תוכנה מחייבות אתכם לבחור את החומרה ואת מערכת ההפעלה.

עליכם להקשיח את מערכת ההפעלה ולהגדיר אותה לתפוקה מקסימאלית, ולא לפונקציות אחרות כמו שיתוף קבצים.

זה גם תלוי בך לשמור על תיקונים ומנהלי התקנים שוטפים במערכת ההפעלה, כמו גם תיקונים על תוכנת חומת האש. מרבית ספקי חומת האש מבוססי החומרה מדביקים את שניהם בו זמנית.

תוכנת חומת האש של צ'ק פוינט משתמשת בטכנולוגיות מרובות לבדיקת כללי היציאה, המקור והיעד, וגם לאיתור נקודות תורפה ברמת היישום. באמצעות מודולים נפרדים לסריקות (למשל, אינטרנט, פעילות חריגה ו- DoS), Firewall1 מספק תפוקה גבוהה.

ל- Firewall1 יש ממשק GUI נוח לתצורה.

צ'ק פוינט VPN עובד עם Firewall1 כדי לספק תקשורת מאובטחת על פני מרחקים גיאוגרפיים.

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

IPtables מגיע כסטנדרט עם כל מערכת הפעלה של לינוקס והיא קוד פתוח, כלומר במקרים רבים ניתן להשיג אותה בחינם.

באופן כללי, IPtables מספקים CLI לתצורה. ישנם יישומי קוד פתוח המנסים לספק ממשק GUI נוח יותר.

לטבלאות IP אין הרבה מתכונות הסינון המתקדמות ויכולות הבדיקה ברמת היישום של חומות אש מסחריות.

Microsoft ISA Server 2004 מספק תכונות מתקדמות רבות הנמצאות בחומות אש אחרות. הוא גם מספק תכונות הזמינות רק בשל שילובו עם שאר מוצרי המיקרוסופט.

שרת ISA מספק את ההסגר של מחשבי Windows המנסים לגשת לרשתות מוגנות, ואוכף מדיניות כגון רמת ערכת שירות ומימוש חומת אש אישית.

שרת ISA מספק כלי יחיד המתפקד לתצורה ולדיווח על פונקציית חומת האש. ניתן להשתמש בכלי זה מכל תחנת עבודה של Windows לניהול שרת ISA אחד או יותר.


עליכם להבין את ההבדל בין כיתה למופע של אותה כיתה. אם אתה רואה מכונית ברחוב, אתה יודע מיד שמדובר במכונית גם אם אינך יכול לראות איזה דגם או סוג. הסיבה לכך היא שאתה משווה את מה שאתה רואה עם ה- מעמד "אוטו". הכיתה מכילה אשר דומה לכל המכוניות. חשוב על זה כעל תבנית או רעיון.

יחד עם זאת, המכונית שאתה רואה היא מופע של הכיתה "מכונית" מכיוון שיש לה את כל המאפיינים שאתה מצפה לה: יש מישהו שנוהג בה, יש לה מנוע, גלגלים.

אז הכיתה אומרת "לכל המכוניות יש צבע" והמופע אומר "המכונית הספציפית הזו אדומה".

בעולם ה- OO אתה מגדיר את הכיתה ובתוך הכיתה אתה מגדיר שדה מסוג Color. כאשר הכיתה מופנית (כאשר אתה יוצר מופע ספציפי), הזיכרון שמור לצבע ותוכל לתת למופע הספציפי הזה צבע. מכיוון שתכונות אלה ספציפיות, הן אינן סטטיות.

שדות ושיטות סטטיות משותפים עם כל המקרים. הם מיועדים לערכים ספציפיים למחלקה ולא למופע ספציפי. בשיטות, בדרך כלל מדובר בשיטות עוזרות גלובליות (כמו Integer.parseInt ()). עבור שדות, זה בדרך כלל קבועים (כמו סוגי מכוניות, כלומר משהו שיש לך סט מוגבל שלא משתנה לעתים קרובות).

כדי לפתור את הבעיה שלך, עליך להתקין מופע (ליצור אובייקט) של המחלקה שלך כדי שזמן הריצה יוכל להזמין זיכרון למופע (אחרת, מקרים שונים יחליפו זה את זה שאתה לא רוצה).

במקרה שלך, נסה את הקוד הזה כבלוק התחלתי:

השיטה main () החדשה יוצרת מופע של המחלקה שהיא מכילה (נשמע מוזר אך מכיוון ש- main () נוצר עם הכיתה במקום עם המופע, היא יכולה לעשות זאת) ואז קוראת לשיטת מופע (run ()).

שדות ושיטות סטטיים מחוברים לכיתה עצמה ולא למופעים שלה. אם יש לך מחלקה A, שיטה 'רגילה' b ושיטה סטטית c, ואתה עושה מופע a של המחלקה שלך A, השיחות אל A.c () ו- a.b () תקפות. לשיטה c () אין מושג איזה מופע מחובר, ולכן היא לא יכולה להשתמש בשדות לא סטטיים.

הפיתרון עבורך הוא שאתה הופך את השדות שלך לסטטיים או שהשיטות שלך לא סטטיות. אתה יכול להיראות כך אז:

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

מחזור החיים של הכיתה, במונחים רחבים, הוא:

  1. קוד המקור של הכיתה נכתב ויוצר תבנית או תבנית או חותמת שאפשר להשתמש בהם לאחר מכן
  2. צור אובייקט עם האופרטור החדש באמצעות המחלקה כדי ליצור מופע של המחלקה כאובייקט ממשי ולאחר מכן כאשר תסיים עם האובייקט
  3. להשמיד את האובייקט להחזיר את המשאבים שהוא מחזיק, כגון זיכרון במהלך איסוף האשפה.

על מנת לקבל נקודת כניסה ראשונית ליישום, ג'אווה אימצה את המוסכמה כי על תוכנית Java להיות מחלקה המכילה שיטה עם שם מוסכם או מיוחד. שיטה מיוחדת זו נקראת main (). מכיוון שהשיטה חייבת להתקיים בין אם המחלקה המכילה את השיטה העיקרית הוסבה ובין אם לא, יש להכריז על השיטה העיקרית () עם השינוי הסטטי כך שברגע שהמחלק נטען, השיטה הראשית () תהיה זמינה.

התוצאה היא שכאשר אתה מפעיל את יישום ה- Java שלך על ידי שורת פקודה כגון java helloworld, קורות סדרה של פעולות. ראשית, מכונה וירטואלית של Java מופעלת ומותחלת. לאחר מכן קובץ helloworld.class המכיל את קוד ה- Java המהולל נטען למכונה הווירטואלית של Java. ואז המחשב הווירטואלי של Java מחפש שיטה בכיתה helloworld המכונה main (String [] args). שיטה זו חייבת להיות סטטית כך שהיא תהיה קיימת למרות שהמחלקה לא הוסבה למעשה כאובייקט. המחשב הווירטואלי של Java אינו יוצר מופע של המחלקה על ידי יצירת אובייקט מהמחלקה. זה פשוט טוען את הכיתה ומתחיל לבצע בשיטה הראשית ().

לכן עליכם ליצור מופע של המחלקה שלכם כאובייקט ואז תוכלו לגשת לשיטות ולמשתנים של המחלקה שלא הוכרזו באמצעות השינוי הסטטי. לאחר שתוכנית ה- Java שלך התחילה עם הפונקציה הראשי (), תוכל להשתמש בכל המשתנים או השיטות שיש להם שינוי הסטטי מכיוון שהם קיימים כחלק מהמחלקה הנטענת.

עם זאת, לא ניתן להשתמש באותם משתנים ושיטות של המחלקה הנמצאים מחוץ לשיטת הראשי () שאין להם את השינוי הסטטי עד שנוצר מופע של המחלקה כאובייקט בשיטה הראשית (). לאחר יצירת האובייקט תוכלו להשתמש במשתנים ובשיטות של האובייקט. ניסיון להשתמש במשתנים ובשיטות של המחלקה שאין להם את השינוי הסטטי מבלי לעבור על אובייקט מהמחלקה נתפס על ידי מהדר Java בזמן הקומפילציה ומסומן כשגיאה.


הפעל אוטומטית את פעולות הדואר האלקטרוני באמצעות Outlook ו- VBA

הערה: הקוד המוזכר במאמר זה זמין להורדה כאן.

מיקרוסופט אופיס היא חבילת פרודוקטיביות נפלאה. מלבד היותנו ארוזים בתכונות, הטענה שלה לתהילה עבורי (והסיבה העיקרית שלא עברתי לסוויטות אופיס מתחרות אחרות) היא שהיא מאפשרת למפתח להתאים אישית ולשפר את הפונקציונליות של המוצר באמצעות Visual Basic for Applications (VBA) ) או קוד .NET. עבור עסקים, המשמעות היא שניתן להשתמש ביישומי Office (Word, Excel, Access, PowerPoint, Outlook ואחרים) בתהליך פיתוח התוכנה כדי לפתור בעיות מסוימות שאחרת יהיה קשה לכתוב מאפס, כגון מסמך אוטומטי וגיליון אלקטרוני. יצירה.

במהלך השנים, ארבע מאות גורו הריצה לא מעט טיפים כיצד להתחתן עם DB2 לנתוני i עם Excel באמצעות VBA. הפעם, ברצוני להתמקד בעשייה דומה עם Outlook. כדי לעקוב אחר טיפ זה, תזדקק לידע בסיסי בשפת VBA ובספריית ActiveX Data Objects (ADO), שתאפשר ל- Outlook לתקשר עם IBM i (aka AS / 400). יתר על כן, הדרכה זו נכתבה באמצעות Outlook 2007 (aka Outlook 12), אם כי אני לא מאמין שיש תכונות ספציפיות לשנת 2007 המיושמות.

שקול את הדילמה הנפוצה של קבלת דואר אלקטרוני עם מספר קבצים מצורפים עם קבצי טקסט ואת הצורך להעלות קבצים מצורפים אוטומטית לטבלת DB2 (ללא התערבות המשתמש). הודעות דואר אלקטרוני ספציפיות אלה מתקבלות על ידי שרת Exchange של החברה ומועברות ללקוח Microsoft Outlook. משם, Outlook אמור:

  1. לפקח על כל פריטי הדואר החדשים
  2. לזהות כל דואר אלקטרוני ספציפי כמועמד לאוטומציה על ידי בדיקת השולח, הנושא, הקובץ המצורף או גוף הדואר האלקטרוני (הודעות דואר אלקטרוני שאינן תואמות את הקריטריונים שצוינו נשארות לבד)
  3. שמור אוטומטית את קובץ הקובץ המצורף (בדוגמה זו, פורמט מופרד בפורמט & # 8220csv & # 8221)
  4. קרא את הקובץ המצורף השמור והעלה את הנתונים ל- DB2 עבור i
  5. העבר את הדואר האלקטרוני לתיקיה & # 8220 מעובדת & # 8221 בסיום

Outlook יכול לעשות את זה יחסית קל!

סביבת הפיתוח המשולבת ב- Outlook

כדי להתחיל, ניתן לגשת לסביבת הפיתוח המשולבת של VBA (IDE) בתוך Outlook כמו ביישומי Office אחרים: בחר כלים → מאקרו → עורך Visual Basic או השתמש ברצף המקשים Alt + F11. ברגע שאתה ב- VBA IDE, יש לך את היכולת להוסיף מודולים סטנדרטיים או כיתתיים משלך.

כאשר אתה צופה בחלון הפרויקט של Outlook VBA (ראה איור 1 להלן), תבחין במודול כיתת VBA מיוחד ספציפי ל- Outlook הנקרא & # 8220ThisOutlookSession & # 8221. בעת תכנות VBA בתוך Outlook, ניתן להשתמש במודול המחלקה & # 8220ThisOutlookSession & # 8221 בכדי להיכנס למודל האירועים של Outlook. אם אינך מכיר קידוד של Office VBA, Office עוקב אחר מודל תכנות מונחה אירועים. & # 8220 אירועים & # 8221 הם אזורים מוגדרים שבהם מפתח יכול למקם קוד שייקרא אוטומטית בתגובה לאירועים מסוימים כגון כאשר Outlook מתחיל, דואר אלקטרוני מתקבל, דואר אלקטרוני נשלח וכו '. אתה יכול לראות התייחסות למודל אובייקט Outlook כאן.

איור 1: לפרויקטים של VBA ב- Outlook יש מודול מחלקה מיוחד שנקרא ThisOutlookSession.

הקוד שתיצור בתוך Outlook יישמר בקובץ מיוחד בשם VbaProject.otm. למטרות גיבוי, דע שקובץ זה מאוחסן בפרופיל המשתמש של Windows ותיקיית המשנה של נתוני היישומים. (קבל כאן מידע ספציפי למערכת ההפעלה.) ברגע שכתבת קוד תרצה לוודא שיש לך גיבוי לקובץ .otm זה או לפחות להשיג ייצוא המודולים שלך לשמירה בטוחה.

לשם פשטות, דוגמת הקוד כלולה בעיקר בתת-דרך אחת עם תת-דרך משנית המשמשת לאתחול המסך האוטומטי & # 8220monitor & # 8221 להודעות דואר אלקטרוני חדשות. כל קוד המדגם הזה שייך למודול המחלקה & # 8220ThisOutlookSession & # 8221.

את קוד הדוגמה ניתן להוריד כאן. קוד VBA זה מתועד, אך אני אסביר בקצרה על כמה מהדגשים.

ראשית, מודול הכיתה מתחיל בהצהרת אובייקט ברמת הכיתה הזו:

הצהרה זו מכריזה על משתנה האובייקט & # 8220olInboxItems & # 8221 כאוסף פריטים. אוסף הפריטים הוא מחלקה ספציפית ל- Outlook שניתן להשתמש בה להפניה לכל קבוצה של פריטי Outlook & # 8220, כולל דואר, הערות, פגישות, משימות וכו ', הכלולים בתיקיית Outlook נתונה (כגון תיבת דואר נכנס, פריטים שנשלחו, תיבת דואר יוצא וכו '). מילת המפתח & # 8220WithEvents & # 8221 מסמנת שמודול המחלקה יכול להגדיר קוד לכל אחד מהאירועים המופעלים על ידי אוסף הפריטים. מחלקת הפריטים מציעה את האירועים החשובים הבאים: ItemAdd, ItemChange ו- ItemRemove. כפי שתראו בעוד דקה, הקוד ינצל את האירוע ItemAdd, שייעשה לביצוע כאשר פריט יתקבל בתיבת הדואר הנכנס.

הדבר הבא שיש לקחת בחשבון הוא אירוע מיוחד שנקרא & # 8220Application_Startup & # 8221. כל קוד בתת-דרך זו ייקרא אוטומטית עם תחילת Outlook. בדוגמה זו, הדבר היחיד שיש לעשות כאשר Outlook מתחיל הוא לגרום למשתנה & # 8220olInboxItems & # 8221 להתייחס לתיקיית תיבת הדואר הנכנס:

כאשר Outlook מתחיל, הצהרה זו יוצרת את & # 8220monitor & # 8221 של תיבת הדואר הנכנס. (שים לב שכל תיקיות המשנה של תיבת הדואר הנכנס לא יפקחו על ידי הצהרה זו.) OlInboxItems נאמר להתייחס לפריטים בתיקיית תיבת הדואר הנכנס. מכיוון שהוכרז באמצעות WithEvents, אתה יכול להשתמש באירוע ה- ItemAdd שלו כדי לבצע את העיבוד הדרוש כאשר נכנס דואר אלקטרוני. באמצעות תכנות מונחה אירועים, Outlook תבצע את רוב העבודה & # 8211 אתה רק צריך למלא את החלקים החסרים כדי לעשות מה אתה רוצה כאשר האירוע מתרחש.

תת-הדרכה שתבצע את כל העבודה & # 8220 האמיתית & # 8221 תיקרא כאשר מופעל האירוע ItemAdd של תיבת הדואר הנכנס. הגדרת התת-דרך מוצגת כאן:

כאשר אירוע זה מופעל, Outlook יעביר הפניה לפריט שנוסף זה עתה לתיבת הדואר הנכנס. זה יכול להיות דואר אלקטרוני, הערה, פגישה וכו '. עבור תיבת הדואר הנכנס, בדרך כלל אירוע זה מופעל כאשר מתקבל דואר חדש, אך ניתן גם לפטר אותו פשוט על ידי העברת פריט מתיקיה אחת לאחרת, כגון העברת פריט מ & # 8220 פריטים שנמחקו & # 8221 חזרה לתיבת הדואר הנכנס.

כאשר הפריט מתקבל, ודא תחילה כי מדובר בדואר אלקטרוני ולא בהערה או בקשת פגישה. לאחר מכן ודא כי לדואר האלקטרוני שהגיע לאחרונה יש קובץ מצורף אחד ויש לו שורת נושא ספציפית לפני שתנסה לעבד אותו באופן אוטומטי:

בתרחיש משוכלל יותר, ייתכן שתרצה גם לשפר את המסנן כדי לבדוק דברים כמו סוג קובץ מצורף, שם השולח ואפילו תאריך שהתקבל, רק כדי לוודא שמישהו לא גרר דואר אלקטרוני ישן חזרה לתיבת הדואר הנכנס.

לאחר פריט הדואר & # 8220 עובר & # 8221 את מבחן התוקף, הוא נשמר בתיקיית C: tmp. לראייה, קובץ מצורף זה מונח כקובץ מופרד בפסיקים ללא כותרות:

הקוד שאחריו (לא מוצג כאן) משתמש בספריית ADO כדי לפתוח טבלה (קובץ פיזי) ב- IBM i. לאחר מכן הוא נפתח ועובר דרך קובץ הטקסט, מנתח את נתוני השורה לעמודות ושולח את הנתונים ל- DB2 עבור i. כדי לשמור על דברים לא פשוטים, ההנחה היא כי עמודות טבלת העבודה ב- DB2 תואמות את השדות בקובץ הקובץ המצורף .csv במספר עמודות הנתונים וסוגי הנתונים. בתרחיש מתוחכם יותר, נוכל גם להניע נוהל מאוחסן או פקודת i / OS לעיבוד הנתונים שזה עתה הועלו. זכור, כדי להשתמש בדוגמת הקוד כפי שהיא, תצטרך להוסיף לספריית אובייקטים של ActiveX Data לפרויקטים שלך, אשר ניתן למצוא ב- VBA IDE, בחר כלים → הפניות.

לבסוף, לאחר שהועתק לקובץ המצורף ל- DB2, משתמשים בשיטת העברה של האובייקט olMailItem להעברה אוטומטית של ההודעה מתיבת הדואר הנכנס לתיקיית משנה בתיבת הדואר הנכנס:

olDestFolder היא הפניה לתיקיה שמוגדרת בקוד כך שהיא תפנה לתיקיית משנה קיימת בשם Processed_OK אלא אם כן נתקלה בשגיאה. כאשר מתרחשת שגיאה, olDestFolder מוגדר על ידי קוד כדי להפנות לתיקיית משנה קיימת מראש הנקראת Processed_Errors. דברים די פשוטים!

אם אתה מכיר VBA, תכנות Outlook היא פשוטה למדי & # 8211 זה פשוט לוקח קצת ללמוד את מודל האובייקט ומודל האירוע. התיעוד של Microsoft Outlook ואתר בשם OutlookCode.com היו כל מה שהייתי צריך כדי להתחיל.

עלי להזכיר כמה דברים מאכזבים: אין דרך קלה להגדיר את שורת המצב או את שעון החול (שקל יחסית לשלוט בהם ב- Excel וב- Access) כדי להתריע בפני המשתמש על מה שקורה. עם זאת, באפשרותך להוסיף את ספריית Microsoft Forms להפניות לפרוייקט Outlook שלך ואז ליצור טופס סטטוס הדומה לאופן שבו היית יוצר טופס Access או Excel. עם זאת, זו עבודה יותר ממה שאני רוצה לעשות למשימה כה פשוטה.

כמו כן, בעת בדיקת קוד הקשור להפעלה, ייתכן שתמצא את עצמך זקוק לכיבוי והפעלה מחדש של Outlook. בחלק מהמקרים ידוע כי Outlook מסתובב ברקע Windows לאחר סגירתו. לאחר שתסגור אותו, בדוק את מנהל המשימות של Windows כדי לוודא ש- Outlook.exe לא מופיע ברשימת התהליכים הפעילים.

עבור המשתמשים בגרסה ישנה יותר של Outlook, ההצהרה הבאה ב- Outlook 2007:

יהיה צורך לשנות ל:

הסר את חוט האבטחה

בגלל פגיעות בקבלת הודעות דואר אלקטרוני והשימושים המפחידים האפשריים בקוד VBA (והמוניטין של מיקרוסופט לבעיות אבטחה), גרסאות Outlook האחרונות מחדירות את הגדרת אבטחת המאקרו כדי להתעלם מקוד VBA. ניתן לבטל הגדרה מגבילה זו על ידי בחירת כלים → מאקרו → אבטחה ואז בחירה & # 8220 אזהרות לכל המאקרו & # 8221 או & # 8220 אין אזהרות למקרו. & # 8221 בגרסאות קודמות של Office רמות אלה סומנו כגבוהה, בינונית ונמוכה. . אם תבחר & # 8220אזהרות לכל המאקרו & # 8221 (aka בינוני) ותוסיף קוד VBA, תקבל הודעה זו בכל פעם שתפעיל את Outlook:

איור 2: אבטחת מאקרו של Outlook & # 8220 אזהרה & # 8221.

אם לא תשנה הגדרה זו קוד ה- VBA שלך לא יפעל!

מודל האובייקט והאירוע של Outlook מלא בהשתתפות וניתן להשתמש בו לביצוע מספר רב של משימות כולל:

  • שליחת דואר אלקטרוני
  • מעקב מתי נשלח דואר אלקטרוני ספציפי
  • העברה אוטומטית של הודעות מסוימות
  • עושה משהו ספציפי עם הודעות דואר אלקטרוני וקבצים מצורפים שהתקבלו
  • הוספת תזכורת / התראה אוטומטית ליומן שלך, למשל, למשלוח או תיקון לקוחות לא הושלמו בזמן

האפשרויות אינסופיות. יתר על כן, ניתן להפנות למודל Outlook על ידי קוד מחוץ ל- Outlook כולל VBScript (עם מגבלות מסוימות), .NET, או מתוך יישום אחר מבוסס ActiveX / COM. מיקרוסופט אופיס היא חבילה נהדרת ושילמתם עליה כסף טוב, אז השתמשו בה עד תום.

מייקל סנסוטרה הוא DBA למערכות ברודווי בגרנד ראפידס, מישיגן. שלח את השאלות או ההערות שלך למייק דרך עמוד יצירת הקשר של ג'ונגל IT.


פרסם את הסיפור הזה ל- del.icio.us
פרסם את הסיפור הזה ל- Digg
פרסם את הסיפור הזה ל- Slashdot

שתף זאת:

API אפשר את IBM i Today שלך

עם Eradani Connect תקבל:

  • משתמש קצה גבוה שביעות רצון ממשקי API עם ביצועים גבוהים
  • בְּטִיחוּת עם אבטחת ה- API OAuth2 האחרונה
  • פִּריוֹן עם שילובים מהקופסה (למשל אמזון, Shopify, UPS וכו ')
  • הַנהָלָה עם ניטור ממשל API
  • תמיכה עם הדרכה מצוות המומחים שלך ב- Eradani IBM i API

שתף זאת:

3 מחשבות על & ldquo אוטומטיות פעולות דואר אלקטרוני עם Outlook ו- VBA & rdquo

רק מחפש VBA שלם עבור Outlook 2010 כדי: למחוק הודעות דואר אלקטרוני נכנסות חדשות שמכילות טקסט ספציפי. אף אחד מהקודים שלעיל לא עובד, אולי בגלל שהקוד אינו שלם.

מאמר נהדר. הצלחתי לבצע את הקידוד לשמירת הקובץ המצורף אולם התקשיתי להתקשר אליו כאשר הדואר החדש מגיע ללא שימוש באפשרות סקריפט ההפעלה בכללים. מאמר זה עזר מאוד. תודה רבה על הפרסום.

למרות שעשיתי כמה יישומי Excel VBA מעורבים למדי, כולל עיבוד קבצים מצורפים בדואר אלקטרוני, הסתמכתי על כלי פופ 3 ו- SMTP של שורת הפקודה. כעת אני מבין שיש לראות ב- Outlook מנוע אוטומציה לעיבוד דוא"ל ולא רק לקוח משתמש קצה. מאמר זה נתן לי מספיק מידע ורקע כדי לראות כיצד אוכל להנדס מחדש ולפשט יישומים אלה & # 8211 תודה! עכשיו זה רק עניין של ללמוד את מודל האובייקט כדי לראות איפה הווים לעשות את מה שאני צריך לעשות.


לווינים

במשך חצי מאה מכניסים בני אדם לוויינים למסלול סביב כדור הארץ כדי לשרת מגוון פונקציות. הסובייטים השיקו את הראשון, ספוטניק 1, באוקטובר 1957 רק כדי להוכיח שהם יכולים. ארבעה חודשים לאחר מכן, ארה"ב הגיבה עם Explorer 1.

מאז נשלחו למעלה מ -2,500 לוויינים. אלה כוללים את האבל ו- ISS, תחנת החלל הרוסית Mir, מערכת המיקום הגלובלית בת 27 הלווינים, Iridium, GOES, Voyager ומאות אחרות המספקות תקשורת, משדרת אותות טלוויזיה ורדיו ועוזרות למדענים לחזות מזג אוויר, בין רבים אחרים. מטרות.

These man-made objects circle Earth in orbits that range from as near as 150 miles (240 kilometers) to 22,500 miles (36,200 kilometers) away. Satellites in low-Earth orbit, or LEO, stay within 500 miles (800 kilometers) and travel extremely fast—17,000 miles an hour (27,400 kilometers an hour) or more—to keep from being drawn back into Earth's atmosphere. Most satellites around Earth are found in the LEO range.

Other objects are sent much farther into space and placed in what is called geosynchronous orbit. This allows the satellite to match the Earth's rotation and "hover" over the same spot at all times. Weather and television satellites are generally in this category.


Defer the start of CRON based jobs

You can configure alfresco-global.properties and dev-log4j.properties to implement a global delay to CRON based jobs for example, until after the server has fully started.

You can set a delay for all cron based jobs in other words, jobs that use the org.alfresco.util.CronTriggerBean class. The default value is 10 minutes.

Shut down the Content Service server.

Locate and edit the alfresco-global.properties file in the <classpathRoot> directory.

Add two configurations to the alfresco-global.properties file, where the number in startDelayMins= is the number of minutes you want to delay your job. In this example, the delay length is 2 minutes:

Extend the dev-log4j.properties with a new configuration in the <classpathRoot>/alfresco/extension directory:

This file will override subsystem settings that aren’t applicable in alfresco-global.properties .

After the specified interval, the FeedCleaner trace logs will be generated. In the example, the logs will start after two minutes.


צפו בסרטון: כתוביות לסרטונים בקאמטסיה 9 - מעודכן 2019 (אוֹקְטוֹבֶּר 2021).