2012-09-03 4 views
0
private void btnSearchDB_Click(object sender, EventArgs e) 
    { 
     OleDbConnection accessConnect = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\ECM\ECM\ECM\ECM.mdb"); 
     DataTable dt = new DataTable(); 
     OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM ECMeasurements WHERE [Job Number] LIKE " + txtJobNumber.Text, accessConnect); 

     da.Fill(dt); 
     dataGridView1.DataSource = dt; 



    } 

Существует также выбор, который можно найти по дате ..... (txtDate.Text) и comboBox (cbAlloyyTemper.Text). Я пишу три разных запроса или все критерии поиска могут быть вместе?Поиск базы данных доступа на основе выбора текстового поля

+1

Вы можете написать одну функцию 'Search (string field, string searchPattern)' и вызвать это из ваших событий формы ... – Marco

ответ

0

Первый: never использовать строки в запросах, но использовать Parameters.

Во-вторых: я бы создал 3 разных запроса, для легкой отладки после. Но все зависит от того, сколько запросов вы можете получить, и вашего собственного чувства комфорта.

+0

Извините, что я новичок в этом ..... у вас есть примеры, которые я мог бы выполнить? – user1487121

+0

И мне понадобятся только три поисковых запроса для Job Number, Date и ComboBox ... – user1487121

+0

@ user1487121: на самом деле нет ничего, что можно было бы показать. 1) вам нужно понять, какой запрос выполнить, 2) выбрать этот метод и выполнить запрос – Tigran

0

Это не так, как я бы сделал это вообще.

Если вы ищете одну и ту же таблицу каждый раз, когда вы создаете каждый запрос, вы не хотите каждый раз запрашивать базу данных. Вместо этого вы должны загружать данные в таблицу данных, а затем каждый раз запрашивать таблицу данных в памяти, а не в базе данных.

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

Для вас gridView, вы устанавливаете источник данных для этого объекта в свой источник связывания.

Как так: -

OleDbConnection accessConnect = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;  Data Source=C:\ECM\ECM\ECM\ECM.mdb"); 
DataTable dt = new DataTable(); 
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM ECMeasurements", accessConnect); 

da.Fill(dt); 
BindingSource bs = new BindingSource(); 
bs.DataSource = dt; 
dataGridView1.DataSource = bs; 

Теперь, любое изменение в состоянии DataTable отражает на ваш GridView автоматически.

Для запроса DataTable вы можете использовать DataView. DataView позволяет вам искать Datatable с такими параметрами, как SQL Statment. Синтаксис не соответствует моей голове, но его метод, который вам нужно посмотреть.

Посмотрите на Querying DataTables, используя DataViews. В Интернете есть много примеров.

В вашем случае это наиболее удобно.

Удачи.

Смежные вопросы