Forum

C# Method içer...
 
Bildirimler
Hepsini Temizle

C# Method içersinde global değişkene veri aktarmak

7 Yazılar
3 Üyeler
0 Reactions
1,420 Görüntüleme
(@BarancanGenc)
Gönderiler: 4
Active Member
Konu başlatıcı
 

Herkese merhaba

Method tanımladım bu method bruttutar,nettutar gibi toplamları hesaplıyor ve global'de tanımladığım double değişkenler üzerine aktarıyor.

 

Method çalışırken debug ettiğimde problem yok method içersinde herşey güzel gidiyor. Değerler alınıyor fakat method dışarsına çıktığımda değişken 0 değerine dönüyor işin enterasan kısmı hepsinde olmuyor bu incelemeniz için resimleri attım

 
Gönderildi : 26/08/2015 00:19

(@BarancanGenc)
Gönderiler: 4
Active Member
Konu başlatıcı
 

Güncel !

Niye kimse yardımcı olmuyor ?

 
Gönderildi : 26/08/2015 16:33

(@kamilozel)
Gönderiler: 125
Estimable Member
 

Değer getiren değişkenleri kontrol edermisin boş olma ihtimali olabilir mi ?

 
Gönderildi : 26/08/2015 17:02

(@BarancanGenc)
Gönderiler: 4
Active Member
Konu başlatıcı
 

Kontrol ettim değerler geliyor. Fakat dediğim gibi methodun içinden çıkınca sıfırlanıyorlar.

Method uzun olduğu için buraya yazmamıştım. Fakat yinede birşey ifade eder belki diye buraya yazıyorum.

private void toplamHesapla()
        {
            double miktar = 0;
            double bruttutar = 0;
            double iskonto = 0;
            double kdv1 = 0;
            double kdv8 = 0;
            double kdv18 = 0;
            double toplamkdv = 0;
            double aratoplam = 0;
            double aratoplam2 = 0;
            double geneltoplam = 0;

            double isk1 = 0;
            double isk2 = 0;
            double isk3 = 0;
            double fiyat = 0;

            double isk1_toplam = 0;
            double isk2_toplam = 0;
            double isk3_toplam = 0;
            double isk_toplam = 0;
            double bruttutar_toplam = 0;
            double aratoplam_toplam = 0;
            double aratoplam2_toplam = 0;
            double kdv1_toplam = 0;
            double kdv8_toplam = 0;
            double kdv18_toplam = 0;
            double geneltoplam_toplam = 0;
            double toplamkdv_toplam = 0;

            for (int i = 0; i <= dataGridViewFaturaSatis.Rows.Count - 1; i++)
            {
                miktar += Convert.ToDouble(dataGridViewFaturaSatis.Rows[i].Cells[3].Value);
                string[] bruttutar_parcala = dataGridViewFaturaSatis.Rows[i].Cells[9].Value.ToString().Split(' ');
                bruttutar = Convert.ToDouble(bruttutar_parcala[0]);

                string[] isk1_parcala = dataGridViewFaturaSatis.Rows[i].Cells[5].Value.ToString().Split('%');
                string[] isk2_parcala = dataGridViewFaturaSatis.Rows[i].Cells[6].Value.ToString().Split('%');
                string[] isk3_parcala = dataGridViewFaturaSatis.Rows[i].Cells[7].Value.ToString().Split('%');
                isk1 = Convert.ToDouble(isk1_parcala[1]);
                isk2 = Convert.ToDouble(isk2_parcala[1]);
                isk3 = Convert.ToDouble(isk3_parcala[1]);

                string[] fiyat_parcala = dataGridViewFaturaSatis.Rows[i].Cells[4].Value.ToString().Split(' ');
                fiyat = Convert.ToDouble(fiyat_parcala[0]);

                double isk1_yapılan = 0;
                if (isk1 > 0)//İSKONTO HESAPLANAN BLOKLAR 1,2,3 HESAPLANIYOR.
                {
                    double bruttutar_isk1 = 0;
                    isk1_yapılan = (bruttutar * isk1 / 100);
                    bruttutar_isk1 = (bruttutar - isk1_yapılan);
                    double isk2_yapılan = 0;
                    if (isk2 > 0)
                    {
                        double bruttutar_isk2 = 0;
                        isk2_yapılan = (bruttutar_isk1 * isk2 / 100);
                        bruttutar_isk2 = (bruttutar_isk1 - isk2_yapılan);
                        if (isk3 > 0)
                        {
                            double isk3_yapılan = 0;
                            isk3_yapılan += (bruttutar_isk2 * isk3 / 100);

                            isk1_toplam += isk1_yapılan;
                            isk2_toplam += isk2_yapılan;
                            isk3_toplam += isk3_yapılan;
                            isk_toplam += isk1_yapılan + isk2_yapılan + isk3_yapılan;
                        }
                        else
                        {
                            isk1_toplam += isk1_yapılan;
                            isk2_toplam += isk2_yapılan;
                            isk_toplam += isk1_yapılan + isk2_yapılan;
                        }
                    }
                    else
                    {
                        isk1_toplam += isk1_yapılan;
                        isk_toplam += isk1_yapılan;
                    }
                }
                else
                {
                    toplam.labeltoplamiskonto_s.Text = "0.00 TL";
                }//İSKONTO BLOKLARI İSK1 İSK3 İSK3 VE TOPLAM İSKONTOLAR HESAPLANIYOR.

                bruttutar_toplam += Convert.ToDouble(bruttutar_parcala[0]);
                string[] kdv = dataGridViewFaturaSatis.Rows[i].Cells[8].Value.ToString().Split('%');
                double kdv_oran = Convert.ToDouble(kdv[1]);

                double bruttutar_hesaplama = 0;
                bruttutar_hesaplama = Convert.ToDouble(bruttutar_parcala[0]);
                if (kdv_oran == 1)
                {
                    double kdv_tutar_1 = 0;

                    kdv_tutar_1 = (bruttutar_hesaplama * kdv_oran / 100);
                    kdv1_toplam += kdv_tutar_1;
                }
                else if (kdv_oran == 8)
                {
                    double kdv_tutar_8 = 0;

                    kdv_tutar_8 = (bruttutar_hesaplama * kdv_oran / 100);
                    kdv8_toplam += kdv_tutar_8;
                }
                else if (kdv_oran == 18)
                {
                    double kdv_tutar_18 = 0;

                    kdv_tutar_18 = (bruttutar_hesaplama * kdv_oran / 100);
                    kdv18_toplam += kdv_tutar_18;
                }
            }//SATIRLARI TARAYAN FOR DÖNGÜSÜ

            bruttutar = bruttutar_toplam;   //BRUTTUTAR DEĞİŞKENİ SIFIRLANIYOR.

            nettutar = ((bruttutar_toplam - isk_toplam) - (kdv1_toplam + kdv8_toplam + kdv18_toplam)); //NET TUTAR SIFIRLANMIYOR

            isk1 = isk1_toplam;//SIFIRLANIYOR

            isk2 = isk2_toplam;//SIFIRLANIYOR

            isk3 = isk3_toplam;//SIFIRLANIYOR

            iskonto_toplam = isk_toplam;//SIFIRLANIYOR

            kdv1 = kdv1_toplam;//SIFIRLANIYOR

            kdv8 = kdv8_toplam;//SIFIRLANIYOR

            kdv18 = kdv18_toplam;//SIFIRLANIYOR

            kdv_toplam = (kdv1_toplam + kdv8_toplam + kdv18_toplam);//KDV TOPLAM SIFIRLANMIYOR.

            geneltoplam = (nettutar + toplamkdv_toplam);//SIFIRLANIYOR


        }//TOPLAM HESAPLAMA METHODU
 
Gönderildi : 26/08/2015 17:29

(@kamilozel)
Gönderiler: 125
Estimable Member
 

kdv_toplam ve nettutar sıfırlanmıyor olarak görünüyor ve yukarda tanımlı değil tanımlama kısmında hata olabilir birde fonksiyonun dışına alın isterseniz değişkenleri. Yada sıfırlanmayan değişkenleri kontrol edin ona göre bi değişiklik yapın.

 
Gönderildi : 26/08/2015 19:37

(@eravse)
Gönderiler: 1753
Üye
 

bir class yapin o vlass icine propertyleri get set edin daha sonra void yerine donusu bu class verin sorun cozulecektir

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 26/08/2015 22:47

(@BarancanGenc)
Gönderiler: 4
Active Member
Konu başlatıcı
 

Teşekkür ederim yardımlarınız için methodun içersinden çıkartıp buttonun içinde yapıyorum işlemi, bu şekilde çözdüm.

Class kavramını bilmiyorum. Yani ne işe yaradığını biliyorum fakat yazmadım henüz mantığını kavramadım kasa modülünü yazarken yada raporlama modülü yazarken muhtemelen class kavramınada girişeceğim.(Bu benim öğrenme projem)

O yüzden şimdilik bu şekilde çözdüm fakat yinede method içersinden çıkınca o değişkenlerin neden sıfırlandığını anlamış değilim.

 
Gönderildi : 27/08/2015 15:03

Paylaş: