none
C# Barkod Okuma Yöntemi RRS feed

  • Soru

  • Merhabalar,

    C# ile market yazılımı geliştiriyorum. usb barkod okuyucu cihaz ile barkodu okuyabiliyorum. Barkoda ait stok tanımı yaptım. Satış ekranında, TextBox'ta barkodu okuma işlemi tamamladıktan sonra, barkoda ait bilgilerin ilgili alanlara getirmek istiyorum. ilgili kodu TextChanged eventına ekledim ancak   "3059943009080" barkodunun ilk karakterini alıp "3" stok bilgileri bulunamamıştır uyarısı veriyor. Yapması gereken barkodun tamamını okuduktan sonra aramasıdır. Bunun için ne yapmam gerekiyor. 

    try
                {
                    if (conn.State == ConnectionState.Closed)
                        conn.Open();
                    if (txtStokkodu.Text != "")
                    {
                        SqlCommand cmdkontrol = new SqlCommand("select STOKKODU,STOKISIM,ALISKDVORANI,OLCUBR  from STOK where SUBE='" + label16.Text + "' and STOKKODU='" + txtStokkodu.Text + "' ", conn);
                        SqlDataReader dr = cmdkontrol.ExecuteReader();
                        string stokKod = null;
                        while (dr.Read())
                        {
                            stokKod = dr["STOKKODU"].ToString();
                            if (txtStokkodu.Text == stokKod)
                            {
                                txtStokkodu.Text = stokKod;
                                cmbstokrehber.Text = dr["STOKISIM"].ToString();
                                txtKdvOrani.Text = dr["ALISKDVORANI"].ToString();
                                cmbbrm.Text = dr["OLCUBR"].ToString();

                                dr.Close();
                                cmdkontrol.Dispose();
                                goto cikis;
                            }
                        }
                        MessageBox.Show("Stok Kodu Bilgileri Bulunamamıştır!");
                        conn.Close();
                    }
                cikis:
                    conn.Close();
                }
                catch (Exception)
                {
                }

    14 Mart 2016 Pazartesi 14:33

Yanıtlar

  • Barkod okuyucu klavye gibi çalışır. Her harfi tek tak basıyor. Siz sadece key down event'ında "enter" tuşunu yakalayacaksınız. Aksi durumda her tuş için tek tek çalıştırmış olursunuz.
    14 Mart 2016 Pazartesi 14:53

Tüm Yanıtlar

  • TextChanged textbox içindeki her değişimde çalışır.  siz bilgiyi karakter karakter mi giriyorsunuz?
    Leave ve enter'a basınca da yenileme yapması için Keydown eventını kullanabilirsiniz.

    14 Mart 2016 Pazartesi 14:44
  • Merhaba;

    bu kod gereksiz kaynak tüketir desem :

    Zaten tek kayıt çağırıyorsunuz. Neden while.??

    Neden goto ??

    Sadece merak ettim.

    Cevaplamak zorunda değilsiniz.

    Kolay Gelsin.


    HNG ═══ᵌ Ữ

    14 Mart 2016 Pazartesi 14:50
  • Cihaz barkodu okuduktan sonra, TextBox'a bu string "3059943009080"  geliyor. Klavye kullanmadan Leave ve Enter yapmasını istiyorum. string tamamlandığı anda barkoda ait bilgiler gelsin istiyorum.
    14 Mart 2016 Pazartesi 14:51
  • Barkod okuyucu klavye gibi çalışır. Her harfi tek tak basıyor. Siz sadece key down event'ında "enter" tuşunu yakalayacaksınız. Aksi durumda her tuş için tek tek çalıştırmış olursunuz.
    14 Mart 2016 Pazartesi 14:53
  • daha iyi bir öneriniz varsa paylaşalım gelişelim.:) performansı artıralım
    14 Mart 2016 Pazartesi 14:54
  • Merhaba;

    Barkod okuyucular ilgili yerdeki barkod u okuduktan sonra imlecin bulunduğu yere yazar ve Enter tuşu gönderir zaten.

    Kolay Gelsin.


    HNG ═══ᵌ Ữ

    14 Mart 2016 Pazartesi 14:55
  • teşekkürler yanıtınız için sorunu çözdüm.
    14 Mart 2016 Pazartesi 15:05
  • gözünüz aydın yalnız rica etsem çözümü buraya da yazabilir misiniz ? en azından aynı sıkıntıyla karşılaşan arkadaşlara da faydalı olmuş olursunuz. bi de merakımdan soruyorum barkod okuyucu olarak hangi marka modeli kullanıyorsunuz ?
    28 Mart 2016 Pazartesi 18:04
  • TextBox 'ın KeyDown eventında aşağıdaki kodu kullandım. Cihaz yanımda değil, onun bilgisini de en kısa zamanda veririm.

      private void txtStokkodu_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Enter)
                {
                    //Çağırmak istediğiniz bilgilerin kodu
                }
            }

    28 Mart 2016 Pazartesi 23:14
  • Eve t Çok yararlı oldu teşekürler

    16 Mart 2017 Perşembe 09:04
  • merhaba arkadaşlar

    arkadaşımın sorununa yakın bir sorun ben de mevcut rica etsem yardımcı olur musunuz. sorun şu ki;

    barkodu okutuyorum veri var ise veriyi çekiyor yok ise herhangi bir hata vermiyor, gerekli işlemi yapıyorum fakat ikinci kez tekrar barkod okutunca veri gelmiyor. kodlarım aşağıda ki gibi.

    private void bar_text_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Enter)
                {
                    try
                    {
                        if (conn.State == ConnectionState.Closed)
                            conn.Open();
                        if (bar_text.Text != "")
                        {
                            com.Connection = conn;
                            com.CommandText = "SELECT pro_id,pro_name,barcode,erocode,tbl_stock_tur.stock_tur_name,tbl_birim.birim_name FROM tbl_urun INNER JOIN tbl_birim ON tbl_birim.birim_id = tbl_urun.birim_id INNER JOIN tbl_stock_tur ON tbl_stock_tur.stock_tur_id=tbl_urun.stock_tur_id WHERE barcode='" + bar_text.Text + "'";
                            com.ExecuteNonQuery();
                            SqlDataReader dr = com.ExecuteReader();
                            string barkod = null;
                            while (dr.Read())
                            {
                                barkod = dr["barcode"].ToString();
                                if (bar_text.Text == barkod)
                                {
                                    bar_text.Text = dr["barcode"].ToString();
                                    name_txt.Text = dr["pro_name"].ToString();
                                    pro_no.Text = dr["pro_id"].ToString();
                                    stok_kd.Text = dr["erocode"].ToString();
                                    group_text.Text = dr["stock_tur_name"].ToString();
                                    birim_text.Text = dr["birim_name"].ToString();
                                    adet_text.Focus();
                                    dr.Close();
                                    com.Dispose();
                                }
                                else
                                {
                                    MessageBox.Show("barcode" + "Nolu Barkod Bilgisi Bulunamamıştır !");
                                    conn.Close();
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    { }
                }
            }   

     private void bar_text_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (bar_text.TextLength == 7)
                {
                   e.Handled = true;
                }
            }

    teşekkürler iyi çalışmalar.

    10 Ekim 2017 Salı 20:47