none
C# public void (string a) string boş geliyor neden??? RRS feed

  • Soru

  • Arkadaşlar şöyle bir metodum var

     public  void cariCAGIRHEPSİ(GridControl gr,int durum,string sorgu,string arama)
            {
                SqlConnection con = new SqlConnection(gnl.baglanti);
                
    
                try
                {
                    if (con.State == ConnectionState.Closed)
                    {
                        con.Open();
                    }
                    if (durum == 1)
                    {
                        SqlDataAdapter da = new SqlDataAdapter("select	cari.id,unvan,vasıf,borc,alacak,bakiye from cari inner join cariKartGrup on cari.grupId=cariKartGrup.id where durum=1 ", con);
                        DataTable dt = new DataTable();
                        da.Fill(dt);
                        gr.DataSource = dt;
                    }
                    else if (durum == 0)
                    {
                        SqlDataAdapter da = new SqlDataAdapter("select	cari.id,unvan,vasıf,borc,alacak,bakiye from cari inner join cariKartGrup on cari.grupId=cariKartGrup.id where durum=0 ", con);
                        DataTable dt = new DataTable();
                        da.Fill(dt);
                        gr.DataSource = dt;
                     }
                    else if (durum == 3)
                    {
                        SqlDataAdapter da = new SqlDataAdapter("select	cari.id,unvan,vasıf,borc,alacak,bakiye from cari inner join cariKartGrup on cari.grupId=cariKartGrup.id  ", con);
                        DataTable dt = new DataTable();
                        da.Fill(dt);
                        gr.DataSource = dt;
                    }
                    else if (durum == 4)
                    {
                        SqlDataAdapter da = new SqlDataAdapter("select	cari.id,unvan,vasıf,borc,alacak,bakiye from cari inner join cariKartGrup on cari.grupId=cariKartGrup.id where @sorgu like '%@arama%' ", con);
    
                        DataTable dt = new DataTable();
                        da.Fill(dt);
                        gr.DataSource = dt;
    
                    }
                    
                
    
    
                }
                catch (SqlException ex)
                {
                    string hata = ex.Message;
    
                }
                finally
                {
                    
                    con.Dispose();
                    con.Close();
    
                }
    
            
            }

    BU METODA AŞŞADAKİ GİBİ VERİ GÖNDERİYORUM AMA 2 STRİNG NULL GİDİYOR NEDEN?

    if (cbsorgu.SelectedIndex==2)
                {
                    string a ="unvan";
                    string b ="sefa";
                    
                  cari.cariCAGIRHEPSİ(gridControl1, 4,a,b);  
                }
    BÖYLE GÖNDERİYORUM GRİDCONTROL DOLUYOR 4 GİDİYOR AMA BU 2 ADET STRİNG GİTMİYOR NULL GİDİYOR NEDEN ?

    17 Aralık 2018 Pazartesi 13:40

Tüm Yanıtlar

  • Parametre oluşturmuşsunuz ama değerini vermemişsiniz.

    www.cihanyakar.com

    17 Aralık 2018 Pazartesi 14:20
  • visual studionun breakpoint özelliğini kullanın.Ve satır satır takip edin.
    17 Aralık 2018 Pazartesi 14:21
  • @MuratAKSARAY  new SqlDataAdapter($"S...  ile başlayan satırda where kısmı hatalı olmuş.

    Ben hâlâ arkadaşın Entity Framework gibi bir ORM kullanması taraftarıyım...


    www.cihanyakar.com

    17 Aralık 2018 Pazartesi 14:48
  • Where kısmını fark edip düzeltmiştim. Yine de dikkatiniz için teşekkürler.

    ORM kullanımı konusunda hem fikirim. Ama SEFA UNQ'nun tercihini hemen değiştireceğini sanmıyorum.


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

    17 Aralık 2018 Pazartesi 14:55
  • Metod parametrelerinin null olabilme durumunu dikkate alarak,

    public DataTable cariCAGIRHEPSİ(string kolon, dynamic arama)
    {
        DataTable dt = new DataTable();
        string where = "";
        if (!string.IsNullOrWhiteSpace(kolon))
        {
            where = string.Format("WHERE [{0}]", kolon);
            if (arama.GetType() == typeof(string))
            {
                where += " LIKE @param";
                arama = string.Format("%{0}%", arama);
            }
            else
                where += "=@param";
        }
        using (SqlConnection con = new SqlConnection(gnl.baglanti))
        {
            using (SqlDataAdapter da = new SqlDataAdapter(string.Format("SELECT cari.id, unvan, vasıf, borc, alacak, bakiye FROM cari INNER JOIN cariKartGrup ON cari.grupId=cariKartGrup.id {0}", where), con))
            {
                da.SelectCommand.Parameters.AddWithValue("@param", arama);
                da.Fill(dt);
            }
        }
        return dt;
    }
    
    private void button1_Click(object sender, EventArgs e)
    {
        gr.DataSource = cariCAGIRHEPSİ("durum", 1);
        //gr.DataSource = cariCAGIRHEPSİ("durum", 0);
        //gr.DataSource = cariCAGIRHEPSİ("unvan", "sefa");
        //gr.DataSource = cariCAGIRHEPSİ(null, null);
    }

    kullanabilirsiniz.


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

    • Düzenleyen MuratAKSARAY 18 Aralık 2018 Salı 09:18 Visual Studio 2012
    17 Aralık 2018 Pazartesi 14:56
  • Sayn hocalarım çok teşekkür ederim ilgileriniz için attıgınız kodları hiç anlamadım biraz bilgisiz ama denemeye calışacambu attınız kodu yapıstırdım  https://i.hizliresim.com/nQgajB.png bu hataları aldım 
    18 Aralık 2018 Salı 07:11
  • VisualStudio 2015 de interpolation çalıştıramazsın. C# 6 ile gelen bi özellik o.

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    18 Aralık 2018 Salı 08:20
    Moderatör
  • 2012 kullanıyorum hocam napıcam bilemiyorum beceremiyorum yapamak istedigim şu benim bir cari adında tablom var formda devexpres kullanıyorum bir gridcontrol var şimdi üste 2 tane combobox var bunların biri sorgu türü mesela id sine göre adına göre bakiyesine göre bu secilecek birde yanda durum var aktif pasif veya her ikisi bunları secicem bunlara göre filtre ederek listeleme yapacak bir türlü beceremedim :/
    18 Aralık 2018 Salı 08:27
  • 2015de çalışmayan 2012 de hiç çalışmaz.öncelikle VS 2017 kullan.

    Daha sonra yukardaki kodları sil. gridControl'ün detaylı filtre sistemi zaten var. Ama sen veriyi de yanlış doldurduğun için herşey sarpa sarıyor.

    bana anydesk id gönder beraber bakalım.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com


    18 Aralık 2018 Salı 08:32
    Moderatör
  • 05453660321 sayın hocam whatsaptan  biyazabilirmisiniz ordan iletişim kuralım

    18 Aralık 2018 Salı 08:47
  • şimdide

    where = $"WHERE [{kolon}]"; <<<< burası
            if (arama.GetType() == typeof(string))
            {
                where += " LIKE @param";
                arama = $"%{arama}%"; <<< burası 
            }

    bu 2 yer kırmızı yanıyor hocam

    hatalar

    Error 4 ; expected

    Error 5 Invalid expression term ''

    Error 1 Unexpected character '$'

    bunlar



    18 Aralık 2018 Salı 09:08
  • C# ın eski bir sürümünü kullanıyorsunuz. Visual Studio 2017 kullanın.. 2019 da kapıda.

    www.cihanyakar.com


    18 Aralık 2018 Salı 09:18
  • Yukarıdaki kodları, Visual Studio sürümünüze göre düzenledim. Kullanabilirsiniz.

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

    18 Aralık 2018 Salı 09:20
  • 20 gb diyor 2015 olmazmı hocam?
    18 Aralık 2018 Salı 09:29
  • 20 gb diyor 2015 olmazmı hocam?
    Bu işi hobi olarak yapacaksınız neden olmasın? @Murat bey cevabını düzenlemiş mevcut sürümünüz ile de ilerleyebilirsiniz.

    www.cihanyakar.com

    18 Aralık 2018 Salı 11:39
  • Merhaba,

    Durum 4 için olan sql script'te @sorgu ve @arama kullanımı yanlış olmuş. inline script olarak aşağıdaki gibi düzeltirseniz çalışacaktır.

    SqlDataAdapter da = new SqlDataAdapter("select	cari.id,unvan,vasıf,borc,alacak,bakiye from cari inner join cariKartGrup on cari.grupId=cariKartGrup.id where " + sorgu +" like '%"+arama+"%' ", con);
    22 Aralık 2018 Cumartesi 16:02
  • Merhaba,

    Durum 4 için olan sql script'te @sorgu ve @arama kullanımı yanlış olmuş. inline script olarak aşağıdaki gibi düzeltirseniz çalışacaktır.

    SqlDataAdapter da = new SqlDataAdapter("select	cari.id,unvan,vasıf,borc,alacak,bakiye from cari inner join cariKartGrup on cari.grupId=cariKartGrup.id where " + sorgu +" like '%"+arama+"%' ", con);
    Kullanıcıya açık parametreler + ile birleştirilmez. Bu sorgu tüm veritabanını kullanıcıya altın tepside sunan bir güvenlik açığıdır. Asla bu şekilde kod yazmayınız.

    www.cihanyakar.com

    22 Aralık 2018 Cumartesi 19:00