select בתוך Dataset

David El

New member
select בתוך Dataset

שלום, השאלה היא ב-asp.net . יש לי טבלה ב-DatsSet ואני מעוניין למצוא את הערך הכי גדול באחת העמודות כדי לקדם אותו עם הכנסת שורה חדשה.העמודה היא PK . 1.ניסיתי להשתמש ב-autoIncrement כדי לקדם את הערך הכי גבוה בשדה עם הכנסה של שורה חדשה לטבלה ב-DataSet , אבל במקום לקדם את הערך הכי גבוהה בעמודה תמיד הוכנס 0 לשדה הזה בשורה החדשה. 2. ניסיתי לבדוק מהו הערך המקסימלי בשדה כדי לקדם אותו בצורה הבאה אבל ללא הצלחה:
ds.Tables("ExpertPerson").Select("MAX(Person_Code)")​
השגיאה שקילתי עבור השורה הזו :
Filter expression 'MAX(Person_Code)' does not evaluate to a boolean term.​
מה עושים כדי לפתור את הבעיה הזאת ? תודה
 

סומבודי

New member
תשובה

קודם כל, השאלה אינה ב-asp.net. זו שאלת פריימוורק כללית. לאחר העמדת הדברים על דיוקם, הנה התשובה: 1. בדוק אם המאפיין AutoIncrement מוגדר כאמת. לא מספיק שה-Seed וה-Step מוגדרים. 2. למתודה DataTable.Select ניתן לקרוא עם מחרוזת המייצגת תנאי שמחזיר ערך בוליאני, הנבחן עבור כל ערך בעמודה. לדוגמא: "person_code > 20". התנאי מקביל לחלק שאחרי WHERE בשאילתות SQL, ולא לשאילתה כולה. פתרון לבעיה שלך על פי גישה 2 הוא לולאה שעוברת על כל ערכי העמודה, ומאחזרת את הערך המקסימלי.
 

gilad g

New member
2.

פתרון אחר
צור עמודה חדשה ב-DataTable שלך, עם Expression ששווה ל-"(MAX(Person_Code". אח"כ גש לשורה הראשונה בעמודה הזאת, הערך המבוקש אמור להיות שם. ככה זה ייראה:
DataTable myTable = //.... DataColumn col = new DataColumn("MAX_COL", typeof(int)); col.Expression = "MAX(Person_Code)"; myTable.Columns.Add(col); int max = (int)myTable.Rows[0]["MAX_COL"];​
 
למעלה