דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
איש אחדא

איש אחד

@איש אחד
אודות
פוסטים
523
נושאים
36
שיתופים
0
קבוצות
0
עוקבים
1
עוקב אחרי
0

פוסטים

פוסטים אחרונים הגבוה ביותר שנוי במחלוקת

  • עבודה בתהליך משני (Thread / Task) ובכל זאת ה-UI תקוע
    איש אחדא איש אחד

    בס"ד

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

    אבל לדוגמא,
    תסתכל בשורה השלישית של המקטע הראשון שציטטתי - כאשר לוחצים על הלחצן של ביצוע השאילתא:

    If result Is Nothing OrElse result.Tables.Count = 0 Then If MsgBox("לא קיימים נתונים בטבלה זו.", הודעה) Then Exit Sub
    

    דהיינו, אם אין עדיין תוצאת שאילתא, או שהתוצאה היא 0 טבלאות, זרוק מסג'בוקס ותעיף החוצה.

    היות וסדר הפעולות הוא:

    1. השגרה המופעלת ע"י לחצן "בצע שאילתא", קוראת לפונקצייה beforeQuery, ומחכה לה בסבלנות בשביל להמשיך לשורה הבאה.
    2. הפונקצייה beforeQuery מדליקה את התהליך query ולא מחכה לו אלא גומרת מיד ומחזירה שליטה לשגרה "בצע שאילתא" שקראה לה.
    3. השגרה של "בצע שאילתא" ממשיכה לשורה הבאה ומחפשת מה קורה במשתנה result, אבל הוא כמובן ריק, כי התהליך שמתחבר לשרת המרוחק תמיד יהיה יותר איטי מ-2-3 משפטי קוד בתוכנית עצמה.
    4. result ריק? שלום ולא להתראות.

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

    פורסם במקור בפורום CODE613 ב04/12/2017 23:45 (+02:00)

    ארכיון code613m

  • עבודה בתהליך משני (Thread / Task) ובכל זאת ה-UI תקוע
    איש אחדא איש אחד

    תודה על התשובות / הצעות!

    @דוד ל.ט.

    בקיצור שתיהם ממש ממש לא משרתות אותך ואינני יודע למה שמת אותם.

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

    רק אציין שגם ניסיתי במקום Join / Wait לכתוב את השורות הבאות, אבל התוצאה זהה - כשהשאילתא רצה העולם מת.

    Do Until trd.IsAlive = False
         If lblWait.Visible Then lblWait.Visible = False Else lblWait.Visible = True
         Thread.Sleep(250)
    Loop
    

    @ClickOne

    למה שלא תשתמש בbackgroundworker?

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

    פורסם במקור בפורום CODE613 ב04/12/2017 22:37 (+02:00)

    ארכיון code613m

  • עבודה בתהליך משני (Thread / Task) ובכל זאת ה-UI תקוע
    איש אחדא איש אחד

    דוד ל.ט. , אתה מקיים בנו "עוד הם מדברים ואני אשמע"... undefined

    אז בבקשה (אח, איזה נדיב שאני...)

    קטע רלוונטי מהשגרה המתבצעת בלחיצה על כפתור "בצע שאילתא":

    Private Sub btnManual_Click(sender As Object, e As EventArgs) Handles btnManual.Click  
       If BeforeQuery() = False Then Exit Sub
       If result Is Nothing OrElse result.Tables.Count = 0 Then If MsgBox("לא קיימים נתונים בטבלה זו.", הודעה) Then Exit Sub
       tblMain.DataSource = result.Tables(0)
    End Sub
    

    להלן 2 גרסאות של הקטע הרלוונטי בפונקצייה שמפעילה את התהליך, אחת ב Thread והשנייה ב Task:

    Private Function BeforeQuery() As Boolean
       Dim trd As New Thread(AddressOf query)
       trd.Start()
       pbarLoad.Visible = True
       trd.Join()
       pbarLoad.Visible = False
       Return True
    End Functionאו:
    
    Private Function BeforeQuery() As Boolean
       Dim trd As New Task(AddressOf query)
       trd.Start()
       pbarLoad.Visible = True
       trd.Wait()
       pbarLoad.Visible = False
       Return True
    End Function
    

    והקטע הרלוונטי בפונקצייה של התהליך עצמו:

    Private Function query() As Boolean
       conn.Open()
       command.Connection = conn
       command.CommandText = queryString
       dataAdapter.SelectCommand = command
       dataAdapter.Fill(result)
       conn.Close()
       Return True
    End Function
    

    תודה רבה!

    פורסם במקור בפורום CODE613 ב04/12/2017 18:26 (+02:00)

    ארכיון code613m

  • עבודה בתהליך משני (Thread / Task) ובכל זאת ה-UI תקוע
    איש אחדא איש אחד

    בס"ד

    שלום וברכה,
    חזרתי עם עוד שטות - כהבטחתי.

    בתוכנה שעשיתי שקוראת טבלאות משרת MySQL, (אוף, נודניק, עוד לא נמאס לך?! :twisted: )
    ראיתי שאם אני קורא לטבלאות גדולות, לוקח לה כמה וכמה שניות בלי שום אינדיקציה שהיא עושה משהו. הגיוני.
    כמובן, צריך להעביר את הקוד שמבצע את השאילתא לתהליך משני. בוצע.

    אבל למעשה, למרות שהשאילתא באמת רצה בתהליך נפרד,
    ה UI (שכמובן יושב על התהליך הראשי) - עדיין לא מגיב בכל זמן ריצת השאילתא.
    הגדרתי את התהליך כ Thread, הגדרתי אותו כ Task, גורנישט.

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

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

    איפה הטעות שלי?

    תודה רבה!!!

    פורסם במקור בפורום CODE613 ב04/12/2017 17:56 (+02:00)

    ארכיון code613m

  • קריאת שורת הטקסט ב-ComboBox במהלך הקלדה - כשהרשימה פתוחה
    איש אחדא איש אחד

    בס"ד

    טוב. נראה לי שהגעתי אל המנוחה ואל הנחלה.

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

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

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

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

    עכשיו הכל בא על מקומו בשלום:
    Dim current As String = cb.Text
    If cb.Items.Contains(current) Then cb.Items.Remove(current)
    cb.Items.Insert(0, current)
    cb.SelectedIndex = 0

    ושוב תודה רבה ל-@דוד ל.ט הצדיק!

    פורסם במקור בפורום CODE613 ב28/11/2017 23:13 (+02:00)

    ארכיון code613m

  • קריאת שורת הטקסט ב-ComboBox במהלך הקלדה - כשהרשימה פתוחה
    איש אחדא איש אחד

    בס"ד

    שני עדכונים מוזרים נוספים:

    1. כאשר הפרופרטי AutoCompleteMode על מצב none, בהקלדה עם "מגירה פתוחה" - הטקסט נמחק, אבל הפרופרטי Text נשמר... :?
      הבעייה המלאה קיימת "רק" במצבי ההשלמה האוטומטית למיניהם. כמובן שבלי השלמה אוטומטית הקומבובוקס יכול לחזור למאורה.

    2. כאשר משתמשים באירוע KeyDown ולוחצים אנטר עם מגירה פתוחה, האירוע חוזר פעמיים. (רק אנטר מחזיר פעמיים) :?:

    מה הולך פה היום?

    פורסם במקור בפורום CODE613 ב28/11/2017 19:15 (+02:00)

    ארכיון code613m

  • קריאת שורת הטקסט ב-ComboBox במהלך הקלדה - כשהרשימה פתוחה
    איש אחדא איש אחד

    נ.ב. כהשלמה להודעה הקודמת,

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

    יש בזה משהו, או להתייאש ולעבוד בשיטות הנלוזות דשם?

    פורסם במקור בפורום CODE613 ב28/11/2017 17:58 (+02:00)

    ארכיון code613m

  • קריאת שורת הטקסט ב-ComboBox במהלך הקלדה - כשהרשימה פתוחה
    איש אחדא איש אחד

    בס"ד

    **א.**במים רדודים :lol:

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

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

    ניסיתי לבדוק באירוע של DropDownClosed מה מצב ה-cb.text - אבל כבר שם הוא ריק.
    המחשבה הראשונה היא לחפש אירוע בשם DropDownClosing כמקום המתאים לטפל בכאלו דברים, אבל העניין הוא שלא קיים כזה אירוע...

    ג. את האנטר אני לוכד עם אירוע KeyDown, שמוביל לשגרה שהשורה הראשונה שלה היא:
    If e.KeyCode <> Keys.Enter Then Exit Sub
    ובהמשך השגרה (אחרי שהיא מוסיפה את השאילתא החדשה לפריטי הקומבובוקס) היא פשוט "לוחצת" על הלחצן של "בצע שאילתא":
    btnManual_Click(sender, Nothing)

    תודה רבה!

    פורסם במקור בפורום CODE613 ב28/11/2017 17:40 (+02:00)

    ארכיון code613m

  • קריאת שורת הטקסט ב-ComboBox במהלך הקלדה - כשהרשימה פתוחה
    איש אחדא איש אחד

    בס"ד

    שאלה טיפשית וקטנה (קטנה במהות, לא בניסוח :mrgreen: )

    יש לי קומבובוקס ב- VB.NET WinForm. נקרא לו cb.
    אני מעוניין "לצוד" את ההקשות בתיבה, בכדי לבצע סדרת פעולות לאחר הקשה על אנטר (הסברים יבואו).
    עיקר הפעולות הן על הטקסט שנרשם בשורת הטקסט של הקומבובוקס (שבסיום הקלדתו הוקש האנטר).
    בעיקרון אני יכול לקבל את הטקסט באמצעות הפרופרטי: cb.text , ובדומה ל- TextBox.

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

    ובכן, חברי הפורום הנכבדים, תואילו להורות לי את דרך המלך?
    תודה רבה רבה!

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

    תוכנה להתממשקות עם MySQL.jpg

    פורסם במקור בפורום CODE613 ב28/11/2017 15:41 (+02:00)

    ארכיון code613m

  • אשמח להסבר: MySqlCommandBuilder
    איש אחדא איש אחד

    וואו וואו, איזה השקעה :!: :!: :!:
    אין מילים!

    אולי צריך להוסיף את זה לאזור ה"מדריכים" בפורום.

    ואגב, לא ידעתי שחברת "Kuku" היא בבעלותך,
    אני לתומי בכלל חשבתי שאתה שכיר... :lol:

    פורסם במקור בפורום CODE613 ב03/12/2017 11:00 (+02:00)

    ארכיון code613m

  • אשמח להסבר: MySqlCommandBuilder
    איש אחדא איש אחד

    @דוד ל.ט.

    @איש אחד, כתבתי לך כבר, אין לי מה להוסיף.
    אין לזה שום קשר לדעתי השלילית עם JS, גם חסיד מושבע של JS לא יצדיק לימוד JS כהקדמה לC#. וזה גם לא שפה מסובכת שצריכה הקדמות וגם לא חשובה כ"כ ללימוד אם אתה יודע VB.NET.

    כנראה שהובנתי לא נכון 😞

    לא היה לי שום צד ללמוד את JS כבסיס והקדמה ל C#. ממש לא!
    הסיבה היחידה שאני רוצה להשקיע כרגע ב JS זה פשוט בגלל שאני רוצה ללמוד תכנות WEB'י,
    וב C# - כמו גם ב VB.NET שכבר כיום אני מכיר (קצת) - פשוט אין לי תכנית כרגע לעבוד איתם ב- WEB.

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

    פורסם במקור בפורום CODE613 ב02/12/2017 23:08 (+02:00)

    ארכיון code613m

  • אשמח להסבר: MySqlCommandBuilder
    איש אחדא איש אחד

    אחד הסודות הכי גלויים כאן בפורום, הוא דעתך @דוד ל.ט. גבי דוט נט vs ג'אוה סקריפט ושאר החבר'ה undefined

    העניין הוא, שכרגע אם אני צריך תכנות לוקאלי ל Windows, אני מסתדר לא רע עם VB.NET.
    תכנות WEB'י אני לא מכיר בכלל ומאד הייתי רוצה להכיר,
    אבל אישית דווקא הייתי מעדיף להתחיל להשתולל עם הצד המופרע של JS ו NodeJS (ואולי גם PHP),

    ואם אצטרך תוכנות לוקאליות בדווקא, אני מניח שאחרי שאשחה כמו דג 😉 ב HTML ו JS,
    לא תהיה לי בעייה גדולה ליישם ב-C# את התחביר שלהן עם הידע שכבר יש לי מ-VB.

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

    פורסם במקור בפורום CODE613 ב01/12/2017 14:00 (+02:00)

    ארכיון code613m

  • אשמח להסבר: MySqlCommandBuilder
    איש אחדא איש אחד

    @דוד ל.ט.

    ושפת תגיות זה משהו של לימוד של חמש עד עשר דקות (XML נוד אטריביוט ונייימספייס).

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

    תודה רבה!

    פורסם במקור בפורום CODE613 ב01/12/2017 13:29 (+02:00)

    ארכיון code613m

  • אשמח להסבר: MySqlCommandBuilder
    איש אחדא איש אחד

    בס"ד

    תודה על התשובה והקוד,

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

    לגבי WPF, הערה נכונה (התעסקתי לא מעט עם התצוגה גם בתוכנה זו - עם חלוקה לכמה וכמה פנלים וספליטר),
    אבל, WPF היא שפת תגיות, ולהזכיר - HTML אצלי עדיין רק בתכנון (לעתיד הקרוב),
    וכן JS והרבה שפות נוספות שארצה להכיר כנראה בקרוב - בנויות על תחביר דומה למשפחת C,
    לכן לדעתי אני קודם אשקיע על שלישיית HTML+CSS+JS כדי "לפרוץ קדימה" בתחום חשוב שאצלי עדיין לא מוכר,
    ואחרי זה בעז"ה אחזור כבר לעולם החדש של C#+WPF במקום ל VB הענתיקה (שכמו הרבה, התחלתי איתה דרך VBA של Word 95-97).

    תודה רבה!

    פורסם במקור בפורום CODE613 ב01/12/2017 12:29 (+02:00)

    ארכיון code613m

  • אשמח להסבר: MySqlCommandBuilder
    איש אחדא איש אחד

    @דוד ל.ט.

    AddHandler result.Tables(0).RowChanged, Sub(s,e) Text = e.Row(0)
    

    תודה על תשובתך,

    קודם כל, 2 הערות שוליות:
    א. ב-AddHandler ששלחת, הוא צעק משהו על ה-e של ה Sub,
    אז עשיתי את ה-AddHandler בדרך הישנה והטובה עם AddressOf ששולח ל Sub שיצרתי בשם test, וזה עבד.
    ב. הרעיון לשנות את הכותרת של החלון לתוכן שבעמודה 0, לא מקפיץ לעין - אם נעשו שינויים בעמודות אחרות - גם שלא באשמת ה CellEndEdit.
    מה שעשיתי למעשה זה פשוט שיקפיץ MsgBox עם התרעה על השינוי.

    בכל אופן, לעניינינו, אני התייאשתי והרמתי ידיים...
    אכן, באירוע RowChanged - ההתראה על השינוי קופצת רק במעבר לשורה אחרת, ולא בתזוזה ימינה שמאלה, ולא במחיקת שורה שלמה.
    העברתי את ה MsgBox שלי לשגרה של ה CellEndEdit, והוא התחיל לקפוץ גם בתזוזה ימינה ושמאלה, אבל לא במחיקת שורה שלמה,
    אבל למעשה - בטבלה הוא לא מעדכן, [u:33olyrwl]גם לא במעבר שורות[/u:33olyrwl]! ולמרות שהמ-MsgBox קפץ.
    הוספתי כהצעתך את הפקודה tblMain.EndEdit לשגרה של "CellEndEdit" - אבל שום דבר לא השתנה.
    אז לפי מה הוא מחליט מתי כן לעדכן? לא עליתי.

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

    פורסם במקור בפורום CODE613 ב01/12/2017 03:15 (+02:00)

    ארכיון code613m

  • אשמח להסבר: MySqlCommandBuilder
    איש אחדא איש אחד

    בס"ד

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

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

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

    אשמח להחכים "בדרך הישר והרצוי"...

    תודה רבה!

    פורסם במקור בפורום CODE613 ב29/11/2017 22:56 (+02:00)

    ארכיון code613m

  • אשמח להסבר: MySqlCommandBuilder
    איש אחדא איש אחד

    @םןץףך ו @דוד ל.ט. - תודה רבה!

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

    על מי לסמן V של Answered?
    לריב! אין מספיק לכולם! :mrgreen:

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

    פורסם במקור בפורום CODE613 ב28/11/2017 00:37 (+02:00)

    ארכיון code613m

  • אשמח להסבר: MySqlCommandBuilder
    איש אחדא איש אחד

    תודה על התגובה,
    אבל עדיין לא הצלחתי לתפוס.

    הרי לכאורה היוצר של משפט ה SQL לא קשור ל Builder,
    כל השאילתות עבדו לי כראוי באמצעות הקוד הבא ובלי שום קשר ל Builder:

    Dim command As New MySqlCommand        ' שים לב, לא בילדר!!!
    command.Connection = conn              ' conn: משתנה המכיל את פרטי החיבור 
    command.CommandText = txtManual.Text   ' txtManual.Text: טקסטבוקס המכיל את נוסח השאילתא  
    dataAdapter.SelectCommand = command
    

    כל ה Builder נצרך רק לשלב של העדכון האוטומטי מהטבלה-בתוכנה אל המסד - "מתחת למכסה מנוע" - שאין לי מושג איך בדיוק הוא מתבצע.

    כמו כן, לא הצלחתי להבין,
    נכון שה-dataAdapter הוא גלובלי,
    אבל המשתנה המיוחד שיצרנו כ- new MySqlCommandBuilder, ובלעדי משתנה זה העסק לא עובד - מת בסוף השגרה, לא?

    פורסם במקור בפורום CODE613 ב28/11/2017 00:18 (+02:00)

    ארכיון code613m

  • אשמח להסבר: MySqlCommandBuilder
    איש אחדא איש אחד

    בס"ד

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

    לצורך חימום האצבעות, התחלתי לכתוב ב vb.net תוכנה לקריאה וכתיבה של מסדי הנתונים שלי ב MySQL.

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

    tblMain.EndEdit()            ' טייבל מיין - זה השם של הדטה גריד
    dataAdapter.Update(result)   ' רזולט - זה השם של הדטה סט - מקור הנתונים של הדטה גריד
    

    אלא שאז קיבלתי את השגיאה: @Visual Studio :evil:

    Update דורש InsertCommand חוקי כאשר מועבר אוסף של DataRow עם שורות חדשות.

    קראתי יותר לעומק את כל הדוגמא באתר הנ"ל,
    וראיתי שפספסתי שורה נוספת בשלב קריאת הטבלה - שאכן פתרה את הבעייה:

    Dim cb As New MySqlCommandBuilder(dataAdapter)
    

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

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

    פורסם במקור בפורום CODE613 ב27/11/2017 17:42 (+02:00)

    ארכיון code613m

  • קבלת CID באסטריסק "בכל מצב" ;)
    איש אחדא איש אחד

    @mat

    מה השימושיות של זה? בן אדם רוצה להיות חסוי תפרגן לו את זה. מה העניין לחפור לו.

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

    פורסם במקור בפורום CODE613 ב26/11/2017 22:02 (+02:00)

    ארכיון code613m
  • 1 / 1
  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.
  • פוסט ראשון
    פוסט אחרון
0
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום