2017-01-24 13 views
0

ПРЕДИСЛОВИЕ: Есть много вопросов по SO, которые относятся к «C# с использованием SQL-представлений», но мне еще предстоит найти что-то близкое к моей проблеме.C# с использованием вида доступа вместо пользовательского запроса

Я использую C# (Visual Studio 2015) для создания подключаемого модуля Excel 2010. В back-end я должен использовать Access 2010. Я создал View in Access, для которого требуется передать один параметр.

Вместо того, чтобы печатать на весь запрос в command.CommandText, я хотел бы просто использовать только вид и связать единственный параметр, который необходим для запуска

Любая помощь будет принята с благодарностью

enter image description here

private void getJobSetpoints(int xID, int xYear) 
    { 
     //string yearTable = "tbl_points_table_" + xYear.ToString();    
     try 
     { 
      connection.Open(); 
      OleDbCommand command = new OleDbCommand(); 
      command.Connection = connection; 

      command.CommandText = "qry_setpoints"; //**This is wrong, I just don't know how to identify the VIEW. 
      command.Parameters.Add("@ID", OleDbType.Integer).Value = xID; 

      OleDbDataReader reader = command.ExecuteReader(); 

      while (reader.Read()) 
      { 
       //Do stuff 
      } 
     } 
     finally 
     { 
      connection.Close(); 
     } 
    } 
+1

'command.CommandText =" select * from qry_setpoints "'? – bazz

ответ

3

Использовать представление, подобное таблице.

command.CommandText = "select qry_setpoints where ID = @ID"; 
command.Parameters.Add("@ID", OleDbType.Integer).Value = xID;  
+0

Право - только если это была хранимая процедура, а не запрос вида, код OP был бы прекрасен (за исключением того, что они установили CommandType в adCmdStoredProc). – dlatikay

+0

Спасибо, ребята. Что-то так просто, что я просто не мог этого увидеть :) – Sanya