Господа, возникла проблема с SQL запросом в DataAdapter.
Нужно выбрать 7 строк с конца таблицы. Я пишу:
SELECT TOP 7 * FROM table ORDER BY Date DESC
или
SELECT TOP 7 FROM table ORDER BY Date DESC
или
SELECT * FROM table ORDER BY Date DESC TOP 7
или
SET ROWCOUNT 7
SELECT * FROM table ORDER BY Date DESC
SET ROWCOUNT 0
ничего не выходит... Ругается на ошибку. Выручайте!
Здравствуйте, Viacheslav_83, Вы писали:
V_>Господа, возникла проблема с SQL запросом в DataAdapter.
V_>Нужно выбрать 7 строк с конца таблицы. Я пишу:
V_>V_>SELECT TOP 7 * FROM table ORDER BY Date DESC
V_>или
V_>SELECT TOP 7 FROM table ORDER BY Date DESC
V_>или
V_>SELECT * FROM table ORDER BY Date DESC TOP 7
V_>или
V_>SET ROWCOUNT 7
V_>SELECT * FROM table ORDER BY Date DESC
V_>SET ROWCOUNT 0
V_>
V_>ничего не выходит... Ругается на ошибку. Выручайте!
Поскольку table и Date — зарезервированные слова, попробуйте так:
SELECT TOP 7 * FROM [table] ORDER BY [Date] DESC
AFAIK, Access не поддерживает ROWCOUNT или TOP.
Posted via RSDN NNTP Server 1.8 beta
Здравствуйте, Admiral, Вы писали:
A>AFAIK, Access не поддерживает ROWCOUNT или TOP.
Вот этот код у меня нормально работает и выбирает Top 7, Access XP
System.Data.OleDb.OleDbConnection cnn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\test.MDB");
System.Data.OleDb.OleDbCommand selectCMD = new System.Data.OleDb.OleDbCommand("SELECT TOP 7 * FROM [table] ORDER BY [Date] DESC", cnn);
selectCMD.CommandTimeout = 30;
System.Data.OleDb.OleDbDataAdapter myDA = new System.Data.OleDb.OleDbDataAdapter();
myDA.SelectCommand = selectCMD;
DataSet myDS = new DataSet();
myDA.Fill(myDS, "myTable");
foreach(DataTable myTable in myDS.Tables)
{
foreach(DataRow myRow in myTable.Rows)
{
foreach (DataColumn myColumn in myTable.Columns)
{
Console.WriteLine(myRow[myColumn]);
}
}
}