בעיית multiple base tables

dreamworks

New member
בעיית multiple base tables../images/Emo131.gif

שלום ברצוני למלא Gridview בערכים מטבלאות שונות. בגדול יש טבלה כללית המכילה ID's של טבלאות אחרות, לדוגמה: טבלה המכילה מספר קבוצה וטבלה שניה המכילה את המספר קבוצה ואת השם שלה. ברצוני להראות למשתמש את שם הקבוצה ולא את המספר הסידורי שלה. כאשר אני פונה ל DB עם שאילתה לכמה טבלאות : "SELECT Games.Game_Id,Teams.TC_Team_Name FROM Games,Teams WHERE (Games.Game_Over = -1) AND (Games.Game_Lteam=" + Team_id + "); כאשר אני מריץ את השאילתה אני מקבל Exception Dynamic SQL generation is not supported against multiple base tables האם הדבר קשור לסוג החיבור ל DB (Access), האם יש דרך "להוריד את כל הטבלה ל dataset " ולערוך את ה query עליו???? אשמח לקבל עצות, תודה
 
הפתרון הקל בדרך כלל,

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

dreamworks

New member
בגדול זה מה שאני מנסה לעשות אבל

כאשר אני מריץ את השאילתה אני מקבל Exception Dynamic SQL generation is not supported against multiple base tables מה גורם לבעיה?? אולי דרך ההתחברות //**************************Connection************************// this.Conn = new OleDbConnection(); this.Adapt = new OleDbDataAdapter(); this.MainDataSet = new DataSet(); this.Conn.ConnectionString = StrCn; //************************************************************// #endregion try { OleDbCommand MainCom = new OleDbCommand(SqlStr, this.Conn); Adapt.SelectCommand = MainCom; Adapt.Fill(this);// Filling the DataSet object. OleDbCommandBuilder myBuilder = new OleDbCommandBuilder(Adapt); Adapt.UpdateCommand = myBuilder.GetUpdateCommand(); Adapt.DeleteCommand = myBuilder.GetDeleteCommand(); Adapt.InsertCommand = myBuilder.GetInsertCommand(); }
 
קודם כל,

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