Отображение сотрудников, включенных в указанный диапазон заработной платы в DataGridView - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь показать сотрудников в моей базе данных в datagridview. но я хочу отображать только определенных сотрудников по диапазону зарплат, поэтому в datagridview будут отображаться сотрудники, включенные в этот диапазон зарплат. Например, отображение всех сотрудников с зарплатой от 5000 до 20000 долларов в datagridview. Это код, который я пробовал, но он показывает мне всех сотрудников, а не тех, которые включены в диапазон

OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\users\himaf\onedrive\documents\visual studio 2015\Projects\برنامج الموظفين\برنامج الموظفين\EmployeesProgram1.accdb;Persist Security Info=True");
        OleDbCommand command = new OleDbCommand("select * from EmployeesInfo", connection);
        OleDbCommand command2 = new OleDbCommand("select * from EmployeesInfo", connection);
        DataTable table = new DataTable();
        connection.Open();
        OleDbDataReader reader = command.ExecuteReader();
        while (reader.Read())
        {
            if (int.Parse(reader[2].ToString()) >= int.Parse(txtFrom.Text) && int.Parse(reader[2].ToString()) <= int.Parse(txtTo.Text))
            {
                table.Load(command2.ExecuteReader());
                dataGridView1.DataSource = table;
            }
        }
        reader.Close();
        connection.Close();

1 Ответ

0 голосов
/ 14 июля 2020

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

Я бы посоветовал вам прочитать здесь datareader: https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/retrieving-data-using-a-datareader

Кроме этого Я также предлагаю вам использовать ваш sql -двигатель для фильтрации строк, которые вам не нужны. Что-то вроде

select * from EmployeesInfo where salary => @lowerbound and salary <= @upperbound
...