זה לא באמת משנה, אבל מפליא אותי שאתם לא בטוחים.
בכל מקרה זה תחביר השאילתא ב-SQL.

OdedDvir
-
ערך של קומבובוקס -
ערך של קומבובוקסבאיזה 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
-
רובה רטוב מיימי - האם יכול להתקשות ולהראות טוב ?אם הבלילה הייתה דלילה מאוד או החומר לא איכותי - יתכן.
-
רובה רטוב מיימי - האם יכול להתקשות ולהראות טוב ?צריך ממש מעט מים כדי להגיע מההתחלה לסמיכות הרצויה. משהו כמו יחס של 1 ל-10.
מסתמא עד עכשיו כבר קיבלת את התשובה:
א. זה יתיבש.
ב. זה לא יהיה חזק כמו עיסה. -
פקודת מאקרו בוורד שפותחת תוכנה אחרת ויכולה לעשות פעולות בתוך התוכנה האחרת@האדם-החושב הפקודה
AppActivate
אינה תלויה במשתני הסביבה, רק בשם האפליקציה.
הפקודה הנ"ל פשוט מחפשת את החלון עם השם המתאים והופכת אותו ליישום הפעיל (ציינתי שכתנאי מקדים האפליקציה חייבת להיות פתוחה ברקע) -
קשרי גומלין בטבלאות חיצוניות מקושרות באקססהחיבור בו משתמשת אקסס לטבלאות מקושרות, עומד יפה ברוח מצויה, דהיינו במקרים של רשת קווית יציבה.
במקרים של הפרעות ביציבות הרשת, כגון ברשת wifi, וכ"ש בענן, הוא עלול להיכשל ולגרום לשגיאות בנתונים.
אם נוסיף את העובדה שגם בסיס הנתונים של אקסס בעצמה הוא קצת רגיש, ולא פשוט לשחזור במקרה של שגיאות - יש פה סיכון של איבוד נתונים.
אם אתה יכול להעביר את ה-backend ל-sqlserver בענן, ולהתחבר אליו עם דרייבר ODBC - זה עדיף עשרת מונים. -
קשרי גומלין בטבלאות חיצוניות מקושרות באקססאת קשר הגומלין אתה צריך להגדיר ב-db שמכיל את הטבלאות עצמן (ה-backend) ולא בצד הממשק (frontend). קשר הגומלין אמור לשמש כמנגנון המבטיח את אמינות הנתונים. כלומר למנוע מצב של רשומות יתומות ללא רשומת אב.
בדוגמא שנתת אתה מבקש לסנן נתונים, והאופן הנכון לעשות זאת הוא על ידי שאילתת מיזוג. את זה אפשר - ולפעמים גם עדיף - לעשות בצד הממשק. -
קשרי גומלין בטבלאות חיצוניות מקושרות באקססכתבת שהטבלאות חיצוניות. היכן נמצאות הטבלאות שאתה מקשר אליהן?
-
שימוש בתיבות דו שיח מובנות של פבלישר עם VBA@yossiz תנוח דעתך שהנחת את דעתי.
מעולם לא השתמשתי בזה, אבל לכאורה אפשר לבצע מניפולציות על האובייקט של הדיאלוג ישירות, בלי להצטרך לאוטומציה.
יש דוגמא באתר של Microsoft:Sub ShowBorderDialog() With Dialogs(wdDialogFormatBordersAndShading) .DefaultTab = wdDialogFormatBordersAndShadingTabPageBorder .Show End With End Sub
-
שימוש בתיבות דו שיח מובנות של פבלישר עם VBA@מאקרו כתב בשימוש בתיבות דו שיח מובנות של פבלישר עם VBA:
כידוע בחלק מיישומי אופיס קיים אובייקט דיאלוג שנותן אופציה להשתמש עם הדיאלוגים המובנים של היישום.
לא הבנתי על איזה אובייקט דיאלוג בדיוק מדובר. תוכל בבקשה לתת דוגמא (מישום אחר)?
-
פקודת מאקרו בוורד שפותחת תוכנה אחרת ויכולה לעשות פעולות בתוך התוכנה האחרתכמו שציין @dovid, ניתן להשתמש בפונקציה
SendKeys
.
בהנחה שהתוכנה פתוחה, אפשר לעבור אליה על ידי ציון שמה על ידי פונקציה נוספת:AppActivate
.
הנה דוגמא בסיסית להעתקה של הבחירה בוורד לתוך VSCode:Sub PasteInVisualStudioCode() SendKeys "^C", True AppActivate "Visual Studio Code", True SendKeys "^V", True End Sub
הערות:
- הפרמטר השני
True
(בשתי הפונקציות) גורם לקוד להמתין עד לסיום הפעולה, אחרת עלול להווצר מצב דומה לזה שציין @מטעמים. - בקוד הנ"ל אין בדיקה האם VSCode פתוח כבר. במקרה שלא - תקפוץ שגיאה.
- הפרמטר השני
-
באקסס- פיתרון ליצירת טופס עם כניסה למנהלים בלבד-ללא שום קודים!!!@laswater תודה על השיתוף ועל ההשקעה. יש לך התלהבות של מתחילים, ואני מאחל לך שהיא תמשיך להניע אותך ללמוד, לחקור ולהתנסות.
עכשיו תורי להציע אתגר בשבילך: איפה נקודות התורפה של המערכת שבנית? האם ניתן לעקוף את המנגנון הזה? איך?