|
|
|
Active Developer
קבוצה: מפתחים רשומים
התחבר לאחרונה: שלשום @ 10:50
הודעות: 117,
ביקורים: 268
|
|
קטע קוד public Decimal GetBalance(int AccountID){ OleDbCommand oledbCommand = new OleDbCommand("spRetrieveBalance", OledbConnection);oledbCommand.CommandType = CommandType.StoredProcedure;OleDbParameter oledbParameter = oledbCommand.Parameters.Add("@AccountID", OleDbType.Integer);oledbParameter.Direction = ParameterDirection.Input;oledbParameter.Value = AccountID; } היי לכולם ! המתודה הנ"ל מקבלת מספר חשבון בנק ואז מחזירה את היתרה שבחשבון עכשיו זה אמור להתבצע בעזרת שגרות מאוחסנות שזה נושא חדש בשבילי כפי שאפשר לראות הגעתי עד למצב שאני מכניס את הפרמטר (מספר חשבון)אבל עכשיו השאלה שלי איך אני מקבל את התוצאה (יתרה)של אותה שאילתא ? תודה ולילה טוב 
|
|
|
|
|
מנהל פורום "פלטפורמת NET."
קבוצה: הנהלה ראשית
התחבר לאחרונה: אתמול @ 08:30
הודעות: 1,360,
ביקורים: 5,449
|
|
היי אבי, עליך להריץ את המתודה ExecuteScalar של אוביקט ה-Command. המתודה מחזירה ערך בודד מסוג Object ולכך עליך לבצע casting לטיפוס שלך (לדוגמא, אם אתה מחזיר רשומה אז נלקח הערך של התא הראשון).
לירון רצבי, מנהל ומייסד האתר אתר: http://www.Developers.org.il דוא"ל: Webmaster@Developers.org.il
|
|
|
|
|
Active Developer
קבוצה: מפתחים רשומים
התחבר לאחרונה: שלשום @ 10:50
הודעות: 117,
ביקורים: 268
|
|
תודה רבה יש לי בעיה קטנה לפעמיים שאני מוסיף פקד button לאפלקציית web ואני מריץ את התוכנית הרוחב של הכפתור משתנה למימדים גדולים אולי נתקלת בבעיה ו/או יש לך פתרון/הסבר תודה
|
|
|
|
|
Active Developer
קבוצה: מפתחים רשומים
התחבר לאחרונה: שלשום @ 10:50
הודעות: 117,
ביקורים: 268
|
|
| ערב טוב לכולם! יש לי מחלקה בשם AccountService ובה יש מס' מתודות: 1)UpDateBalance 2)UpDateTransactions 3)PayThatBill כאשר אני מפעיל את המתודות 1 ו 2 בנפרד הכל תקין, הבעיה היא כשאני מפעיל את המתודה ה-3 שמשלבת את שתיהן יחד במתודה ה-3 נשעשה שימוש באובייקט OleDbTransaction כדי שבמידה ואחד משתי(1 ו\או 2  תכשל השינויים שנעשו על מסד הנתונים ישוחזרו. אך נזרקת לי שגיאה שהחיבור (OledbConnection) לא נסגר. שאלתי את המורה שלי והיא אמרה לי שהייתי אמור להגדיר משהו ב OleDbTransaction גם במחלקות 1 ו 2 אך היא לא הספיקה להסביר לי מה... אפשר לקבל עזרה ממישהו שהבין את הבעיה(אם אפשר גם הסבר מדוע התרחשה השגיאה)? תודה
|
|
|
|
|
מנהל פורום "פלטפורמת NET."
קבוצה: הנהלה ראשית
התחבר לאחרונה: אתמול @ 08:30
הודעות: 1,360,
ביקורים: 5,449
|
|
avi-a (05/09/2008)
תודה רבה  יש לי בעיה קטנה לפעמיים שאני מוסיף פקד button לאפלקציית web ואני מריץ את התוכנית הרוחב של הכפתור משתנה למימדים גדולים אולי נתקלת בבעיה ו/או יש לך פתרון/הסבר תודה הבעיה נובעת מכך שאתה מגדיר את ה-Layout של ה-Button כ-Absolute. הפיתרון הוא להגדיר לו Width בצורה מפורשת או להגדיר לו את ה-Layout כ-Relative.
avi-a (07/09/2008)
ערב טוב לכולם! יש לי מחלקה בשם AccountService ובה יש מס' מתודות: 1)UpDateBalance 2)UpDateTransactions 3)PayThatBill כאשר אני מפעיל את המתודות 1 ו 2 בנפרד הכל תקין, הבעיה היא כשאני מפעיל את המתודה ה-3 שמשלבת את שתיהן יחד במתודה ה-3 נשעשה שימוש באובייקט OleDbTransaction כדי שבמידה ואחד משתי(1 ו\או 2  תכשל השינויים שנעשו על מסד הנתונים ישוחזרו. אך נזרקת לי שגיאה שהחיבור (OledbConnection) לא נסגר. שאלתי את המורה שלי והיא אמרה לי שהייתי אמור להגדיר משהו ב OleDbTransaction גם במחלקות 1 ו 2 אך היא לא הספיקה להסביר לי מה... אפשר לקבל עזרה ממישהו שהבין את הבעיה(אם אפשר גם הסבר מדוע התרחשה השגיאה)? תודה במידה ואנו נדרשים לבצע מס' פעולות ב-DB ולוודא שהן התבצעו כהלכה (קרי: "הכל או כלום") עליך לבצע זאת ע"י טרנזקציה. עליך להגדיר אוביקט מסוג OleDbTransaction, לשייך את אוביקט ה-Command של המתודות הרלוונטיות לאוביקט הטרנזקציה ולבצע אותן בצורה רגילה. לאחר מכן, עליך להריץ את המתודה Commit של אוביקט הטרנזקציה על מנת לשמור את השינויים או Rollback במידה ואחת מהפעולות נכשלה כדי לשחזר את השינויים שאותן פעולות ביצעו.
לירון רצבי, מנהל ומייסד האתר אתר: http://www.Developers.org.il דוא"ל: Webmaster@Developers.org.il
|
|
|
|
|
Active Developer
קבוצה: מפתחים רשומים
התחבר לאחרונה: שלשום @ 10:50
הודעות: 117,
ביקורים: 268
|
|
קודם כל תודה נסיתי לשייך את אובייקט הcommand ל OledbTransaction כך קטע קוד oledbCommand.Transaction = objTrans; אך הבעיה לא נפתרה קטע קוד public void UpDateBalance(int AccountID, int NewBalance){ try{ OledbConnection.Open(); oledbCommand = new OleDbCommand("spUpdateBalance", OledbConnection);oledbCommand.CommandType = CommandType.StoredProcedure;oledbCommand.Transaction = objTrans; OleDbParameter OleDbParameters = new OleDbParameter();OleDbParameters = oledbCommand.Parameters.Add( "@newbalance", OleDbType.Integer);OleDbParameters.Direction = ParameterDirection.Input;OleDbParameters.Value = NewBalance; OleDbParameters = oledbCommand.Parameters.Add( "@AccountID", OleDbType.Integer);OleDbParameters.Direction = ParameterDirection.Input;OleDbParameters.Value = AccountID; oledbCommand.ExecuteNonQuery(); OledbConnection.Close(); } catch (Exception e){ throw e;} } public void PayThatBill(int AccountID, string payee, decimal amount){ try{ OledbConnection.Open(); objTrans = OledbConnection.BeginTransaction(); this.UpDateBalance(AccountID,Convert.ToInt32(GetBalance(AccountID)-amount));this.UpDateTransactions(AccountID, payee, amount);objTrans.Commit(); } catch (Exception e){ objTrans.Rollback(); throw e;} finally{ OledbConnection.Close(); } } זהו חלק מהקוד
|
|
|
|
|
Active Developer
קבוצה: מפתחים רשומים
התחבר לאחרונה: שלשום @ 10:50
הודעות: 117,
ביקורים: 268
|
|
| הבנתי את הבעיה פתחתי וסגרתי את החיבור במתודות המשניות תודה על העזרה
|
|
|
|