2013-05-16 4 views
0

Я работаю с формой приложения C# Windows, подключающейся к MS Access. Я наполнение DataGridView с конкретным запросом, но это произошлоСинтаксическая ошибка (отсутствующий оператор) в статусе выражения запроса = 'Доступно'

Синтаксической ошибки (отсутствующий оператор) в выражении запроса «Модель WHERE Status =„Недоступен“».

по этому запросу

OleDbDataAdapter daAvailable = новый OleDbDataAdapter ("SELECT Тип, марка, модель, SerialNo, состояние, замечания, RAM, HDD, ODD, видеокарте, PS ОТ Доступные ORDER BY Type, Бренд, модель WHERE Status = 'AVAILABLE' ", cnn);

Что мне делать?

Вот мой код

OleDbConnection сппы = новый OleDbConnection (@ "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C: \ Users \ Джеймс \ Documents \ Visual Studio 2010 \ Projects \ Vault \ Vault \ VaultDatabase.accdb "); DataSet dstAvailable = новый DataSet(); DataSet dstData = new DataSet(); DataSet dstDeployment = новый DataSet(); DataSet dstLog = new DataSet();

public void FillAvailable(DataGridView dgv) 
    { 
     OleDbDataAdapter daAvailable = new OleDbDataAdapter("SELECT Type, Brand, Model, SerialNo, Status, Remarks, RAM, HDD, ODD, VideoCard, PS FROM Available ORDER BY Type, Brand, Model WHERE Status = 'AVAILABLE'", cnn); 
     daAvailable.Fill(dstAvailable); 
     dgv.DataSource = dstAvailable.Tables[0]; 
    } 
+0

ДОСТУПНЫ является строкой –

ответ

1

Написать так

public void FillAvailable(DataGridView dgv) 
{ 
    OleDbDataAdapter daAvailable = new OleDbDataAdapter("SELECT Type, Brand, Model, SerialNo, Status, Remarks, RAM, HDD, ODD, VideoCard, PS FROM Available WHERE Status = 'AVAILABLE' ORDER BY Type, Brand, Model", cnn); 
    daAvailable.Fill(dstAvailable); 
    dgv.DataSource = dstAvailable.Tables[0]; 
} 

* Заказывайте Comes После Где *

1

ORDER BY положение должно быть после пункта WHERE в SQL

Таким образом, ваш запрос должен быть:

OleDbDataAdapter daAvailable = new OleDbDataAdapter("SELECT Type, Brand, Model, SerialNo, "+ 
    "Status, Remarks, RAM, HDD, ODD, VideoCard, PS " + 
    "FROM Available " + 
    "WHERE Status = 'AVAILABLE' "+ 
    "ORDER BY Type, Brand, Model", cnn); 

    //The above query is broken down on multiple lines for clarity 
+0

спасибо всем. Я честно не видел этого –

1

ORDER BY

всегда после ИНЕКЕ, оно должно быть:

OleDbDataAdapter daAvailable = new OleDbDataAdapter("SELECT Type, Brand, Model, SerialNo, Status, Remarks, RAM, HDD, ODD, VideoCard, PS FROM Available WHERE Status = 'AVAILABLE' ORDER BY Type, Brand, Model", cnn); 
Смежные вопросы