Çö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.");
        }
    }
}
Anlık tarih ve saati String'e çeviriyorum hocam, günde bir kez tıklaması için. İkinci kez tıklamaya çalışırsa false verecek.

Hocam amacınızı anladım da Date'in kullanıldığı yer yok attığınız kodlarda if içerisine eklenmesi gerekmezmi.
 
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
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.

 
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.
 
Son düzenleme:
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.");
            }

            
        }


Veri ekleme kodlarım bunlar hocam
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…