שגיאת ריצה ב-ASP.NET

קישוא

New member
שגיאת ריצה ב-ASP.NET

אני אודה מאוד אם מישהו יוכל לעזור לי! זה שני דפים ולכן אני מעדיף שהמושיע שיעזור לי יכנס ל-ICQ שלי: 310490418. הבעיה היא בעידכון מסד נתונים (שפת תכנות: VB, מסד נתונים: Access xp). תודה מראש!
 

Zeliran

New member
ממממ....

כל כך קשה לרשום את הודעת השגיאה? לתאר את הבעיה?
 

קישוא

New member
הבעיה היא

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

gilad g

New member
אתה יכול להתחיל

בלתאר לנו את הבעיה - מה ניסית לעשות, ואיפה נכשלת
 

קישוא

New member
אוקיי

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

קישוא

New member
אולי זאת הבעיה

כשאני מנסה לעדכן את המסד, הוא אומר לי The connection is already Open (state=Open). אבל כשאני מוחק את השורה הזאת, כשהוא מגיע ל-exutescalar הוא אומר שהוא צריך חיבור פתוח.
 

קישוא

New member
לא פועלת משמע

לא עובד. השרת בטוח שהפעולה עברה בהצלחה, כי הוא כותב בדפדפן Transaction Added כמו שכתבתי לו. אבל המסד נתונים לא השתנה בכלל. בשאלות נפוצות בפורום ASP היה הסבר איך לתת הרשאה ולא הצלחתי לתת הרשאה. תודה!
 

gilad g

New member
לא חושב שהבעיה היא הרשאות,

אם הוא לא היה מצליח לכתוב למסד נתונים, הוא היה זורק exception. יכול להיות שכתבת את השגרה המאוחסנת לא נכון?
 

קישוא

New member
לא

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

gilad g

New member
המממ

אולי יש לך catch על ה-exception בטעות? אתה יכול להראות קוד רלוונטי?
 

קישוא

New member
קוד רלוונטי?

ננסה...: הדף הרלוונטי הוא bill.aspx והוא מכיל שתי שדות: Payee עבור שם העסק/איש שמקבל את הכסף. Amount עבור כמות הכסף. ולחצן שבעת לחיצה עליו מופעלת השיטה PayBill
sub PayBill(obj as object, e as eventargs) dim decBalance as Decimal = GetBalance dim decAmount as Decimal = tbAmount.Text if decAmount < 0 then lblMessage.Text = "<font color=red>The transaction " & _ "amount cannot be negative!</font>" exit sub end if if decAmount <= decBalance then UpdateBalance(decBalance - decAmount) AddTransaction(tbPayee.Text, decAmount) lblMessage.Text = "<font color=red>Transaction added.</font>" tbAmount.Text = " " tbPayee.Text = " " else lblMessage.Text = "<font color=red>You do not have " & _ "enough funds to complete this " & _ "transaction!</font>" end if end sub​
 

קישוא

New member
השיטות GetBalance

function GetBalance as Decimal dim decBalance as decimal dim objCmd as OleDbCommand = new OleDbCommand("spRetrieveBalance", Conn) objCmd.CommandType = CommandType.StoredProcedure dim objReader as OleDbDataReader ' set parameters for stored procedure dim objParam as OleDbParameter objParam = objCmd.Parameters.Add("@UserID", OleDbType.BSTR) objParam.Direction = ParameterDirection.Input objParam.Value = Request.Cookies("Account").Value try objCmd.Connection.Open() decBalance = CType(objCmd.ExecuteScalar, Decimal) objCmd.Connection.Close() catch ex as OleDbException lblMessage.Text = ex.Message end try return decBalance end function​
 

קישוא

New member
השיטה Add Transaction

sub AddTransaction(strPayee as string, decAmount as Decimal) dim objCmd as OleDbCommand = new OleDbCommand("spInsertTransaction", Conn) objCmd.CommandType = CommandType.StoredProcedure ' set parameters for stored procedure dim objParam as OleDbParameter objParam = objCmd.Parameters.Add("@Date", OleDbType.Date) objParam.Direction = ParameterDirection.Input objParam.Value = Datetime.Now objParam = objCmd.Parameters.Add("@Amount", OleDbType.Decimal) objParam.Direction = ParameterDirection.Input objParam.Value = decAmount objParam = objCmd.Parameters.Add("@Payee", OleDbType.BSTR) objParam.Direction = ParameterDirection.Input objParam.Value = strPayee objParam = objCmd.Parameters.Add("@UserID", OleDbType.BSTR) objParam.Direction = ParameterDirection.Input objParam.Value = Request.Cookies("Account").Value try objCmd.Connection.Open() objCmd.ExecuteNonQuery catch ex as OleDbException lblMessage.Text = ex.Message finally objCmd.Connection.Close() end try end sub​
 

קישוא

New member
והשיטה UpdateBalance

sub UpdateBalance(decNewAmount as Decimal) dim objCmd as OleDbCommand = new OleDbCommand("spUpdateBalance", Conn) objCmd.CommandType = CommandType.StoredProcedure ' set parameters for stored procedure dim objParam as OleDbParameter objParam = objCmd.Parameters.Add("@NewBalance", OleDbType.Decimal) objParam.Direction = ParameterDirection.Input objParam.Value = decNewAmount objParam = objCmd.Parameters.Add("@UserID", OleDbType.BSTR) objParam.Direction = ParameterDirection.Input objParam.Value = Request.Cookies("Account").Value try objCmd.Connection.Open() objCmd.ExecuteNonQuery catch ex as OleDbException lblMessage.Text = ex.Message finally objCmd.Connection.Close() end try end sub​
 

gilad g

New member
המממ

נסה לשים breakpoint בשורה lblMessage.Text = ex.Message (בשתי הפונקציות), ותראה אם הוא מגיע לשם... נסה גם להוריד את ה-try-catch ולראות אם נזרק exception.
 

קישוא

New member
המממ

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