przegladanie DataGirdView

0
SqlConnection con = new SqlConnection(strCon);


            con.Open();
            DataTable dt = new DataTable();
            int i = 0;
            for (; i < 100; i++)
            {

                if (dgvM[data.Text.ToString(), i].Value.ToString() == null)
                {
                    string command1 = "INSERT INTO montarze ([" + data.Text.ToString() +
                      "]) VALUES('" + Miasto_z.Text.ToString() + "')";

                    string command2 = "INSERT INTO montarze ([" + data.Text.ToString() +
                  "]) VALUES('" + Targi.Text.ToString() + "')";

                    string command3 = "INSERT INTO montarze ([" + data.Text.ToString() +
                  "]) VALUES('" + stoisko_z.Text.ToString() + "')";

                    SqlDataAdapter sda1 = new SqlDataAdapter(command1, con);
                    SqlCommandBuilder cb1 = new SqlCommandBuilder(sda1);
                    sda1.Fill(dt);
                    SqlDataAdapter sda2 = new SqlDataAdapter(command2, con);
                    SqlCommandBuilder cb2 = new SqlCommandBuilder(sda2);
                    sda2.Fill(dt);
                    SqlDataAdapter sda3 = new SqlDataAdapter(command3, con);
                    SqlCommandBuilder cb3 = new SqlCommandBuilder(sda3);
                    sda3.Fill(dt);
                    break;

                }
                else
                {

                    if (dgvM[data.Text.ToString(), i].Value.ToString() == "")
                    {
                        MessageBox.Show("ok");





                    }
                    else
                    {
                        if (dgvM[data.Text.ToString(), i].Value.ToString() == Miasto_z.Text)
                        {

                            if (dgvM[data.Text.ToString(), i].Value.ToString() == Targi.Text)
                            {
                                if (dgvM[data.Text.ToString(), i].Value.ToString() == stoisko_z.Text)
                                {
                                    MessageBox.Show("Stoisko Juz isteniej");
                                    break;
                                }
                                else
                                {
                                    string command3 = "INSERT INTO montarze ([" + data.Text.ToString() +
                                 "]) VALUES('" + stoisko_z.Text.ToString() + "')";

                                    SqlDataAdapter sda = new SqlDataAdapter(command3, con);
                                    SqlCommandBuilder cb = new SqlCommandBuilder(sda);
                                    sda.Fill(dt);
                                    break;
                                }
                            }
                            else
                            {
                                string command2 = "INSERT INTO montarze ([" + data.Text.ToString() +
                                                "]) VALUES('" + Targi.Text.ToString() + "')";

                                string command3 = "INSERT INTO montarze ([" + data.Text.ToString() +
                              "]) VALUES('" + stoisko_z.Text.ToString() + "')";

                                SqlDataAdapter sda2 = new SqlDataAdapter(command2, con);
                                SqlCommandBuilder cb = new SqlCommandBuilder(sda2);
                                sda2.Fill(dt);
                                SqlDataAdapter sda3 = new SqlDataAdapter(command3, con);
                                SqlCommandBuilder cb1 = new SqlCommandBuilder(sda3);
                                sda3.Fill(dt);
                                break;
                            }
                        }
                        else
                        {
                            string command1 = "INSERT INTO montarze ([" + data.Text.ToString() +
                       "]) VALUES('" + Miasto_z.Text.ToString() + "')";

                            string command2 = "INSERT INTO montarze ([" + data.Text.ToString() +
                          "]) VALUES('" + Targi.Text.ToString() + "')";

                            string command3 = "INSERT INTO montarze ([" + data.Text.ToString() +
                          "]) VALUES('" + stoisko_z.Text.ToString() + "')";

                            SqlDataAdapter sda1 = new SqlDataAdapter(command1, con);
                            SqlCommandBuilder cb1 = new SqlCommandBuilder(sda1);
                            sda1.Fill(dt);
                            SqlDataAdapter sda2 = new SqlDataAdapter(command2, con);
                            SqlCommandBuilder cb2 = new SqlCommandBuilder(sda2);
                            sda2.Fill(dt);
                            SqlDataAdapter sda3 = new SqlDataAdapter(command3, con);
                            SqlCommandBuilder cb3 = new SqlCommandBuilder(sda3);
                            sda3.Fill(dt);
                            break;
                        }
                    }


                }

            }
        }
    }

na samym poczatku w 1 warunku wyskakuje błąd:

Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu.

nie wiem juz co wymyslec

0

Odwolujesz sie do czegos co nie istnieje. Co to za obiekt "dgvM"? Sprawdz kod, w ktorym tworzysz ten obiekt albo pokaz go tutaj.

I zaznaczaj w kodzie, w ktorej lini wystepuje blad. Bedzie to o wiele wygodniejsze dla czytajacego niz takie slowne opisy.

0

dgvM do DataGirdView blad wyskakuje przy if (dgvM[data.Text.ToString(), i].Value.ToString() == null) przy np 20 przejsci petli. w przypadku gdy dgvM ma 20 wierszy, dane w dgvM pobierane sa z bazy SQL

0
edziu napisał(a)

dgvM do DataGirdView

Eh, fakt. Za slaba kawe chyba wypilem, ze nie skojarzylem ;-P

edziu napisał(a)

blad wyskakuje przy if (dgvM[data.Text.ToString(), i].Value.ToString() == null) przy np 20 przejsci petli. w przypadku gdy dgvM ma 20 wierszy, dane w dgvM pobierane sa z bazy SQL

A zobacz na swoja petle:

for (; i < 100; i++)

Jak mowisz, ze w przypadku gdy DataGridView ma tylko 20 wierszy to oczywiscie, ze rzuci wyjatkiem bo chcesz odwolac sie do indeksu wiersza, ktorego nie ma.

0

no wiem daltego zrobilem przyrównanie ==null idea tego modulu jest taka ze przeglada dana kolumne w poszukiwaniu pewnych wpisow przyczym jesli jakies wystapia to odpowiednio dodaj inne lub nie jesli koluna jest pusta ma dodac wszystkie wpisy. wiec jak przejsc cala kolumne??

0

poprawilem tak:

int i = 0;
            for (; i < 100; i++)
            {

                if (dgvM[data.Text.ToString(), i] == null)
                {
                    string command1 = "INSERT INTO montarze ([" + data.Text.ToString() +
                      "]) VALUES('" + Miasto_z.Text.ToString() + "')";

                    string command2 = "INSERT INTO montarze ([" + data.Text.ToString() +
                  "]) VALUES('" + Targi.Text.ToString() + "')";

                    string command3 = "INSERT INTO montarze ([" + data.Text.ToString() +
                  "]) VALUES('" + stoisko_z.Text.ToString() + "')";

                    SqlDataAdapter sda1 = new SqlDataAdapter(command1, con);
                    SqlCommandBuilder cb1 = new SqlCommandBuilder(sda1);
                    sda1.Fill(dt);
                    SqlDataAdapter sda2 = new SqlDataAdapter(command2, con);
                    SqlCommandBuilder cb2 = new SqlCommandBuilder(sda2);
                    sda2.Fill(dt);
                    SqlDataAdapter sda3 = new SqlDataAdapter(command3, con);
                    SqlCommandBuilder cb3 = new SqlCommandBuilder(sda3);
                    sda3.Fill(dt);
                    break;

                }
                else
                {

                 <quote>   if (dgvM[data.Text.ToString(), i].Value.ToString() == "")</quote>
                    {
                        MessageBox.Show("ok");





                    }
                    else
                    {
                        if (dgvM[data.Text.ToString(), i].Value.ToString() == Miasto_z.Text)
                        {

                            if (dgvM[data.Text.ToString(), i].Value.ToString() == Targi.Text)
                            {
                                if (dgvM[data.Text.ToString(), i].Value.ToString() == stoisko_z.Text)
                                {
                                    MessageBox.Show("Stoisko Juz isteniej");
                                    break;
                                }
                                else
                                {
                                    string command3 = "INSERT INTO montarze ([" + data.Text.ToString() +
                                 "]) VALUES('" + stoisko_z.Text.ToString() + "')";

                                    SqlDataAdapter sda = new SqlDataAdapter(command3, con);
                                    SqlCommandBuilder cb = new SqlCommandBuilder(sda);
                                    sda.Fill(dt);
                                    break;
                                }
                            }
                            else
                            {
                                string command2 = "INSERT INTO montarze ([" + data.Text.ToString() +
                                                "]) VALUES('" + Targi.Text.ToString() + "')";

                                string command3 = "INSERT INTO montarze ([" + data.Text.ToString() +
                              "]) VALUES('" + stoisko_z.Text.ToString() + "')";

                                SqlDataAdapter sda2 = new SqlDataAdapter(command2, con);
                                SqlCommandBuilder cb = new SqlCommandBuilder(sda2);
                                sda2.Fill(dt);
                                SqlDataAdapter sda3 = new SqlDataAdapter(command3, con);
                                SqlCommandBuilder cb1 = new SqlCommandBuilder(sda3);
                                sda3.Fill(dt);
                                break;
                            }
                        }
                        else
                        {
                            string command1 = "INSERT INTO montarze ([" + data.Text.ToString() +
                       "]) VALUES('" + Miasto_z.Text.ToString() + "')";

                            string command2 = "INSERT INTO montarze ([" + data.Text.ToString() +
                          "]) VALUES('" + Targi.Text.ToString() + "')";

                            string command3 = "INSERT INTO montarze ([" + data.Text.ToString() +
                          "]) VALUES('" + stoisko_z.Text.ToString() + "')";

                            SqlDataAdapter sda1 = new SqlDataAdapter(command1, con);
                            SqlCommandBuilder cb1 = new SqlCommandBuilder(sda1);
                            sda1.Fill(dt);
                            SqlDataAdapter sda2 = new SqlDataAdapter(command2, con);
                            SqlCommandBuilder cb2 = new SqlCommandBuilder(sda2);
                            sda2.Fill(dt);
                            SqlDataAdapter sda3 = new SqlDataAdapter(command3, con);
                            SqlCommandBuilder cb3 = new SqlCommandBuilder(sda3);
                            sda3.Fill(dt);
                            break;
                        }
                    }


                }

            }
        }
    }

i teras przy zaznaczonym miejscu wyskakuje poprzendi blad rowniez przy skonczeniu sie wierszy w dgvM pytanie dlaczego bo 1 warunek powinien sprawe wystopienia konca dgvM roziwazac?

0

Ale w tym warunku nie sprawdzasz czy komorka istnieje tylko sprawdzasz czy komorka zawiera nulla. Komorki nie ma, wiec nie mozna sprawdzic co ona zawiera, stad wyjatek.

[edit]

Uzycie takiego warunku powinno rozwiazac twoj problem:

if (dgvM[data.Text.ToString(), i].Value == null)
0

ok jest super dziala, teras co do tej funkcji mam pytanie bardziej teoretyczne, ide jej dzialania jest taka ze ma dodawac do wybranych kolumn odpowiednie wpisy, przyczym wpisy w jednej kolumie nie maja sie powtarzac, i teras ulozylem sobei taki algorytm zaczyna 1 warunek jesli dany wiersz jest ostatni dodaje wszyskie podane wpisy, jesli nie sprawdza czy dany wiersz jest pusty jesli tak to nic nie robie i zaczyna od nowa jesli nie jest pusty to sprawdza czy jest to "miasto" jesli nie jes to miasto wpisuje wszystkie wpisy jesli jest to miasto sprawdza czy sa to "targi" jesli nie to wpisuje dwa wpisy jesli sa to targi to sprawdza czy jest to "stoisko" jesli nie jest to stoisko wpisuje 1 wpis jesli jest to daje komunikat ze juz ono istnieje.

w praktyce mialoby to wygladac tak

kolumna1

Poznan
polagra
Guz

kolumna po 1 opreacji
za drugirm razem wpisujemy do formularza poznan, polagra GEA
wynik ma byc

kolumna1

poznan
polagra
GUZ
GEA

a mi porgram wpisuje coalosc

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