Çözüldü C# butona günde sadece bir kez tıklama nasıl yapılır?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

THE_YORULMAZZZ

Hectopat
Katılım
26 Şubat 2021
Mesajlar
463
Makaleler
1
Çözümler
7
C# da bir projem var ve bu projede veritabanına veri eklemek için bir butonum var ancak günde yalnızca bir kez veri eklemesi gerek bu yüzden butona günde sadece bir kez tıklanma izni vermem gerek. 2. Kez tıklanmaması gerekiyor, yardımcı olur musunuz?
 
Çözüm
Hocam amacınızı anladım da Date'in kullanıldığı yer yok attığınız kodlarda if içerisine eklenmesi gerekmezmi.
Gerek yok hocam, şöyle daha detaylı bir kod daha yazdım buna da bakabilirsiniz.


C#:
using System;
using System.Windows.Forms;

public partial class Form1 : Form
{
    // Bugünün tarihi
    private DateTime today = DateTime.Today;
    // Bugünkü tıklama sayısı
    private int clickCount = 0;

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        // Tarih kontrol et.
        if (today != DateTime.Today)
        {
            // Tarih farklıysa, tıklama sayısı sıfırla
            clickCount = 0;
            today = DateTime.Today;
        }

        // Tıklama sayısı kontrol et.
        if (clickCount < 1)
        {
            // Tıklama sayısı 1 den azsa, veri ekle
            // veritabanına veri ekleme kodu
            clickCount++;
        }
        else
        {
            // Tıklama sayısı 1 den fazla ise, uyarı ver
            MessageBox.Show("Bugün için veri ekleme izniniz doldu.");
        }
    }
}
Hocam amacınızı anladım da Date'in kullanıldığı yer yok attığınız kodlarda if içerisine eklenmesi gerekmezmi.
C#:
private DateTime lastClickDate;

private void button1_Click(object sender, EventArgs e)
{
    if (lastClickDate.Date == DateTime.Now.Date)
    {
        MessageBox.Show("Bu buton bugün zaten tıklandı.");
        return;
    }
    lastClickDate = DateTime.Now;
    MessageBox.Show("Buton sadece günde bir kez tıklanabilir.");
}

Bu kod parçacığından yola çıkılarak bir şeyler yapılabilir.
 
Hocam amacınızı anladım da Date'in kullanıldığı yer yok attığınız kodlarda if içerisine eklenmesi gerekmezmi.
Gerek yok hocam, şöyle daha detaylı bir kod daha yazdım buna da bakabilirsiniz.


C#:
using System;
using System.Windows.Forms;

public partial class Form1 : Form
{
    // Bugünün tarihi
    private DateTime today = DateTime.Today;
    // Bugünkü tıklama sayısı
    private int clickCount = 0;

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        // Tarih kontrol et.
        if (today != DateTime.Today)
        {
            // Tarih farklıysa, tıklama sayısı sıfırla
            clickCount = 0;
            today = DateTime.Today;
        }

        // Tıklama sayısı kontrol et.
        if (clickCount < 1)
        {
            // Tıklama sayısı 1 den azsa, veri ekle
            // veritabanına veri ekleme kodu
            clickCount++;
        }
        else
        {
            // Tıklama sayısı 1 den fazla ise, uyarı ver
            MessageBox.Show("Bugün için veri ekleme izniniz doldu.");
        }
    }
}
 
Çözüm
Gerek yok hocam, şöyle daha detaylı bir kod daha yazdım buna da bakabilirsiniz.


C#:
using System;
using System.Windows.Forms;

public partial class Form1 : Form
{
    // Bugünün tarihi
    private DateTime today = DateTime.Today;
    // Bugünkü tıklama sayısı
    private int clickCount = 0;

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        // Tarih kontrol et.
        if (today != DateTime.Today)
        {
            // Tarih farklıysa, tıklama sayısı sıfırla
            clickCount = 0;
            today = DateTime.Today;
        }

        // Tıklama sayısı kontrol et.
        if (clickCount < 1)
        {
            // Tıklama sayısı 1 den azsa, veri ekle
            // veritabanına veri ekleme kodu
            clickCount++;
        }
        else
        {
            // Tıklama sayısı 1 den fazla ise, uyarı ver
            MessageBox.Show("Bugün için veri ekleme izniniz doldu.");
        }
    }
}
Temiz bir kod. Konuya yeni dahil oldum böyle bir şey yapıyordum tamda sayfayı yenileyince gördüm. Elinize sağlık.
Dilerseniz bu verileri Application.Settings'e kaydettirebilirsiniz.

Kaydetmek için;
Properties.Settings.Default["TiklamaHakki"] = 1;
Properties.Settings.Default.Save();

Çekmek için;

int tiklamahakki = 0;
tiklamahakki = Convert.ToInt32(Properties.Settings.Default["TiklamaHakki"]);

Sonrada kontrollerini yaptırırsınız @Uton hocamın eklediği koddan ilerleyerek..
Alt kısımdaki fotoğrafta görüldüğü gibi bir değer açmanız gerekmekte.

1674236776438.png
 
Son düzenleme:
Gerek yok hocam, şöyle daha detaylı bir kod daha yazdım buna da bakabilirsiniz.

C#:
using System;
using System.Windows.Forms;

public partial class Form1 : Form.
{
 // Bugünün tarihi.
 private DateTime today = DateTime.Today;
 // Bugünkü tıklama sayısı.
 private int clickCount = 0;

 public Form1()
 {
 InitializeComponent();
 }

 private void button1_Click(object sender, EventArgs e)
 {
 // Tarih kontrol et.
 if (today != DateTime.Today)
 {
 // Tarih farklıysa, tıklama sayısı sıfırla.
 clickCount = 0;
 today = DateTime.Today;
 }

 // Tıklama sayısı kontrol et.
 if (clickCount < 1)
 {
 // Tıklama sayısı 1 den azsa, veri ekle.
 // veritabanına veri ekleme kodu.
 clickCount++;
 }
 else.
 {
 // Tıklama sayısı 1 den fazla ise, uyarı ver.
 MessageBox.Show("Bugün için veri ekleme izniniz doldu.");
 }
 }
}

Hocam teşekkür ederim çok işime yaradı verdiğiniz bilgiler elinize sağlık.

Temiz bir kod. Konuya yeni dahil oldum böyle bir şey yapıyordum tam da sayfayı yenileyince gördüm. Elinize sağlık.
Dilerseniz bu verileri application. Settings'e kaydettirebilirsiniz.

Kaydetmek için;
Properties. Settings. Default["TiklamaHakki"] = 1;
Properties.Settings.Default.Save();

Çekmek için;

İnt tiklamahakki = 0;
Tiklamahakki = convert. Toınt32(properties. Settings. Default["TiklamaHakki"]);

Sonra da kontrollerini yaptırırsınız @Uton hocamın eklediği koddan ilerleyerek.
Alt kısımdaki fotoğrafta görüldüğü gibi bir değer açmanız gerekmekte.

Eki Görüntüle 1639342

Hocam tıklama verisini çekmek istemiyordum ama verdiğiniz bilgi için teşekkür ederim.

Gerek yok hocam, şöyle daha detaylı bir kod daha yazdım buna da bakabilirsiniz.

C#:
using System;
using System.Windows.Forms;

public partial class Form1 : Form.
{
 // Bugünün tarihi.
 private DateTime today = DateTime.Today;
 // Bugünkü tıklama sayısı.
 private int clickCount = 0;

 public Form1()
 {
 InitializeComponent();
 }

 private void button1_Click(object sender, EventArgs e)
 {
 // Tarih kontrol et.
 if (today != DateTime.Today)
 {
 // Tarih farklıysa, tıklama sayısı sıfırla.
 clickCount = 0;
 today = DateTime.Today;
 }

 // Tıklama sayısı kontrol et.
 if (clickCount < 1)
 {
 // Tıklama sayısı 1 den azsa, veri ekle.
 // veritabanına veri ekleme kodu.
 clickCount++;
 }
 else.
 {
 // Tıklama sayısı 1 den fazla ise, uyarı ver.
 MessageBox.Show("Bugün için veri ekleme izniniz doldu.");
 }
 }
}

Hocam bir sorum daha olacak veri eklemek için butona bastığımda eksik 2. kez bastığımda tam veri getiriyor şimdi günde bir kez tıklama kodu yazdığım için bir kez basıyorum bu yüzden eksik veri getiriyor ilk tıklamada eksik veri getirmesini nasıl çözebilirim veya sorun nereden kaynaklı olabilir isterseniz veri ekleme kodlarını paylaşabilirim.
 
Son düzenleme:
Hocam teşekkür ederim çok işime yaradı verdiğiniz bilgiler elinize sağlık.



Hocam tıklama verisini çekmek istemiyordum ama verdiğiniz bilgi için teşekkür ederim.



Hocam bir sorum daha olacak veri eklemek için butona bastığımda eksik 2. kez bastığımda tam veri getiriyor şimdi günde bir kez tıklama kodu yazdığım için bir kez basıyorum bu yüzden eksik veri getiriyor ilk tıklamada eksik veri getirmesini nasıl çözebilirim veya sorun nereden kaynaklı olabilir isterseniz veri ekleme kodlarını paylaşabilirim.
Paylaşırsanız bir göz atabilirim.
 
Paylaşırsanız bir göz atabilirim.
C#:
// Diğer Tablolarda İşlem Yaparak Sonucu Buraya Ekler

        string Gelirquery = "SELECT SUM(Gelir_Tutari) FROM Gelir WHERE CAST(Tarih AS DATE) = CAST(GETDATE() AS DATE)";
        string Giderquery = "SELECT SUM(Gider_Tutari) FROM Gider WHERE CAST(Tarih AS DATE) = CAST(GETDATE() AS DATE)";
        string Bakiyequery = "UPDATE Kasa SET Bakiye = (SELECT SUM(Gelir.Gelir_Tutari) FROM Gelir WHERE CAST((Gelir.Tarih) AS DATE) = CAST(GETDATE() AS DATE)) - (SELECT SUM(Gider.Gider_Tutari) FROM Gider WHERE CAST((Gider.Tarih) AS DATE) = CAST(GETDATE() AS DATE))";
        string date = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

        private void btngunsonu_Click_1(object sender, EventArgs e)
        {
            // Tarih kontrol et.
            if (today != DateTime.Today)
            {
                // Tarih farklıysa, tıklama sayısı sıfırla
                clickCount = 0;
                today = DateTime.Today;
            }

            // Tıklama sayısı kontrol et.
            if (clickCount < 1)
            {
                // Tıklama sayısı 1 den azsa, veri ekle
                // veritabanına veri ekleme kodu
                try
                {
                    conn.Open();

                    SqlCommand cmd = new SqlCommand(Gelirquery, conn);
                    SqlDataReader sdr = cmd.ExecuteReader();
                    if (sdr.Read())
                    {
                        gelirtoplam = (int)Convert.ToDouble(sdr[0]);
                        conn.Close();
                    }
                    sdr.Close();

                    conn.Open();

                    SqlCommand cmdd = new SqlCommand(Giderquery, conn);
                    SqlDataReader sdr2 = cmdd.ExecuteReader();
                    if (sdr2.Read())
                    {
                        gidertoplam = Convert.ToInt32(sdr2[0]);
                        conn.Close();
                    }
                    sdr2.Close();

                    conn.Open();

                    SqlCommand cmddd = new SqlCommand(Bakiyequery, conn);
                    SqlDataReader sdr3 = cmddd.ExecuteReader();
                    if (sdr3.Read())
                    {
                        bakiyetoplam = Convert.ToInt32(sdr3[0]);
                        conn.Close();
                    }
                    sdr3.Close();

                    SqlCommand cmd1 = new SqlCommand();
                    cmd1.Connection = conn;
                    cmd1.CommandText = "INSERT INTO Kasa(Tarih,Gelir,Gider,Bakiye) VALUES (@Tarih, @Gelir, @Gider, @Bakiye)";
                    cmd1.Parameters.AddWithValue("@Tarih", date);
                    cmd1.Parameters.AddWithValue("@Gelir", gelirtoplam);
                    cmd1.Parameters.AddWithValue("@Gider", gidertoplam);
                    cmd1.Parameters.AddWithValue("@Bakiye", bakiyetoplam);
                    cmd1.ExecuteNonQuery();
                    dt.Clear();
                    conn.Close();
                    listele();
                }
                catch (Exception)
                {
                    MessageBox.Show("Eksik Veri Var ! \nVerilerinizi Kontrol Edin Lütfen", "SİSTEM", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                clickCount++;
            }
            else
            {
                // Tıklama sayısı 1 den fazla ise, uyarı ver
                MessageBox.Show("Bugün için veri ekleme izniniz doldu.");
            }

            
        }

C#:
// Diğer Tablolarda İşlem Yaparak Sonucu Buraya Ekler

 string Gelirquery = "SELECT SUM(Gelir_Tutari) FROM Gelir WHERE CAST(Tarih AS DATE) = CAST(GETDATE() AS DATE)";
 string Giderquery = "SELECT SUM(Gider_Tutari) FROM Gider WHERE CAST(Tarih AS DATE) = CAST(GETDATE() AS DATE)";
 string Bakiyequery = "UPDATE Kasa SET Bakiye = (SELECT SUM(Gelir.Gelir_Tutari) FROM Gelir WHERE CAST((Gelir.Tarih) AS DATE) = CAST(GETDATE() AS DATE)) - (SELECT SUM(Gider.Gider_Tutari) FROM Gider WHERE CAST((Gider.Tarih) AS DATE) = CAST(GETDATE() AS DATE))";
 string date = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

 private void btngunsonu_Click_1(object sender, EventArgs e)
 {
 // Tarih kontrol et.
 if (today != DateTime.Today)
 {
 // Tarih farklıysa, tıklama sayısı sıfırla
 clickCount = 0;
 today = DateTime.Today;
 }

 // Tıklama sayısı kontrol et.
 if (clickCount < 1)
 {
 // Tıklama sayısı 1 den azsa, veri ekle
 // veritabanına veri ekleme kodu
 try
 {
 conn.Open();

 SqlCommand cmd = new SqlCommand(Gelirquery, conn);
 SqlDataReader sdr = cmd.ExecuteReader();
 if (sdr.Read())
 {
 gelirtoplam = (int)Convert.ToDouble(sdr[0]);
 conn.Close();
 }
 sdr.Close();

 conn.Open();

 SqlCommand cmdd = new SqlCommand(Giderquery, conn);
 SqlDataReader sdr2 = cmdd.ExecuteReader();
 if (sdr2.Read())
 {
 gidertoplam = Convert.ToInt32(sdr2[0]);
 conn.Close();
 }
 sdr2.Close();

 conn.Open();

 SqlCommand cmddd = new SqlCommand(Bakiyequery, conn);
 SqlDataReader sdr3 = cmddd.ExecuteReader();
 if (sdr3.Read())
 {
 bakiyetoplam = Convert.ToInt32(sdr3[0]);
 conn.Close();
 }
 sdr3.Close();

 SqlCommand cmd1 = new SqlCommand();
 cmd1.Connection = conn;
 cmd1.CommandText = "INSERT INTO Kasa(Tarih,Gelir,Gider,Bakiye) VALUES (@Tarih, @Gelir, @Gider, @Bakiye)";
 cmd1.Parameters.AddWithValue("@Tarih", date);
 cmd1.Parameters.AddWithValue("@Gelir", gelirtoplam);
 cmd1.Parameters.AddWithValue("@Gider", gidertoplam);
 cmd1.Parameters.AddWithValue("@Bakiye", bakiyetoplam);
 cmd1.ExecuteNonQuery();
 dt.Clear();
 conn.Close();
 listele();
 }
 catch (Exception)
 {
 MessageBox.Show("Eksik Veri Var ! \nVerilerinizi Kontrol Edin Lütfen", "SİSTEM", MessageBoxButtons.OK, MessageBoxIcon.Error);
 }
 clickCount++;
 }
 else
 {
 // Tıklama sayısı 1 den fazla ise, uyarı ver
 MessageBox.Show("Bugün için veri ekleme izniniz doldu.");
 }

 }

Veri ekleme kodlarım bunlar hocam
 

Technopat Haberler

Geri
Yukarı