@פלורידה אמר בnextcloud.com | האם אפשר לשתף קובץ בלי סיסמא?:
מהתגובה שלך אני מבין שהקמת את החשבון במיוחד בשביל לעזור לי. קצת מתבייש...
אין לך מה להתבייש זו הפרעה נפשית שלי...
@פלורידה אמר בnextcloud.com | האם אפשר לשתף קובץ בלי סיסמא?:
מהתגובה שלך אני מבין שהקמת את החשבון במיוחד בשביל לעזור לי. קצת מתבייש...
אין לך מה להתבייש זו הפרעה נפשית שלי...
@Y-Excel-Access אמר בהסבר על פורום תכנות המצומצם:
לא הבנתי מה הכוונה...
יתכן והניק שלך נבחר בלי יותר מדי מחשבה, אבל לכאורה יש בו אמירה מסויימת, לענ"ד דוד מתכוון שגילית שיש חיים מעבר לאקסל ואקסס, ואתה לא מפחד לטבול את רגליך שם.
(יתכן גם שדוד התכוון שתבין לבד, ואני מקלקל את המכוון
)
@aaron אמר במצאתי פריצה באתר:
אז לכל החבר'ה שמסתובבים פה ואולי מקבלים חשק להתחיל בבדיקות על כל מיני אתרים
דווקא לי זה עשה חשק...
בעצם הבדיקה והנסיון (מחיקת תגיות) שעשה @מנחם אין בעיה חוקית. אדרבא, טובה גדולה הוא עושה אם יזהיר את מנהל האתר על הפירצה המגוחכת (הסתרת אלמנטים מינהליים על ידי תויות? באמת!) זה נשמע כמו טעות פטאלית של מישהו שלא מבין כלל בפיתוח WEB.
עם זאת, ברור שאין להשתמש במידע חסוי ללא רשות. אני הייתי פונה מיידית למנהל האתר.
@one1010 ההבדל הגדול הוא בצורת האחיזה וזיות החיתוך. צורת האחיזה של מברגה \ מקדחה עם ראש דיסק היא לא טבעית, כי צריך להפעיל גם התנגדות בכיוון ניצב לגוף. זה גורם לדיסק לא להיות יציב על המשטח והוא מחליק בקלות. לעומת זאת זווית החיתוך במסור דיסק או אנכי דורשת התנגדות בכיוון הגוף, והיא הרבה יותר טבעית ויציבה.
אם אתה מתכוון להציג את הפרטים בתיבת טקסט, כתוב במקור הנתונים של התיבה
=[ID] & " " & [FirstName] & " " & [LastName]
@ארי
א. אני מזדהה עם דרך הלימוד שלך.
ב. יש לי דעה שונה מ @pcinfogmach:
זה שגוי בעיני להתקבע על שפה מסויימת מראש. אני מייעץ לך לא לחשוב יותר מדי בשלב הזה. אם אתה מרגיש שאתה רוצה להתקדם, זה סימן שאתה מוכן. (אגב, יש שאלות ש @pcinfogmach העלה שאני עדיין לא יודע להשיב עליהן
) פשוט תקפוץ למים ותתחיל עם משהו, נסה אותו למשך שבועיים שלושה, ותראה אם אתה מתחבר לסגנון. אני לקחתי קורס שלם על nodeJs ב-udemy, ובסוף החלטתי בכלל על דוטנט. ועדיין אני מנסה פה ושם דברים אחרים.
ג. מסכים שיש הבדל בין אקסס ו-VBA לשפות אחרות, אבל זה נכון גם על כל פלטפורמה אחרת. אין באמת הבדל גדול בעקרונות התכנות בין שפה לשפה. לפי הפעילות שלך בפורום, אני מבין שיש לך הבנה טובה ב-VBA ואקסס. חשוב לי להדגיש שכל נסיון שצברת בתכנות, בכל שפה, מוסיף לניסיון הכללי שלך כמתכנת.
אני יודע שהגעתי מאוחר למסיבה...
@אוריי אתה אבחנת את הבעיה נכון, יפה מאוד!
אבל הפתרון הזה עקום לטעמי,
יש אפשרות יותר אלגנטית להמתין עד שהקובץ יהיה מוכן לכתיבה,
@מטעמים תחליף את שורה 13 בדוגמא שהבאת לעיל, בקוד הבא:
Dim newWb As Workbook
Set newWb = Workbooks.Open(קובץ_מקור & "x", ReadOnly:=False)
Do Until newWb.ReadOnly = False
DoEvents
Loop
' עכשיו אתה חופשי לבצע פעולות
כמו שציין @dovid, ניתן להשתמש בפונקציה SendKeys.
בהנחה שהתוכנה פתוחה, אפשר לעבור אליה על ידי ציון שמה על ידי פונקציה נוספת: AppActivate.
הנה דוגמא בסיסית להעתקה של הבחירה בוורד לתוך VSCode:
Sub PasteInVisualStudioCode()
SendKeys "^C", True
AppActivate "Visual Studio Code", True
SendKeys "^V", True
End Sub
הערות:
True (בשתי הפונקציות) גורם לקוד להמתין עד לסיום הפעולה, אחרת עלול להווצר מצב דומה לזה שציין @מטעמים.@hp079 לתיבת סימון תלת מצבית שלושה ערכים אפשריים:
True, False, Null. הערך Null משמעותו ללא סימון.
אם אין סימון בתיבה זו, מסתמא הלוגיקה היא לא לסנן לפיה, לכן בשורה:
If (Not IsNull(chkSet_ok)) Then
אתה מוודא שהתיבה מסומנת, כלומר אם היא לא מכילה Null, ואם כן, השורה:
DynamicCondition="Ok=" & CStr(chkSet_ok)
מוסיפה לתנאי את הבדיקה האם השדה Ok (בדוח) שווה לערך טבלת הסימון.
לא צירפתי דוגמא לבדיקה של תיבות הטקסט, אבל היא אמורה להתבצע באופן כמעט זהה, דהיינו אם ישנו ערך כלשהו בתיבת הטקסט, אז להוסיף תנאי סינון לשדה הרצוי לפי ערך זה.
הנה דוגמא שמסננת את הדוח כך שיוצגו רק רשומות בהן ערך השדה FirstName מכיל את מחרוזת החיפוש שהוקלדה בתיבת הטקסט txtSearchFirstName:
If (Len(txtSearchFirstName) > 0) Then
DynamicCondition=IIF(Len(DynamicCondition)>0, " AND ", "") & "FirstName LIKE %" & txtSearchFirstName & "%"
End If
@סקרן-0
יש כאן בעיה בתכנון לקוי של ה-DB, כי הקשר בין הלקוח לאיש השיווק אמור להופיע בנתונים במקום יחיד בלבד. אין היגיון להחזיק כפילות של הקשר הזה בשתי טבלאות, ולנהל את שתיהן (להוציא מקרים מיוחדים שבהם יש שכפול של הנתון הזה לצורך יעילות, ואז צריך שהקשר יתעדכן במקביל בשני המקומות בו זמנית, כדי למנוע מצב שאין לך מקור אמת יחיד)
המבנה הנכון של ה-DB הוא כך שהקשר יופיע רק בטבלת הלקוחות (במקרה של קשר יחיד לרבים - כשלכל איש שיווק יכולים להיות הרבה לקוחות, אך לכל לקוח יש איש שיווק יחיד בלבד) או בטבלת זוגות (במקרה שהקשר הוא רבים לרבים - כל לקוח יכול להיות משוייך לכמה אנשי שיווק, וכל איש שיווק יכול להיות משוייך לכמה לקוחות).
אני מבין שאין לך אפשרות\ידע\רצון לשנות את המבנה הקיים. זו אכן עבודה מורכבת למדי, ועדיף שתתבצע על ידי המתכנת.
גם אם זה אפשרי לכתוב קוד שמפעיל את הכפתור 10000 פעמים, זה מאוד לא מומלץ, בפרט שמדובר ב-Dlookup.
הפתרון הכי יעיל לעדכון הוא ליצור שאילתת עדכון שמצרפת את טבלת הלקוחות עם טבלת השיוך, ומעדכנת את השדה בכל הרשומות בריצה אחת, זה יעיל פי 10000.
@ארי המאגרים הממשלתיים הולכים ומשתפרים מאוד:
מרחקי נסיעה בין ישובים כאן
את קוד היישובים תיקח מטבלת היישובים כאן
יש גם תמיכה ב-API אם התוכנה לא צריכה לעבוד אופליין. ממליץ לך לבדוק.
@mekev אמר בהצעה לשיפור התועלת מהתשובות:
ולכן רואים בפוסטים רבים בפורום
שהעונים מצרפים קישורים שמצאו בעזרת גוגל ולא מידע ונסיון אישי
אם התשובה היא לא מנסיון אישי, הרבה פעמים זה יכול גם לגרוע מאיכות התשובה, ולבלבל שלא לצורך.
אני מודה שגם אני עושה כך לפעמים, אבל רק כאשר השאלה תלוייה באויר ללא מענה, אז לפחות אני משתף את הכיוון שאליו הייתי הולך, לו הייתי השואל.
לדעתי להוסיף לתשובות את חיפוש הגוגל באופן גורף זה מיותר. לדעת לנסח את השאלה נכון, עם מילות מפתח נכונות, זו מיומנות שנרכשת עם הזמן, בינתיים גוגל מאוד סלחני בקשר לשאילתות שלו, ותמיד אתה יכול לשאול באופן ספציפי על מילות מפתח.
אגב, לכאורה הקטגוריה המתאימה לשאלתך היא https://tchumim.com/category/52/רשימת-הצעות-בקשות-ודיווח-באגים
@אף-אחד-3 אמר במחפש מידע על המבנה של קבצי mp3:
במלוא הכנות, יש נושא שאתה לא מבין בו ?
אני אפילו לא צריך להגיב על זה. זה ממש במקרה שלאחרונה הייתי צריך לעשות קובץ batch כדי להגביה כמה קבצי קול ברצף, אז חקרתי קצת את הנושא.
@אף-אחד-3 אמר במחפש מידע על המבנה של קבצי mp3:
עקרונית זה נמצא בסוף הקובץ (ב 128 בתים האחרונים שלו) אם כי, גם אחרי שמחקתי את זה עם hex editor התגיות נשארו
ככה זה היה בגירסאות הראשונות של התגיות ID3v1. זה אכן היה מוגבל ל-128 תוים, ולכן בגרסאות הבאות הם שידרגו את זה לתחילת הקובץ, ושם אפשר לשים הרבה מטא-דאטא.
ואת זה אני גם במקרה מכיר מלפני הרבה הרבה שנים כשהיה לי BBS + שיגעון ילדות לתייג את כל הקבצים שלי לפי שם הקובץ. נוסטלגיה...
עדכון: מצאתי פתרון.
הבעיה הייתה בקידוד של הקובץ עצמו. הוא היה מקודד כ-ANSI.
הפתרון הוא פשוט לפתוח אותו בפנקס הרשימות, ולשמור אותו מחדש בקידוד UTF-8.
@קינג-קומפיוטר אמר בעזרה ביצירת תוכנה קטנטנה באקסס:
זכור לי שראיתי פעם בפורום שמישהו ביקש לעשות משהו כזה ואחד מהחברים בפורום יצר לו תוכנה כזו באקסס
אתה בטח מתכוון לזה: https://tchumim.com/topic/12095/הדפסת-ד-וח-מאקסס-על-בסיס-קובץ-וורד?_=1648397316903
הנה תמצות של השלבים:
UserName.@חייםיודלביץ אמר בשאלה | איזה משתנה מחזיר את שם השולח בגוגל סקריפט?:
אני פשוט לא מסתדר, נסיתי המון ... אני לא מכיר את JS אני מכיר טוב את ה VBA ופה לא הולך לי
בוא נעשה סדר...
אני לא מצליח לטעון אותו למשתנה הוא רק מציג לי אותו כ Log
בוא נראה, היכן בקוד שלי מבוצעת ההדפסה? בשורה 4:
Logger.log(parseEmailHeader(m).name)
יתכן והשורה הזו עמוסה מדי עבורך, זה סגנון של מתכנתים קצת יותר מנוסים. אם כן אני אנסה להרחיב יותר. (אם זו לא הבעיה, אתה רשאי להתעלם מבילבול המוח דלקמן... צרף את הקוד שלך ונראה מה הבעיה)
בוא נפרק את השורה הזו לגורמים. יש כאן בעצם שלושה שלבים:
קריאה ל parseEmailHeader(m).
אני מעביר לפונקציה parseEmailHeader את האובייקט m שמכיל את ההודעה הנוכחית.
הפונקציה מחזירה אובייקט עם שני שדות (בשורה 12 היא יוצרת אותו, ובשורה 22 היא מחזירה אותו), שני השדות הם:
name - שאמור להכיל את שם המשתמש, ו- email שאמור להכיל את כתובת המייל שלו.
אח"כ אני מבודד מתוך האובייקט המוחזר רק את הערך של name (שבו אני מעוניין) על ידי אופרטור הנקודה . ולאחריו שם השדה, כך: name.
אני מדפיס את התוצאה המבוקשת על ידי קריאה ל: ()Logger.log.
אילו הייתי רוצה לפשט את הקוד יותר, הייתי כותב כך:
// שלב 1: קבלת אובייקט המכיל את שם וכתובת השולח מתוך כותרת ההודעה
const messageHeaderDetails = parseEmailHeader(m);
// שלב 2: שליפת שם המשתמש מתוך האובייקט המוחזר
const senderName = messageHeaderDetails.name;
// שלב 3: הדפסת שם המשתמש ביומן
Logger.log(senderName);
אם החזקת ראש איתי עד עכשיו, אני מקווה שאתה כבר מבין שאינך מחוייב דווקא להדפיס את שם המשתמש בשלב 3. כיון שהערך המבוקש נמצא במשתנה senderName, תוכל להחליף את שלב 3 ולעשות מה שבא לך עם שם המשתמש.
למשל, לאחסן אותו במערך:
myArray.push(senderName)
או בקיצור:
myArray.push(parseEmailHeader(m).name)
@clickone אמר בשינוי שפת תוכנה:
צריך להתייחס גם לפקדים של כפתור
מתאים שתהיה פונקציה חיצונית שתעשה את זה בחוץ ורק תקבל את הטופס
נו נו, אין מסרבין לגדול:
Public Function ControlExistsInForm(frm As Form, ctrlName As String) As Boolean
On Error Resume Next
ControlExistsInForm = Not frm.Controls(ctrlName) Is Nothing
On Error GoTo 0
End Function
Public Sub TranslateForm(frm As Form, CurrentLanguageName As String)
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("SELECT * FROM LangTable WHERE FormName='" & frm.Name & "'")
While Not rs.EOF
Dim ctrlName As String
ctrlName = rs!ControlName
ctrlCaption = rs(CurrentLanguageName & "Caption")
If ControlExistsInForm(frm, ctrlName) Then
Select Case frm.Controls(ctrlName).ControlType
Case acLabel, acCommandButton
frm(ctrlName).Caption = ctrlCaption
Case Else
frm(ctrlName).Value = ctrlCaption
End Select
End If
rs.MoveNext
Wend
End Sub
Private Sub Form_Load()
TranslateForm Me, "English"
End Sub
@מוישלה המשימה שלקחת מורכבת, ודורשת ידע ב-SQL וגם VBA. צריך להתחיל מהיסוד.
אם אתה לא מכיר בכלל את שפת SQL אז שם צריך להתחיל.
אתה צריך לדעת את המבנה של שאילתת בחירה פשוטה (SELECT)
עיין בסוף הפוסט הזה.
אם הבנת את הרעיון, נסה לכתוב בעצמך בשפת SQL שאילתא שבוחרת 2 שדות (למשל) מתוך הטבלה שלך.
אם הצלחת - נהדר!
השלב הבא הוא להכיר ולכתוב קצת קוד VBA. תוכל להתחיל כאן.
@chv באופן כללי זה נשמע לי כמו יישום של אלגוריתם למציאת המסלול הקצר ביותר.
כעין החישוב שמבוצע בווייז למציאת המסלול הקצר \ המהיר ביותר.
הרעיון הוא לייצג את כל האפשרויות על ידי גרף עם משקולות = לכל קשת בגרף יש משקל (אורך, זמן או במקרה שלך - מחיר) ואז להריץ על הגרף את האלגוריתם הנ"ל, כדי למצוא את המסלול עם המשקל הקטן ביותר.
תוכל לראות במכלול דוגמא לאלגוריתם המפורסם של דייקסטרה למציאת המסלול הקצר ביותר.
@אוריי יפה מאוד!
עוד הצעה קטנה לשיפור:
שמתי לב שהוא מציג בשם המחבר ובהערות את הנקודה בתחילת השורה ולא בסוף. זה אופייני לתיבות טקסט עם טקסט עשיר, שמכילות עברית.
הפתרון הוא לשנות את המאפיין "כיוון קריאה" של תיבת הטקסט מ-"הקשר" ל-"מימין לשמאל", זה יתקן את המיקום של הנקודה.