Ошибка призыва к Fill

Верит в метод выданный для ComboBox, но когда я выбираю какую-то статью коллекции ComboBox, выходит эта ошибка:

System.InvalidOperationException: 'No se ha inicializado la propiedad SelectCommand antes de llamar a 'Fill'.'

Это метод выданный:

private void filtroGenero() {
        if (cmbGenero.SelectedIndex == 0) {
            llenarId();
        }else{
            try {
                DataTable dt = new DataTable();
                string conn = "cadena de conexion";
                using (SqlConnection conexion = new SqlConnection(conn)) {
                    conexion.Open();
                    string sSQL = "SELECT id, nombre, celular,url FROM clientesDos WHERE genero = @param";
                    SqlCommand cmd = new SqlCommand(sSQL, conexion);
                    cmd.Parameters.AddWithValue("@param", Convert.ToInt32(cmbGenero.SelectedIndex));
                    SqlDataAdapter da = new SqlDataAdapter();
                    da.Fill(dt);
                }
                dtgId.DataSource = dt;
            } catch (SqlException ex) {
                MessageBox.Show("Error: " + ex.Message,"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }

Какое-то возможное решение?

1
задан 04.11.2019, 16:17
2 ответа

Как он показывает тебе ошибку, ты должен присоединять один command со свойством SelectCommand из DataAdapter.

ты это Можешь видеть в documentaciГіn чиновник Microsoft .

ты Можешь приносить это, как польза сказала тебе @Pikoh, или следующий способ:

DataTable dt = new DataTable();
string conn = "cadena de conexion";
using (SqlConnection conexion = new SqlConnection(conn)) 
{
    conexion.Open();
    string sSQL = "SELECT id, nombre, celular,url FROM clientesDos WHERE genero = @param";
    SqlCommand cmd = new SqlCommand(sSQL, conexion);
    cmd.Parameters.AddWithValue("@param", Convert.ToInt32(cmbGenero.SelectedIndex));
    SqlDataAdapter da = new SqlDataAdapter();
    da.SelectCommand = cmd;
    da.Fill(dt);
}
dtgId.DataSource = dt;
2
ответ дан 01.12.2019, 12:50

Ты создаешь один Sqlcommand, но ты не распределяешь это DataAdapter, с которым этот Гєltimo не знает, что делать.

ты Можешь использовать перегрузку строителя DataAdapter, который получает один Sqlcommand:

SqlDataAdapter da = new SqlDataAdapter(cmd);
2
ответ дан 01.12.2019, 12:50
  • 1
    Спасибо, не я habí в обращенный внимание на эту деталь. Большое спасибо – Franqo Balsamo 04.11.2019, 16:29

Теги

Похожие вопросы