Dwa comboboxy - System.InvalidCastException

Odpowiedz Nowy wątek
2019-09-07 12:50
0

Hej,
W DGV mam dwa ComboBoxy, do których są pobierane dane z dwóch różnych tabel.
Podczas próby wprowadzania danych w nowym wersie po wyborze w jednym z comboboxow itemu wyrzuca mi błąd: System.InvalidCastException: "Nie można rzutować z elementu DBNull na inne typy"
Comboboxy wypełniam tak:

using (SqlConnection con = new SqlConnection(connectionString))
             {
                con.Open();
                SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM tblProdukty", con);
                DataTable dtbl = new DataTable();
                da.Fill(dtbl);
                cbxID_Produktu.ValueMember = "ID_Produktu";
                cbxID_Produktu.DisplayMember = "PN_Wewnetrzny_Produktu";
                DataRow topItem = dtbl.NewRow();
                topItem[0] = 0;
                topItem[1] = "-Wybierz-";
                dtbl.Rows.InsertAt(topItem, 0);
                cbxID_Produktu.DataSource = dtbl;
            }```

Natomiast wprowadzanie danych mam tutaj:

if (dgvBOM.CurrentRow != null)
            {
                using (SqlConnection sqlCon = new SqlConnection(connectionString))
                {
                    sqlCon.Open();
                    DataGridViewRow dgvRow = dgvBOM.CurrentRow;
                    SqlCommand sqlCmd = new SqlCommand("BOMDodEdyt", sqlCon);
                    sqlCmd.CommandType = CommandType.StoredProcedure;
                    if (dgvRow.Cells["txtID_BOM"].Value == DBNull.Value)//Insert
                        sqlCmd.Parameters.AddWithValue("@ID_BOM", 0);
                    else//update
                    sqlCmd.Parameters.AddWithValue("@ID_BOM", Convert.ToInt32(dgvRow.Cells["txtID_BOM"].Value));
                    sqlCmd.Parameters.AddWithValue("@ID_Produktu", Convert.ToInt32(dgvRow.Cells["cbxID_Produktu"].Value));
                    sqlCmd.Parameters.AddWithValue("@ID_Komponentu", Convert.ToInt32(dgvRow.Cells["cbxID_Komponentu"].Value));
                    sqlCmd.Parameters.AddWithValue("@Ilość", Convert.ToDecimal(dgvRow.Cells["txtIlość"].Value));
                    sqlCmd.ExecuteNonQuery();
                    PopulateDataGridView();
                }
            }```

Zapewne muszę dodać jakieś wyjątek lub zmienić wartość przyjmowaną przez combobox na początku. Za groma nie wiem jak to ugryźć. Obie kolumny są PK w tabelach macierzystych, więc nie 0 są niedozwolone.
Za pomoc stawiam piwo :)

edytowany 2x, ostatnio: cerrato, 2019-09-08 02:36

Pozostało 580 znaków

2019-09-08 01:39
0

Czytaj ze zrozumieniem, dla jednego z tych combo zapytanie zwraca nulla


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2019-09-10 14:42
0
_13th_Dragon napisał(a):

Czytaj ze zrozumieniem, dla jednego z tych combo zapytanie zwraca nulla

Problem w tym, że wyrzuca mi ten błąd po uzupełnieniu pierwszego ComboBox'a... ;/

Pozostało 580 znaków

2019-09-10 19:39
0

Problem w tym, że wyrzuca mi ten błąd po uzupełnieniu pierwszego ComboBox'a... ;/
Czyli ten drugi wciąż jeszcze ma wartość null


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0