Проверьте, совместимы ли значения в DataGridview с таблицей / схемой базы данных ПЕРЕД вставкой - PullRequest
0 голосов
/ 06 марта 2020

У меня есть DatagridView, который получает значения из файлов Excel. После того, как значения показаны в сетке данных, пользователь может добавить / изменить их, и когда пользователь нажимает сохранить, мой код вставляет таблицу в мою базу данных. Я окружил свой код попыткой catch, поэтому он останавливается при возникновении ошибки из-за значений, но когда пользователь исправляет данные и снова нажимает сохранить, первые вставленные строки снова вставляются в базу данных. У меня вопрос, как я могу написать код, чтобы он не дублировал уже вставленные строки? Заранее спасибо. Мой код, который вставляется внизу.

      try
        {

            for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
            {
                OleDbCommand cmd = new OleDbCommand(commandText, cnn);

                Guid g = Guid.NewGuid();

                //veritabanına verileri atıyoruz
                cmd.Parameters.AddWithValue("@guidkodu", g);
                cmd.Parameters.AddWithValue("@faturatarihi", belgetarihigetir((dataGridView1.Rows[i].Cells[0].Value.ToString()))); //datetime a cast ediliyor
                cmd.Parameters.AddWithValue("@faturano", (dataGridView1.Rows[i].Cells[1].Value).ToString());
                cmd.Parameters.AddWithValue("@vkntckn", (dataGridView1.Rows[i].Cells[2].Value).ToString());
                cmd.Parameters.AddWithValue("@tur", (dataGridView1.Rows[i].Cells[3].Value).ToString());

                //kdv değerleri yoksa veritabanına null,varsa değerini atıyoruz

                if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[4].Value).ToString()))
                {
                    cmd.Parameters.AddWithValue("@kdv0matrahi", System.DBNull.Value);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@kdv0matrahi", ToNullableFloat((dataGridView1.Rows[i].Cells[4].Value).ToString()));
                }


                if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[5].Value).ToString()))
                {
                    cmd.Parameters.AddWithValue("@kdv1matrahi", System.DBNull.Value);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@kdv1matrahi", ToNullableFloat((dataGridView1.Rows[i].Cells[5].Value).ToString()));
                }

                if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[6].Value).ToString()))
                {
                    cmd.Parameters.AddWithValue("@kdv1tutar", System.DBNull.Value);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@kdv1tutar", ToNullableFloat((dataGridView1.Rows[i].Cells[6].Value).ToString()));
                }

                if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[7].Value).ToString()))
                {
                    cmd.Parameters.AddWithValue("@kdv8matrah", System.DBNull.Value);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@kdv8matrah", ToNullableFloat((dataGridView1.Rows[i].Cells[7].Value).ToString()));
                }

                if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[8].Value).ToString()))
                {
                    cmd.Parameters.AddWithValue("@kdv8tutar", System.DBNull.Value);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@kdv8tutar", ToNullableFloat((dataGridView1.Rows[i].Cells[8].Value).ToString()));
                }

                if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[9].Value).ToString()))
                {
                    cmd.Parameters.AddWithValue("@kdv18matrah", System.DBNull.Value);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@kdv18matrah", ToNullableFloat((dataGridView1.Rows[i].Cells[9].Value).ToString()));
                }

                if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[10].Value).ToString()))
                {
                    cmd.Parameters.AddWithValue("@kdv18tutar", System.DBNull.Value);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@kdv18tutar", ToNullableFloat((dataGridView1.Rows[i].Cells[10].Value).ToString()));
                }

                if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[11].Value).ToString()))
                {
                    cmd.Parameters.AddWithValue("@oiv", System.DBNull.Value);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@oiv", ToNullableFloat((dataGridView1.Rows[i].Cells[11].Value).ToString()));
                }

                if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[12].Value).ToString()))
                {
                    cmd.Parameters.AddWithValue("@faturatutari", System.DBNull.Value);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@faturatutari", ToNullableFloat((dataGridView1.Rows[i].Cells[12].Value).ToString()));
                }
                //cmd.Parameters.AddWithValue("@islemtarihi", zaman);



                cmd.ExecuteNonQuery();


            }

            MessageBox.Show("Veriler Kaydedildi");
            this.Hide();
            //GirisFormu a = new GirisFormu();
           // a.ShowDialog();

        }
        catch (Exception)
        {

            MessageBox.Show("bir hata oluştu, tekrar deneyiniz");
        }

1 Ответ

0 голосов
/ 06 марта 2020

Объявите переменную подсчета stati c в вашем классе и инициализируйте ее 0

static int count=0;

Комментарии и изменения выделены ***

try
        {

            for (int i = count; i < dataGridView1.Rows.Count - 1; i++)//***start the for loop by count***
            {
                OleDbCommand cmd = new OleDbCommand(commandText, cnn);

                Guid g = Guid.NewGuid();

                //veritabanına verileri atıyoruz
                cmd.Parameters.AddWithValue("@guidkodu", g);
                cmd.Parameters.AddWithValue("@faturatarihi", belgetarihigetir((dataGridView1.Rows[i].Cells[0].Value.ToString()))); //datetime a cast ediliyor
                cmd.Parameters.AddWithValue("@faturano", (dataGridView1.Rows[i].Cells[1].Value).ToString());
                cmd.Parameters.AddWithValue("@vkntckn", (dataGridView1.Rows[i].Cells[2].Value).ToString());
                cmd.Parameters.AddWithValue("@tur", (dataGridView1.Rows[i].Cells[3].Value).ToString());

                //kdv değerleri yoksa veritabanına null,varsa değerini atıyoruz

                if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[4].Value).ToString()))
                {
                    cmd.Parameters.AddWithValue("@kdv0matrahi", System.DBNull.Value);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@kdv0matrahi", ToNullableFloat((dataGridView1.Rows[i].Cells[4].Value).ToString()));
                }


                if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[5].Value).ToString()))
                {
                    cmd.Parameters.AddWithValue("@kdv1matrahi", System.DBNull.Value);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@kdv1matrahi", ToNullableFloat((dataGridView1.Rows[i].Cells[5].Value).ToString()));
                }

                if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[6].Value).ToString()))
                {
                    cmd.Parameters.AddWithValue("@kdv1tutar", System.DBNull.Value);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@kdv1tutar", ToNullableFloat((dataGridView1.Rows[i].Cells[6].Value).ToString()));
                }

                if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[7].Value).ToString()))
                {
                    cmd.Parameters.AddWithValue("@kdv8matrah", System.DBNull.Value);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@kdv8matrah", ToNullableFloat((dataGridView1.Rows[i].Cells[7].Value).ToString()));
                }

                if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[8].Value).ToString()))
                {
                    cmd.Parameters.AddWithValue("@kdv8tutar", System.DBNull.Value);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@kdv8tutar", ToNullableFloat((dataGridView1.Rows[i].Cells[8].Value).ToString()));
                }

                if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[9].Value).ToString()))
                {
                    cmd.Parameters.AddWithValue("@kdv18matrah", System.DBNull.Value);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@kdv18matrah", ToNullableFloat((dataGridView1.Rows[i].Cells[9].Value).ToString()));
                }

                if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[10].Value).ToString()))
                {
                    cmd.Parameters.AddWithValue("@kdv18tutar", System.DBNull.Value);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@kdv18tutar", ToNullableFloat((dataGridView1.Rows[i].Cells[10].Value).ToString()));
                }

                if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[11].Value).ToString()))
                {
                    cmd.Parameters.AddWithValue("@oiv", System.DBNull.Value);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@oiv", ToNullableFloat((dataGridView1.Rows[i].Cells[11].Value).ToString()));
                }

                if (string.IsNullOrEmpty((dataGridView1.Rows[i].Cells[12].Value).ToString()))
                {
                    cmd.Parameters.AddWithValue("@faturatutari", System.DBNull.Value);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@faturatutari", ToNullableFloat((dataGridView1.Rows[i].Cells[12].Value).ToString()));
                }
                //cmd.Parameters.AddWithValue("@islemtarihi", zaman);



                cmd.ExecuteNonQuery();
                count+=1;//***increment the count on every successful insert.***

            }

            MessageBox.Show("Veriler Kaydedildi");
            this.Hide();
            //GirisFormu a = new GirisFormu();
           // a.ShowDialog();

        }
        catch (Exception)
        {

            MessageBox.Show("bir hata oluştu, tekrar deneyiniz");
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...