Çö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
464
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 o zaman veri tabanı içinde bir sorun var, çünkü bağlantı hatası bu. Kodlarda da ben herhangi bir sorun göremiyorum.
Hocam şimdi kontrol sağladım eski halinde geri getirince herhangi bir hata vermiyor veri ekliyor ancak eksik ekliyor hala sizin paylaştığınız kodlarda hiç bir işlem yapmadan hata veriyor


Hocam tekrar merhaba dedikleriniz gibi yaptım ancak projede sekmeler arası geçince butona 2.kez basabiliyorum aynı sekmede kalınca bir kez bastırıyor ancak proje içinde farklı bir sekmeye geçip tekrar bu sekmeye geldiğimde 2. kez basabiliyorum ve her defasında basmaya devam ediyorum bunu nasıl çözebiliriz?
 
Son düzenleme:
C#:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    clickCount = 0;
    today = DateTime.MinValue;
//FormClosing
}

C#:
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
    clickCount = 0;
    today = DateTime.MinValue;
}

//TabControl.SelectedIndexChanged

Bunları kullanmayı deneyin hocam.
 
bunları sekme değiştirmek için tıkladığım butonlara ekliyorum değil mi hocam
 
Bunları sekme değiştirmek için tıkladığım butonlara ekliyorum değil mi hocam?
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();
        // FormClosing event'i ekle
        this.FormClosing += Form1_FormClosing;
        // TabControl.SelectedIndexChanged event'i ekle
        tabControl1.SelectedIndexChanged += tabControl1_SelectedIndexChanged;
    }

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        // Form kapatılırken yapılacak işlemler
    }

    private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
    {
        // Seçilen sekme değiştiğinde yapılacak işlemler
    }

    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.");
        }
    }
}

Şu şekilde deneyin hocam eğer kod hala bunla aynı ise. Farklıysa buradan bakarak anlarsınız zaten.
 
Hocam şöyle ki benim projemde sekme değiştirme kodları farklı form içerisinde uygulamada birden fazla sekme var isterseniz mail ile paylaşayım sizinle
 
Hocam tam kodları ve aldığınız hata koduna bir bakabilir miyim?
C++:
using System;
using System.Data.SqlClient;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;


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

        SqlConnection conn = new SqlConnection("Data Source=THEYORULMAZZ;Initial Catalog=Kasa_Hareket_Takip;Integrated Security=True");
        System.Data.DataTable dt = new System.Data.DataTable();
        int gelirtoplam;
        int gidertoplam;
        int bakiyetoplam;
        public Kasa()
        {
            InitializeComponent();
            // FormClosing event'i ekle
            this.FormClosing += Form1_FormClosing;
            // TabControl.SelectedIndexChanged event'i ekle
            tabControl1.SelectedIndexChanged += tabControl1_SelectedIndexChanged;
        }

        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
            throw new NotImplementedException();
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            throw new NotImplementedException();
        }

        // VeriTabanı Kayıtları Listeleme
        private void listele()
        {
            conn.Open();
            SqlDataAdapter adtr = new SqlDataAdapter("Select * from Kasa", conn);
            adtr.Fill(dt);
            dataGridView1.DataSource = dt;
            adtr.Dispose();
            conn.Close();
        }
      
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void dataGridView1_Click(object sender, EventArgs e)
        {

        }

        // TextBox Aracında Yazılan Şartlı Bilgi İle Kayıtlar Arasında Arama Yapar
        private void txtsearch_TextChanged(object sender, EventArgs e)
        {
            dt.Clear();
            conn.Open();
            SqlDataAdapter adtr2 = new SqlDataAdapter("Select *  From Kasa where Tarih Like'%" + txtsearch.Text + "%'", conn);
            adtr2.Fill(dt);
            dataGridView1.DataSource = dt;
            adtr2.Dispose();
            conn.Close();
        }

        // TextBox Aracında Yazılan Şartlı Bilgi İle Kayıtlar Arasında Arama Yapar Ve Butona Arama Kodu Atanır
        private void btnsearch_Click(object sender, EventArgs e)
        {
            dt.Clear();
            conn.Open();
            SqlDataAdapter adtr2 = new SqlDataAdapter("Select *  From Kasa where Tarih Like'%" + txtsearch.Text + "%'", conn);
            adtr2.Fill(dt);
            dataGridView1.DataSource = dt;
            adtr2.Dispose();
            conn.Close();
        }

        // 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", gelirtoplam - gidertoplam);
                    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 İçin Veri Ekleme İzniniz Doldu.", "SİSTEM", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        // Kayıtlı Olan Veriyi Silmek İçin Gerekli Kodlar
        private void btnSil_Click_1(object sender, EventArgs e)
        {
            if (MessageBox.Show("KAYIT SİLİNSİNMİ ?", "SİSTEM", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk) == DialogResult.Yes)
            {
                conn.Open();
                SqlCommand cmd3 = new SqlCommand();
                cmd3.Connection = conn;
                cmd3.CommandText = "DELETE FROM Kasa WHERE ID=@NUMARA";
                cmd3.Parameters.AddWithValue("@NUMARA", dataGridView1.CurrentRow.Cells[0].Value.ToString());
                cmd3.ExecuteNonQuery();
                dt.Clear();
                conn.Close();
                listele();
            }
        }

        // Excel'e Kayıtlı Olan Verileri Aktarmak İçin Aktarma Ve Ekleme Kodları
        private void btnexcel_Click_1(object sender, EventArgs e)
        {
            int sutun = 1;
            int satir = 1;
            Excel.Application ExcelApp = new Excel.Application();
            ExcelApp.Workbooks.Add();
            ExcelApp.Visible = true;
            ExcelApp.Worksheets[1].Activate();
            for (int j = 0; j < dataGridView1.Columns.Count; j++)
            {
                ExcelApp.Cells[satir, sutun + j].Value = dataGridView1.Columns[j].HeaderText;

            }
            satir++;

            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                for (int j = 0; j < dataGridView1.Columns.Count; j++)
                {
                    ExcelApp.Cells[satir + i, sutun + j].Value = dataGridView1[j, i].Value;
                }
            }
        }       
        private void Kasa_Load_1(object sender, EventArgs e)
        {
            // TODO: Bu kod satırı 'kasa_Hareket_TakipDataSet1.Kasa' tablosuna veri yükler. Bunu gerektiği şekilde taşıyabilir, veya kaldırabilirsiniz.
            this.kasaTableAdapter.Fill(this.kasa_Hareket_TakipDataSet1.Kasa);
            listele();
        }
    }
}

Hocam kasa bölümünün kodları bunlar hata da şu ;
 

Dosya Ekleri

  • Ekran görüntüsü 2023-01-22 174123.png
    306,5 KB · Görüntüleme: 29

Bu konuyu görüntüleyen kullanıcılar

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