SQL עדכון לDataSet
-
אני מנסה להפעיל פונקציית עדכון לדטה סט,
שתעבור על הנתונים, תבצע בדיקת אימות ואם הכל כשורה אז תעדכן בבסיס הנתונים.
לפי מה שראיתי בספר: visual c# 3.0 הם המליצו ליצור מופע חדש של הדטה סט שלי, כשאני קורא בעצם לפונקציית GetChanges() ואת השינויים שומר במופע החדש. ואז על גבי זה מבצע את הבדיקות, ומעדכן אם הכל כשורה.
הבעיה שלי היא שכאשר אני מנסה לכתוב את הקוד הבא:private void Update_Click(object sender, RoutedEventArgs e) { TrialSQL1.AvrTrumaDataSet changes = avrTrumaDataSet.GetChanges(); try { if(changes==null) { return; }
אז הוא לא מכיר את המופע avrTrumaDataSet, ובצדק כיון שהוא הוגדר במתודה הקודמת והוא לא בתוך טווח ההכרה שלו.
מאידך אם אני אצור מופע חדש בשם הזה זה לא יעזור לי, כיון שאני רוצה שהוא ידווח לי על השינויים שנעשו במופע שנוצר כבר ועבר שינוי ע"י המשתמש.
א"כ מה עלי לעשות?
תודה רבה!פורסם במקור בפורום CODE613 ב14/07/2015 01:29 (+03:00)
-
כן, הVS יצר את המתודה הזאת (שהזכרתי בשאלה הקודמת:
private void Window_Loaded(object sender, RoutedEventArgs e) { TrialSQL1.AvrTrumaDataSet avrTrumaDataSet = ((TrialSQL1.AvrTrumaDataSet)(this.FindResource("avrTrumaDataSet"))); // Load data into the table Person. You can modify this code as needed. TrialSQL1.AvrTrumaDataSetTableAdapters.PersonTableAdapter avrTrumaDataSetPersonTableAdapter = new TrialSQL1.AvrTrumaDataSetTableAdapters.PersonTableAdapter(); avrTrumaDataSetPersonTableAdapter.Fill(avrTrumaDataSet.Person); CollectionViewSource personViewSource = ((CollectionViewSource)(this.FindResource("personViewSource"))); personViewSource.View.MoveCurrentToFirst(); }
תודה!
פורסם במקור בפורום CODE613 ב14/07/2015 14:51 (+03:00)
-
אז תכתוב ככה:
TrialSQL1.AvrTrumaDataSet avrTrumaDataSet = ((TrialSQL1.AvrTrumaDataSet)(this.FindResource("avrTrumaDataSet"))); TrialSQL1.AvrTrumaDataSet changes = avrTrumaDataSet.GetChanges();
או קצר:
var changes = ((TrialSQL1.AvrTrumaDataSet)(this.FindResource("avrTrumaDataSet"))).GetChanges();
פורסם במקור בפורום CODE613 ב14/07/2015 15:19 (+03:00)
-
עכשיו זה מובן לי, אחרי שהסברת שהוא לא יוצר מופע חדש אלא מחפש את הresource שהוגדר בXAML ושניהם לדבר אחד מתכוונים.
מהי הדרך המומלצת?
לפי מה שאני מבין עכשיו נראה לי שכשאני בונה טופס בו המשתמש מזין את כל הפרטים מחדש - אז עדיף לעדכן באמצעות newRow וכך לעשות בדיקה על כל הנתונים, (כיון שידוע לי בדיוק מה המשתמש משנה). אולם, כשאני מציג לו את כל הטבלה ויכול להיות שהוא ביצע שינויים בהרבה מקומות ואינני יודע איפה עדיף להשתמש במתודה GetChanges.
תודה רבה רבה!!פורסם במקור בפורום CODE613 ב14/07/2015 15:25 (+03:00)
-
לא כ"כ ברור לי מה שתי הדרכים שאתה שואל איזו להעדיף. NewRow והמתודה GetChanges לא מתחרים כלל על אותה המשבצת. בנוסף אני לא יודע איזו בדיקה אתה מבצע.
אבל שתדע לך, מאוד קשה לי לתת לך פרקטיקות טובות בDB, כי פשוט לא היה לי אף פעם. אכלתי המון קש. מזכיר לי משפט של מורה "אתם לא יכולים ללמוד מהטעיות שלי. אתם חייבים לעשות טעויות משלכם כדי ללמוד" :).פורסם במקור בפורום CODE613 ב14/07/2015 18:27 (+03:00)