בעיה עם שאילתת sql

בעיה עם שאילתת sql

בניתי דף אינטרנט שמתחבר לבסיס נתונים ושולף מידע באמצעות שאילתת sql כשאני משתמש בקטע הזה : Dim myDataAdapter As OleDbDataAdapter = New OleDbDataAdapter _ ("SELECT * FROM ( SELECT TOP 2 * FROM ( SELECT TOP 10 * FROM test2 ORDER BY example1 ASC)ORDER BY example1 DESC)", myConnection) הכל עובד והמידע נשלף. כשאני מחליף את הקטע SELECT TOP 10 בקטע SELECT TOP '" & Label1.Text & "' אני מקבל הודעת שגיאה זו: ‏‏משפט SELECT כולל מילה שמורה או שם ארגומנט המאוייתים באופן שגוי או חסרים; לחלופין, ייתכן שהפיסוק שגוי. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.Data.OleDb.OleDbException: ‏‏משפט SELECT כולל מילה שמורה או שם ארגומנט המאוייתים באופן שגוי או חסרים; לחלופין, ייתכן שהפיסוק שגוי. Source Error: Line 129: 'fill dataset Line 130: Dim ds As DataSet = New DataSet() Line 131: myDataAdapter.Fill(ds, "test2") Line 132: Line 133: Try הנה הקוד המלא: ( תתעלמו מזה שבהעתקה להודעה בתפוז המחשב מזיז לצד שמאל סוגריים וגרשיים שבקוד נמצאים בצד ימין. Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click Session("count1") = Session("count1") + 1 Dim c = Session("count1") Label1.Text = c 'set up connection Dim myConnection As OleDbConnection = New OleDbConnection _ ("Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\Documents and Settings\חגי2\My Documents\Visual Studio 2005\WebSites\WebSite121\App_Data\dbsmall240107.mdb") 'open connection Dim myDataAdapter As OleDbDataAdapter = New OleDbDataAdapter _ ("SELECT * FROM ( SELECT TOP 2 * FROM ( SELECT TOP '" & Label1.Text & "' * FROM test2 ORDER BY example1 ASC)ORDER BY example1 DESC)", myConnection) ' Dim myDataAdapter As OleDbDataAdapter = New OleDbDataAdapter _ ' ("SELECT * FROM ( SELECT TOP 2 * FROM ( SELECT TOP 10 * FROM test2 ORDER BY example1 ASC)ORDER BY example1 DESC)", myConnection) myConnection.Open() 'fill dataset Dim ds As DataSet = New DataSet() myDataAdapter.Fill(ds, "test2") Try Label2.Text = ds.Tables(0).Rows(0)(0) Catch Label2.Text = "the value you entered does not exsist on the db" End Try ________________________________________
 
אוי, בגלל העורך של תפוז זה יצא נורא ובלתי

קריא מה שכתבתי מצרף מסמך וורד.
 

גרי רשף

New member
אנסה לכוון אותך

הידיעות שלי בדוט-נט מועטות. נסה לשמור את משפט ה-SQL שאתה בונה בתוך משתנה, ואת המשתנה לשים בתוך פקודת ה-DataAdapter. בצורה כזו תוכל לבדוק בשורה לפני כן שמשפט ה-SQL שבתוך המשתנה תקין: הרי ה-DataAdapter לא אמור "לדעת" אם הצבת את משפט ה-SQL במשתנה בשלמותו או שבנית אותו באופן דינמי. אם בשני המקרים ה-DataAdapter מקבל משתנה עם אותה מחרוזת בדיוק- הוא אמור להגיב באופן דומה, ואתה תוכל לוודא שזו אמנם אותה מחרוזת.
 
למעלה