אפשר על ידי הכלי FDPEscape
הוא חינמי אונליין, ויש גירסת ניסיון להורדה
בתפריט תבחר Page>Deskew, תקליק על העמוד ותרשום את הזוית הרצויה.
מצ"ב דוגמא מהגירסה אונליין לקובץ שסובבתי ב 3 מעלות:
OdedDvir
-
סיבוב עמוד PDF חופשי ב 360° האם קיים? -
מסך שבור - הגדרת התצוגה רק על החלק התקין@צדיק-תמים כתב במסך שבור - הגדרת התצוגה רק על החלק התקין:
לא עבד. הגדרתי מעוגן ושמתי בצד שמאל, ווינדוס מכניס את החלונות מתחתיו.
מוזר.
לי זה עובד בWindows 11:
זה לא מושלם, הסמלים במגש בצד שמאל לא מוצגים לגמרי, וגם חלק מהתפריטים מעיזים לבצבץ לשם, אבל בתור עזרה ראשונה זה לא רע.
אולי בגלל שזה ווינדוס 11 ולא 10
לא מסתבר לי, הפוסט שהבאתי במקור הוא מלפני 10 שנים...
-
מסך שבור - הגדרת התצוגה רק על החלק התקין@צדיק-תמים מישהו מצא פיתרון יצירתי לבעיה שלך, על ידי שימוש לא סטנדרטי בכלי של זכוכית המגדלת שמובנה ב-Windows.
כנס להגדרות > נגישות > זכוכית מגדלת, ובתצוגה שלו בחר מעוגן (Ctrl+Alt+D). תצמיד את החלון שלו לצד שמאל (הפגום) של המסך ותגדיל אותו עד שיכסה את כל האיזור הפגום.
Windows תתייחס לשטח הנותר בצד ימין כאילו רק הוא האיזור הפעיל, וכל החלונות שתפתח וכו' ימוקמו רק שם. -
אקסס מבוסס SQL@mekev כתב באקסס מבוסס SQL:
השאילתא כולל התנאי לא מחזירה תוצאה
אתה צודק, זו היתה טעות שלי. הערך 6 בשדה Type מציין טבלה מקושרת בבסיס נתונים אקסס או אקסל (והשדה יציג את הסיסמה אליו...).
עבור טבלאות מקושרות השוכנות בבסיס של SQL הערך של Type שווה ל-4.
כך:SELECT Connect FROM MSysObjects WHERE Type=4
שיניתי גם במקור.
ולעצם העניין, אם יש לך Connection-String - היא אמורה להכיל כל פרטי ההתחברות כולל את הסיסמה. -
אקסס מבוסס SQL@דוד-החדש כתב באקסס מבוסס SQL:
אני לא מצליח להריץ את הקוד. כותבים אותו בשאילתה רגילה באקסס?
כן.
איך אני יכול לדעת את זה מראש לפני שאני מגיע אליו להעתיק את הכל?
הלקוח שלך אמור לדעת את זה, זה חלק מהגדרות שרת ה-SQL שלו. תוכל גם לבדוק האם אתה יכול להריץ את האקסס מתוך המחשב שלך ולהתחבר לנתונים שלו.
-
אקסס מבוסס SQL@דוד-החדש כתב באקסס מבוסס SQL:
אתה מתכוין פשוט לרשום לי את כל השינויים שאני עושה ואז להעתיק אותם אחד אחד למקורי (לא נראה לי שאני אעשה מידי הרבה שינויים אבל עדיין תמיד יש אפשרות לשכוח פרטים מסויימים).
אכן התכוונתי לכך.
אתה צריך לזכור שלמרות שלפעמים יש צורך אמיתי בכך, לשנות סכמה של מסד נתונים קיים זה תמיד תהליך יותר מורכב ומסוכן מאשר לעצב אותו נכון מהתחלה.
עם הניסיון שתצבור, הצורך הזה אמור להיות יותר ויותר נדיר.אגב, אם יש לך אפשרות להתחבר ישירות לשרת ה-SQL של הלקוח מהמחשב שלך, ולא רק דרך RDP, ל-VS יש כלים שיכולים לעזור לך לנהל גרסאות של SQL, להשוות סכמות של שני db, ליצור script של כל השינויים הנדרשים, ולהריץ אותו על ה-db הרצוי.
לגבי הסיסמה ל-SQL, ניתן בקלות לשלוף אותה מתוך האקסס, וזהו, אגב, אחד מהחסרונות של האריכטקטורה הזו. פשוט תריץ את השאילתא הבאה:
SELECT Connect FROM MSysObjects WHERE Type=4
-
אקסס מבוסס SQL@דוד-החדש כתב באקסס מבוסס SQL:
אבל אני קצת מפחד לעשות שינויים על חי במסד פעיל
הפחד שלך מוצדק לחלוטין. יש לי כמה סיפורים מסמרי שיער בנושא...
א. הנוהל הנכון הוא להקים סביבת טסט, כלומר לשכפל את מסד הנתונים הקיים ל-db נוסף (אפשרי על אותו השרת), וכן ליצור עותק של ה-frontend של אקסס ולקשר אותו ל-db של הטסט. זה יוצר סביבת טסט מלאה ואוטונומית מהייצור לחלוטין, ומאפשר לך לבצע שינויים כרצונך שם, הן ב-backend והן ב-frontend, ורק לאחר בדיקת שפיות - אתה מעביר את השינויים לסביבה שבייצור.
למעשה אתה הצעת משהו דומה, ליצור סביבת פיתוח לוקאלית אצלך, ולא אצל הלקוח. וכך באמת נוהגים בעולם האמיתי: מקימים (לפחות) 3 סביבות: פיתוח, טסט וייצור.ב. לעולם אין להעביר את הדאטא מהטסט לייצור, וכ"ש מסביבת הפיתוח, רק את השינויים בסכמה (מבנה הטבלאות, stored procedures וכו') או מטא-דאטא כגון טבלאות ערכים (ValueSets) שמתארות את הנתונים. למשל סוג לקוח:
Id Description 1 Admin 2 User -
תכנון פונקציה: האם לשים פרמטרים מרובים או מערךעכשיו הבנתי יותר את דבריך, ונראה לי שבעצם כיוונתי לאותו הדבר כשכתבתי
ולמקם אותה במחלקה אחרת שאחראית על הלוגיקה העסקית
כלומר, שזה תלוי בהחלטה האם הפונקציה שייכת ליישות Job או ליישות המנהלת את החשבונות הכספיים
-
תכנון פונקציה: האם לשים פרמטרים מרובים או מערךליתר ביאור, דוד התכוון שאפשר ליישם את הפונקציה כחלק מהאובייקט, כך:
public class Job { public string JobName {get; set;} public double WorkHours {get; set;} ... public decimal CalculatePrice() { ... return price; } }
לעתים זו אכן הדרך הכי נוחה. אך אם הפונקציה מכילה לוגיקה עסקית שעשוייה להשתנות עם הזמן, במקרה כזה הנכון בעיני להפריד את הפונקציה מהנתונים, ולמקם אותה במחלקה אחרת שאחראית על הלוגיקה העסקית.
-
תכנון פונקציה: האם לשים פרמטרים מרובים או מערךלא זה ולא זה.
הדרך הנכונה היא ליצור אובייקט שמכיל את כל השדות ולהעביר אותו לפונקציה.
כך C#:public record JobSpecifications { public string JobName {get; set;} public double WorkHours {get; set;} ... } public decimal CalculatePrice(JobSpecifications specs) { ... return price; }
זה יעיל מכל הבחינות, והרבה יותר קל לתחזוקה.
-
ערך של קומבובוקסזה לא באמת משנה, אבל מפליא אותי שאתם לא בטוחים.
בכל מקרה זה תחביר השאילתא ב-SQL. -
ערך של קומבובוקסבאיזה db אתם משתמשים?
-
ערך של קומבובוקסנניח שיש טבלה Books שמכילה את שמות הספרים בשדה BookName:
ניתן לקבל את השמות הייחודיים על ידי השאילתא:SELECT DISTINCT BookName FROM Books
-
אקסס. הזנת נתונים בשאילתה שמבוססת שתי טבלאותקודם כל, תודה על ההסבר המפורט והמושקע, כעת זה מובן יותר למה השאילתא לא ניתנת לעדכון.
יש כאן פוסט מפורט המסביר מתי שאילתא באקסס ניתנת - או לא ניתנת - לעדכון.
ראה במספר 6, כי שאילתת קיבוץ המכילה פונקציית צבירה (סכום, מנייה וכו') תמיד תהיה לא ניתנת לעדכון.
ולעצם הפתרון, אפשר ליישם זאת בטפסים מקושרים. אתה צריך להבדיל בין השדות:
את הפרטים שאמורים להיות ניתנים לעריכה (למשל שם הלקוח), ניתן לאחזר משאילתא פשוטה הניתנת לעדכון, ולמקם בטופס האב, שיהיה מבוסס עליה.
ואילו את הסכומים והחישובים - ליצור בשאילתא שנייה, ולהציגם בטופס הבן שיבוסס עליה.
את שני הטפסים תקשר על ידי המפתחות של שתי השאילתות. -
אקסס. הזנת נתונים בשאילתה שמבוססת שתי טבלאותאני משער שזה כי השאילתא מכילה שדה אחד או יוצר שמוגדרים לקריאה בלבד. למשל את המפתח הזר (בטבלת הרבים).
הדרך הכי פשוטה לאפשר עריכה היא ליצור טופס מקושר, כלומר טופס בתוך טופס, שטופס האב מכיל את טבלת היחיד וטופס הבן את טבלת הרבים, ולקשר בין הטפסים על ידי שדה המפתח.
ראה דוגמא כאן: https://tchumim.com/topic/10491/אקסס-למתחילים-יצירת-מערכת-לניהול-תורמים/23 -
פקודת מאקרו בוורד שפותחת תוכנה אחרת ויכולה לעשות פעולות בתוך התוכנה האחרת@dovid כתב בפקודת מאקרו בוורד שפותחת תוכנה אחרת ויכולה לעשות פעולות בתוך התוכנה האחרת:
@OdedDvir נדמה לי שזה בגלל שהCurrent Directory שלו לא מצביע על התיקיה של פרוייקט השות.
זו השערה הגיונית.
ניתן לאשש זאת על ידי בדיקה אם השגיאה נעלמת במקרה שהתוכנה כבר פתוחה ברקע לפני הרצת המאקרו.
אם כן, יש לשנות את התיקייה הפעילה לפני הפעלת האפליקציה, כלומר לשנות את הקוד כך:Sub CopyAndPasteInResponsa() Selection.Copy Dim AppPid As Long AppPid = GetFirstPid("Responsa") If (AppPid = 0) Then ChDir "C:\Program Files (x86)\ResponsaCD25" AppPid = Shell("RESPONSA.exe", 1) End If AppActivate AppPid SendKeys "^Q", True SendKeys "^C", True End Sub
הוספתי גם את הלחיצה על
Q^
לפני ההדבקה. -
פקודת מאקרו בוורד שפותחת תוכנה אחרת ויכולה לעשות פעולות בתוך התוכנה האחרת- צירפת שתי תמונות, כל אחת עם קוד שונה.
- אם ביצעת שינויים בקוד, נא ציין רק את השינוי שעשית. אין צורך לצרף עותק של הקוד הקודם בתגובה.
- לא ציינת איזו שורה גורמת לשגיאה.
כלומר הוא מריץ את זה לפני שהתוכנה נפתחת?
- לא הבנתי את השאלה.
-
ביטול פקודות מאקרו במיזוג וורד -
באקסס- פיתרון ליצירת טופס עם כניסה למנהלים בלבד-ללא שום קודים!!!התכוונתי לכל מה שציינו @avi-rz ו-@מלא. פשוט התעצלתי להגיב בפירוט (יש לי מספיק אתגרים כרגע ב"ה), והסתפקתי בנתינת לייק. חוץ מזה, המנגנון שיצרת מאוד חביב מבחינה לימודית, כי הוא מוסיף יכולת שלא הייתה מובנית באקסס, ולא רציתי להוציא לך את הרוח מהמפרשים.
@laswater כתב בבאקסס- פיתרון ליצירת טופס עם כניסה למנהלים בלבד-ללא שום קודים!!!:
אם אתה יושב עם כמה חבר'ה תתניקים, ונותן להם את זה עם הטופס פלוס מינוס, הם לא ידעו יותר מידי.
אם מדובר כאן ב'אקרים' אז מה שלא תעשה הם יגיעו למסד הנתונים!
הצגת כאן שני קצוות. דרך האמצע היא כנראה הבחירה הממולצת. כלומר: ליצור מנגנון מספיק חזק כך שגם להאקר ממוצע לא משתלם להשקיע את המשאבים בשביל לפרוץ אותו.
-
פקודת מאקרו בוורד שפותחת תוכנה אחרת ויכולה לעשות פעולות בתוך התוכנה האחרתהשיטה האחרונה אמורה לעבוד.
לא ציינת איזו שורה מעלה את השגיאה, אז אני מניח שהבעיה בשורה 3.
יש כאן חלק קצת חמקמק, צריך לדעת מה כותרת החלון. זה לא תמיד ברור, במיוחד כשיש עירוב של עברית\אנגלית.
אפשר להתחכם ולהשתמש במזהה התהליךPID
כדי לאתר את החלון המדוייק.
הקוד הבא אמור לטפל גם במקרה שבו האפליקציה אינה מופעלת כלל:Private Function GetFirstPid(applicationName As String) As Long 'Returns the FIRST PID of an application by it's name Dim services As Object, processes As Object, process As Object Dim resultPid As Long Set services = GetObject("winmgmts:\\.\root\CIMV2") Set processes = services.ExecQuery("SELECT ProcessID FROM Win32_Process WHERE name like ""%" & applicationName & "%""", , 48) For Each process In processes resultPid = process.ProcessID Exit For ' Just the first ID please :) Next ' Garbage cleanup Set processes = Nothing Set services = Nothing GetFirstPid = resultPid End Function Sub CopyAndPasteInResponsa() Selection.Copy Dim AppPid As Long AppPid = GetFirstPid("Responsa") If (AppPid = 0) Then AppPid = Shell("C:\Program Files (x86)\ResponsaCD25\RESPONSA.exe", 1) End If AppActivate AppPid SendKeys ("^C") End Sub