none
SQL veri tababından Textboxa Barkod okutarak Bilgileri Satış Ekranına çıkartıp Datagridviewde göstermek istiyorum. ama İnteger Hatası Alıyorum Yardımcı olursanız Sevinirim. RRS feed

  • Soru

  • DataTable dTable = new DataTable();
                using (MySqlConnection conn = new MySqlConnection("Server=localhost;Database=satis;Uid=root;Pwd=147147147aaa;"))
                {
                    using (MySqlDataAdapter dAdapter = new MySqlDataAdapter("SELECT * FROM urun WHERE barkod=@barkod", conn))
                    {
                        dAdapter.SelectCommand.Parameters.AddWithValue("@barkod", textBox1.Text);
                        dAdapter.Fill(dTable);
                    }
                }
                if (dTable.Rows.Count > 0)
                    {
        int satirNo = -1;
        int miktar = 1;
        decimal birimFiyat = Convert.ToDecimal(dTable.Rows[0]["fiyat"]);
        foreach (DataGridViewRow dRow in dataGridView1.Rows)
        {
            if (dRow.Cells[0].Value.ToString() == textBox1.Text)
            {
                miktar = Convert.ToInt32(dRow.Cells[5].Value) + 1;
                satirNo = dRow.Cells[0].RowIndex;
                break;
            }
        }
        if (satirNo < 0)
            dataGridView1.Rows.Add(dTable.Rows[0]["barkod"], dTable.Rows[0]["urunadi"], dTable.Rows[0]["fiyat"], miktar, miktar * birimFiyat);
        else
        {
            dataGridView1.Rows[satirNo].Cells[5].Value = miktar;
            dataGridView1.Rows[satirNo].Cells[6].Value = miktar * birimFiyat;
        }
    }


    • Düzenleyen Helloff 7 Mart 2018 Çarşamba 01:07
    7 Mart 2018 Çarşamba 00:09

Yanıtlar

  • Fiyat girilmeyen ürünlerde hata veriyor olmalı. Sorunu gidermek için,

    decimal birimFiyat = Convert.ToDecimal(dTable.Rows[0]["fiyat"]);
    yerine,
    decimal birimFiyat = 0; 
    if (dTable.Rows[0]["fiyat"] != null)
        birimFiyat = Convert.ToDecimal(dTable.Rows[0]["fiyat"]);
    kullanın...

    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...


    • Düzenleyen MuratAKSARAY 7 Mart 2018 Çarşamba 06:01
    • Yanıt Olarak İşaretleyen Helloff 7 Mart 2018 Çarşamba 11:29
    7 Mart 2018 Çarşamba 06:01
  • 1) Visual C# ile başlayıp Visual Basic.Net ile devam ettiğinizi görüyorum.

    Bu karışıklığın size göre bir izahı vardır umarım.

    2) Barkod-ÜrünAdı-fiyat eklediyseniz bu 0-2 arası index değerlerine izin verir.

    Siz Cells(3) ile dizin dışına çıkmış oluyorsunuz. Bu hataya sebep olacaktır.

    3) Eğer DataGridView1 boş ise, yani sadece yeni satırı var ise kodunuz "nesne başvurusu bir nesnenin örneğine ayarlanmadı" hata mesajını verir. Bunu kontrol edebilmek için,

    For Each dRow As DataGridViewRow In DataGridView1.Rows
        If Not dRow.IsNewRow Then
            If dRow.Cells(0).Value.ToString() = TextBox1.Text Then
                ' Diğer kodlar buraya...
            End If
        End If
    Next

    kullanmalısınız...


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...





    • Yanıt Olarak İşaretleyen Helloff 7 Mart 2018 Çarşamba 13:33
    • Düzenleyen MuratAKSARAY 7 Mart 2018 Çarşamba 13:33
    7 Mart 2018 Çarşamba 13:29
  • C# kodunuzda son satırda bu istediğiniz var. Oradaki kodu Vb.Net 'e dönüştürdüyseniz, son satıra

    TextBox1.Text = miktar * birimFiyat
    ekleyerek amacınıza ulaşabilirsiniz...



    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak İşaretleyen Helloff 7 Mart 2018 Çarşamba 14:48
    7 Mart 2018 Çarşamba 14:46

Tüm Yanıtlar

  • Fiyat girilmeyen ürünlerde hata veriyor olmalı. Sorunu gidermek için,

    decimal birimFiyat = Convert.ToDecimal(dTable.Rows[0]["fiyat"]);
    yerine,
    decimal birimFiyat = 0; 
    if (dTable.Rows[0]["fiyat"] != null)
        birimFiyat = Convert.ToDecimal(dTable.Rows[0]["fiyat"]);
    kullanın...

    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...


    • Düzenleyen MuratAKSARAY 7 Mart 2018 Çarşamba 06:01
    • Yanıt Olarak İşaretleyen Helloff 7 Mart 2018 Çarşamba 11:29
    7 Mart 2018 Çarşamba 06:01
  • Çok Teşekkür Ederim. Şu anda İşlemde hata yok ama Tara Dediğimde Datagridviewde listelemiyor veritabanındaki ürünü. Bu konudada yardımcı olursanız çok sevinirim hocam.

    Sütunu olmayan bir DataGridView denetimine satır eklenemez. Önce sütunlar eklenmelidir. Hata Bu

    Sütün Ekleyincede 

    For Each dRow As DataGridViewRow In DataGridView1.Rows
                    If (dRow.Cells(0).Value.ToString = TextBox1.Text) Then
                        miktar = (Convert.ToInt32(dRow.Cells(5).Value) + 1)
                        satirNo = dRow.Cells(0).RowIndex
                        Exit For
                    End If

    Nesne başvurusu bir nesnenin örneğine ayarlanmadı. Diye Hata veriyor. Şimdiden Teşekkür ederim

    • Düzenleyen Helloff 7 Mart 2018 Çarşamba 12:31
    7 Mart 2018 Çarşamba 12:26
  • DataGridView1 için gereken kolonları oluşturmadan satır eklemeye çalıştığınızda bu hatayı alırsınız.

    Formunuzun dizaynını yaparken DataGridView1'i seçip Columns özelliği içerisinde, kullanmak istediğiniz kolonları tanımlamalısınız. Bu kolon tanımlarınızı da başka bir yerde silmemelisiniz.

    Kontrol edip tekrar deneyin...


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    7 Mart 2018 Çarşamba 12:56
  • For Each dRow As DataGridViewRow In DataGridView1.Rows
                    If (dRow.Cells(0).Value.ToString = TextBox1.Text) Then
                        miktar = (Convert.ToInt32(dRow.Cells(3).Value) + 1)
                        satirNo = dRow.Cells(0).RowIndex
                        Exit For
                    End If

    Colums Ekledim. Barkod-Ürün Adı-fiyat Olarak Bu seferde Textboxa barkod numarasını girdiğimde 

    Nesne başvurusu bir nesnenin örneğine ayarlanmadı. Hatası veriyor. Bu çok acil proje Özürdilerim sizide yoruyorum kusura bakmayın. 

    7 Mart 2018 Çarşamba 13:10
  • 1) Visual C# ile başlayıp Visual Basic.Net ile devam ettiğinizi görüyorum.

    Bu karışıklığın size göre bir izahı vardır umarım.

    2) Barkod-ÜrünAdı-fiyat eklediyseniz bu 0-2 arası index değerlerine izin verir.

    Siz Cells(3) ile dizin dışına çıkmış oluyorsunuz. Bu hataya sebep olacaktır.

    3) Eğer DataGridView1 boş ise, yani sadece yeni satırı var ise kodunuz "nesne başvurusu bir nesnenin örneğine ayarlanmadı" hata mesajını verir. Bunu kontrol edebilmek için,

    For Each dRow As DataGridViewRow In DataGridView1.Rows
        If Not dRow.IsNewRow Then
            If dRow.Cells(0).Value.ToString() = TextBox1.Text Then
                ' Diğer kodlar buraya...
            End If
        End If
    Next

    kullanmalısınız...


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...





    • Yanıt Olarak İşaretleyen Helloff 7 Mart 2018 Çarşamba 13:33
    • Düzenleyen MuratAKSARAY 7 Mart 2018 Çarşamba 13:33
    7 Mart 2018 Çarşamba 13:29
  • c# ile projeye başladım sonrasında visualbasic.net ile yenide proje yazıp öyle denemek istedim şu anda visualbasic.net ile devam ediyorum.Bu aradaYardımlarınız için çok teşekkür ederim.
    7 Mart 2018 Çarşamba 13:34
  • Hocam Son Bir Ricam daha olacak Adet*Fiyat olan kısmı TextBoxlarda Nasıl Gösteririm? Yani Toplam Fiyatları  Textboxa nasıl Aktarırım. Teşekkürler
    7 Mart 2018 Çarşamba 13:59
  • C# kodunuzda son satırda bu istediğiniz var. Oradaki kodu Vb.Net 'e dönüştürdüyseniz, son satıra

    TextBox1.Text = miktar * birimFiyat
    ekleyerek amacınıza ulaşabilirsiniz...



    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak İşaretleyen Helloff 7 Mart 2018 Çarşamba 14:48
    7 Mart 2018 Çarşamba 14:46
  • Çok Teşekkür Ederim
    7 Mart 2018 Çarşamba 14:48
  • Kolay Gelsin Bu sorunu Çözdüm ben.Lakin Asıl Sorun Şu Satış Ekranda datagride Gelen verileri Satış yap dediğimde veritabanına nasıl kayıt edebilirim.Datagridviewden Seçili olan Sütunları Veritabanına Aktaracak SQL Veri Tabanı. Yardım Ederseniz Sevinirim Teşekkür Ederim Şimdiden
    • Düzenleyen Helloff 8 Mart 2018 Perşembe 06:05
    8 Mart 2018 Perşembe 04:37
  • Private Sub Button76_Click(sender As System.Object, e As System.EventArgs) Handles Button76.Click
        Dim con As SqlConnection = New SqlConnection("Data Source=DESKTOP-MA56756\SQLEXPRESS;Initial Catalog=sistemos;Integrated Security=True;")
        Dim com As SqlCommand = New SqlCommand("INSERT INTO satis (Barkod, Urunadi, Fiyat, Miktar, Toplam) VALUES (@Barkod, @Urunadi, @Fiyat, @Miktar, @Toplam)", con)
        con.Open()
        For Each dgRow As DataGridViewRow In DataGridView2.Rows
            If Not dgRow.IsNewRow Then
                com.Parameters.AddWithValue("@Barkod", dgRow.Cells(0).Value.ToString)
                com.Parameters.AddWithValue("@Urunadi", Convert.ToDecimal(dgRow.Cells(1).Value))
                com.Parameters.AddWithValue("@Fiyat", Convert.ToDecimal(dgRow.Cells(2).Value))
                com.Parameters.AddWithValue("@Miktar", Convert.ToDecimal(dgRow.Cells(3).Value))
                com.Parameters.AddWithValue("@Toplam", Convert.ToDecimal(dgRow.Cells(4).Value))
                com.ExecuteNonQuery()
                com.Parameters.Clear()
            End If
        Next
    End Sub
    VB.Net için yeniledim...

    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...


    8 Mart 2018 Perşembe 06:11
  •  Private Sub Button76_Click(sender As System.Object, e As System.EventArgs) Handles Button76.Click
            Dim con As SqlConnection = New SqlConnection("Data Source=DESKTOP-MA56756\SQLEXPRESS;Initial Catalog=sistemos;Integrated Security=True;")
            Dim com As SqlCommand = New SqlCommand("INSERT INTO satis(Barkod, Urunadi,Fiyat,Miktar,Toplam) VALUES (@Barkod, @Urunadi, @Fiyat,@Miktar,@Toplam)", con)
            For Each dgRow As DataGridViewRow In DataGridView2.Rows
                If Not dgRow.IsNewRow Then
                    con.Open()
                    com.Parameters.AddWithValue("@Barkod", dgRow.Cells(0).Value.ToString)
                    com.Parameters.AddWithValue("@Urunadi", Convert.ToString(dgRow.Cells(1).Value))
                    com.Parameters.AddWithValue("@Fiyat", Convert.ToDecimal(dgRow.Cells(2).Value))
                    com.Parameters.AddWithValue("@Miktar", Convert.ToDecimal(dgRow.Cells(3).Value))
                    com.Parameters.AddWithValue("@Toplam", Convert.ToDecimal(dgRow.Cells(4).Value))
                    com.ExecuteNonQuery()
                    com.Parameters.Clear()
                End If

            Next
        End Sub
    8 Mart 2018 Perşembe 08:25
  • Hocam Şu anda Hiç bir Sorun yok Gibi Duruyor ama Butona Tıkladığımda Hiç bir işlem yapmıyor.Veri Tabanına Kayıt Da etmiyor Hatada vermiyor. İlgilenirseniz Çok memnun olurum. Sağolun
    8 Mart 2018 Perşembe 08:26
  • Tamam Çözdüm Hocam Çok Sağolun 
    8 Mart 2018 Perşembe 08:31
  •  com.Parameters.AddWithValue("@Barkod", dgRow.Cells(0).Value.ToString)
                    com.Parameters.AddWithValue("@UrunAdi", Convert.ToString(dgRow.Cells(1).Value))
                    com.Parameters.AddWithValue("@Fiyat", Convert.ToDecimal(dgRow.Cells(2).Value))
                    com.Parameters.AddWithValue("@Miktar", Convert.ToDecimal(dgRow.Cells(3).Value))
                    com.Parameters.AddWithValue("@Toplam", Convert.ToDecimal(dgRow.Cells(4).Value))
                    com.Parameters.AddWithValue("@Personel", ComboBox1.SelectedValue.ToOADate)
                    com.Parameters.AddWithValue("@Tarih", DateTimePicker1.Value.ToOADate)
                    com.ExecuteNonQuery()
                    com.Parameters.Clear()
                    con.Close()
    8 Mart 2018 Perşembe 08:50
  • Nesne değişkeni veya With bloğu değişkeni ayarlanmamış. Hatası Veriyor Hocam sadece Comboboxta.
    8 Mart 2018 Perşembe 08:50
  • Personel bilgisini tarih olarak saklamıyorsanız,

    ComboBox1.Text kullanın...


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    8 Mart 2018 Perşembe 08:54
  • Hocam Combox1 de Sqlden İşlem Yapan Personellerin isimleri var. Yani Açıldığında işlem yapacak Personelin İsimleri Kullanılıyor.Oraya nasıl birşey yazmalıyım Finale geldim sayenizde vallahi son hamleler.
    8 Mart 2018 Perşembe 09:01
  • com.Parameters.AddWithValue("@Personel", ComboBox1.SelectedValue.ToOADate)
    com.Parameters.AddWithValue("@Tarih", DateTimePicker1.Value.ToOADate)

    Bu satırlar yanlış. Bunların yerine,

    com.Parameters.AddWithValue("@Personel", ComboBox1.Text)
    com.Parameters.AddWithValue("@Tarih", DateTimePicker1.Value)

    yazın...


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    8 Mart 2018 Perşembe 11:11
  • Personeli SQL den çekiyorum Hocam Dediğiniz Şekilde Yaptım ama Personel İsmi Gözüklmüyor Kayıt Ettiğinde.Veri Tabanına Boş Geliyor Diğerleri Tamam
    8 Mart 2018 Perşembe 15:56
  • Hocam Birde Bu Datagridwieve Gelen Tutar Varya toplam. Ona Komisyon nasıl EkleyeBiliriz? Mesela Personelin Yaptığı Satışa %3-%4 Komisyon eklendiğinde Direkt Hesaplayacak Beceremedim Birtürlü.
    8 Mart 2018 Perşembe 20:28