Заполнение текстового поля после выбора значения в поле со списком - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь заполнить свое текстовое поле после выбора значения в поле со списком.

Мой код работает нормально, у меня не возникает ошибок при его запуске, но когда я выбираю значение из моего comboBox, оно не заполняет мое текстовое поле. Смотрите мой код ниже.

    private OleDbConnection connection = new OleDbConnection();

    public Form1()
    {
        InitializeComponent();
        connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\ASUS\Documents\appointment2.accdb";
    }

    private void Lastname_SelectedIndexChanged(object sender, EventArgs e)
    {

        try
        {
            connection.Open();
            OleDbCommand command = new OleDbCommand();
            command.Connection = connection;


            OleDbDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                string query = "select * from appointments where patientNo = '" + Lastname.Text + "' ";
                command.CommandText = query;

                Firstname.Text = reader["firstName"].ToString();
                patientNum.Text = reader["patientNo"].ToString();
                contactNum.Text = reader["contactNo"].ToString();

            }
            connection.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error" + ex);
        }
    }

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Только что выяснил проблему.Было неверное значение, чтобы сравнить мой Lastname.Text с и исправить расположение кода.Спасибо всем за помощь.

            connection.Open();
            OleDbCommand command = new OleDbCommand();
            command.Connection = connection;
            command.CommandText = "select * from appointments where lastName = '" + Lastname.Text + "' ";
            OleDbDataReader reader = command.ExecuteReader();

            while (reader.Read())
            {
                Firstname.Text = reader["firstName"].ToString();
                patientNum.Text = reader["patientNo"].ToString();
                contactNum.Text = reader["contactNo"].ToString();

            }     

            connection.Close();
0 голосов
/ 03 апреля 2019

Две неотложные проблемы, которые я вижу:

  • Вы заполняете свойство CommandText объекта OleDbCommand после , выдавая метод ExecuteReader, что означает, что оператор SQL не оценивается.

    Оператор SQL должен быть заполнен до того, как будет запущен метод ExecuteReader, т. Е .:

    connection.Open();
    OleDbCommand command = new OleDbCommand();
    command.Connection = connection;
    command.CommandText = "select * from appointments where patientNo = '" + Lastname.Text + "' ";
    OleDbDataReader reader = command.ExecuteReader();
    while (reader.Read())
    {
        Firstname.Text = reader["firstName"].ToString();
        patientNum.Text = reader["patientNo"].ToString();
        contactNum.Text = reader["contactNo"].ToString();
    }
    connection.Close();
    
  • В предложении where вашего оператора SQL предполагается, что patientNo содержит строковые данные, которые могут быть неверными, если задано имя этого поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...