Как создать окно поиска? - PullRequest
       10

Как создать окно поиска?

1 голос
/ 12 ноября 2011

Теперь я потратил несколько часов, пытаясь что-то придумать, погугливая и читая форумы, но я не нашел своего ответа!

Мне нужно сделать какое-то «бизнес-приложение» в качестве проекта в моей школе, где мне нужно следить за клиентами компании. Я использую Microsoft Visual C # 2010 Express и Access 2010 и пишу на C # с использованием OleDb.

Мой вопрос:

Как создать окно поиска / форму для приложения для поиска информации в базе данных доступа (.accdb). Я хочу использовать текстовое поле, где я пишу что-то из моей базы данных, например, название компании, и нажимаю кнопку поиска. Теперь следует записать всю информацию, связанную с названием компании, найденную в базе данных в DataGrid.

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

ЗДЕСЬ КОД, ПОЛУЧИЛ ОШИБКУ В .Fill (набор данных, "Еда") ;. InvalidOperationException не обработан. Заполнить: SelectCommand.Connection не было инициализировано. Просто протестируйте базу данных простого доступа с одной таблицей с именем «Food» с FoodID, FoodName и Price внутри.

private void button1_Click(object sender, RoutedEventArgs e)
    {
        GetCustomers(textBox1.Text);
    }
        // Load Data from the DataSet into the DataGridView
        private void GetCustomers(string searchTerm)
        {
            DataSet dataset = new DataSet();
            using (OleDbConnection connection = 
            new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Niclas\Desktop\Skole\Programmering\Database\Food.accdb;Persist Security Info=False;"))
            {
                OleDbDataAdapter adapter = new OleDbDataAdapter();
                adapter.SelectCommand = new OleDbCommand(
                "select * from Food where FoodID like ('" + searchTerm + "', connection");
                adapter.Fill(dataset, "Food");
            }

        // Get the table from the data set and bind the data to the grid
        this.dataGrid1 = new System.Windows.Controls.DataGrid();

        dataGrid1.DataContext = dataset.Tables[0];

        }
     }

Ответы [ 2 ]

1 голос
/ 12 ноября 2011

Я делал что-то подобное, когда работал стажером.Я нашел способ создать форму для каждого типа данных, которые я искал, а затем запустил фильтр в BindingSource, прикрепленном к представлению таблицы данных.Еще одно аккуратное добавление, которое я добавил, было то, что этот фильтр работал при нажатии клавиш, поэтому он автоматически, как вы печатали.1004 *

Возможно, есть и лучшие способы, но этот проект также был направлен против довольно большой базы данных доступа и, казалось, работал довольно хорошо

1 голос
/ 12 ноября 2011

Можете ли вы опубликовать код, который у вас не работает?

По сути, при событии нажатия кнопки поиска вы вызываете функцию для заполнения DataGridView, например:

GetCustomers(textBox1.Text);


// Load Data from the DataSet into the DataGridView
private void GetCustomers(string searchTerm)
{
DataSet dataset = new DataSet();
using (OleDbConnection connection = 
    new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccess2007file.accdb;Persist Security Info=False;"))
  {
    OleDbDataAdapter adapter = new OleDbDataAdapter();
    adapter.SelectCommand = new OleDbCommand(
        "select * from customer where name like %" + searchTerm + "%", connection);
    adapter.Fill(dataset, "Customers");
  }

    // Get the table from the data set and bind the data to the grid
    DataGridView.DataSource = dataset.Tables[0];
}

У меня нет Visual Studio на этом ПК, поэтому возможны синтаксические ошибки, но с этого следует начать.

...