Çö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.");
        }
    }
}
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;
            //Load Event
            this.Load += Kasa_Load;
        }

        private void Kasa_Load(object sender, EventArgs e)
        {
            listele();
        }

        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
        
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
          
        }

        // VeriTabanı Kayıtları Listeleme
        private void listele()
        {
            try
            {
                conn.Open();
                SqlDataAdapter adtr = new SqlDataAdapter("Select * from Kasa", conn);
                adtr.Fill(dt);
                dataGridView1.DataSource = dt;
                adtr.Dispose();
                conn.Close();
            }
            catch (SqlException ex)
            {
                MessageBox.Show("Error:" + ex.Message);
            }
        }

        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)
        {
            try
            {
                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();
            }
            catch (SqlException ex)
          
               {
                MessageBox.Show("Error:" + ex.Message);
            }
        }

        // 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)
        {
            try
            {
                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();
            }
            catch (SqlException ex)
            {
                MessageBox.Show("Error:" + ex.Message);
            }
        }

        // 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...
        //Gelir,Gider,Bakiye işlemleri için buton oluşturulup onların eventleri içerisinde yukarıdaki queryler çalıştırılmalıdır.
    }
}

Tekrar dener misiniz?

Not: Sanırım eksik yazmışım hocam tekrar düzelteceğim.

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
    {
        SqlConnection conn = new SqlConnection("Data Source=YOUR_SERVER_NAME;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();
            this.FormClosing += Form1_FormClosing;
            tabControl1.SelectedIndexChanged += tabControl1_SelectedIndexChanged;
            // Button Gelir, Gider, ve Bakiye
            Button btnGelir = new Button();
            btnGelir.Text = "Gelir";
            btnGelir.Click += new EventHandler(btnGelir_Click);
           
            this.Controls.Add(btnGelir);
            Button btnGider = new Button();
            btnGider.Text = "Gider";
            btnGider.Click += new EventHandler(btnGider_Click);
         
            this.Controls.Add(btnGider);
            Button btnBakiye = new Button();
            btnBakiye.Text = "Bakiye";
            btnBakiye.Click += new EventHandler(btnBakiye_Click);
           
            this.Controls.Add(btnBakiye);
            listele();
        }

        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
           
        }

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

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            // dataGridView1_CellContentClick
        }

        private void dataGridView1_Click(object sender, EventArgs e)
        {
            // dataGridView1_Click için fonksyon ekle.
           
           
        }

        private void txtsearch_TextChanged(object sender, EventArgs e)
        {
            dt.Clear();
            using (conn)
            {
                conn.Open();
                SqlDataAdapter adtr2 = new SqlDataAdapter("Select *  From Kasa where Tarih Like'%" + txtsearch.Text + "%'", conn);
                adtr2.Fill(dt);
                dataGridView1.DataSource = dt;
            }
        }

        private void btnsearch_Click(object sender, EventArgs e)
        {
            dt.Clear();
            using (conn)
            {
                conn.Open();
                SqlDataAdapter adtr2 = new SqlDataAdapter("Select *  From Kasa where Tarih Like'%" + txtsearch.Text + "%'", conn);
                adtr2.Fill(dt);
                dataGridView1.DataSource = dt;
            }
        }

        private void btnGelir_Click(object sender, EventArgs e)
        {
            using (conn)
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand("SELECT SUM(Gelir_Tutari) FROM Gelir WHERE CAST(Tarih AS DATE) = CAST(GETDATE() AS DATE)", conn);
                gelirtoplam = (int)cmd.ExecuteScalar();
               
                MessageBox.Show("Gelir Toplam: " + gelirtoplam);
            }
        }
private void btnGider_Click(object sender, EventArgs e)
        {
            using (conn)
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand("SELECT SUM(Gider_Tutari) FROM Gider WHERE CAST(Tarih AS DATE) = CAST(GETDATE() AS DATE)", conn);
                gidertoplam = (int)cmd.ExecuteScalar();
               
                MessageBox.Show("Gider Toplam: " + gidertoplam);
            }
        }

        private void btnBakiye_Click(object sender, EventArgs e)
        {
            bakiyetoplam = gelirtoplam - gidertoplam;
           
            MessageBox.Show("Bakiye Toplam: " + bakiyetoplam);
        }
    }
}

Hocam gözden kaçırdığım yerler olabilir ki muhtemelen unuttuğum yerler çoktur, işten geldim ve biraz yorgunum. Toplu kafayla daha detaylı bakacağım.
 
Son düzenleme:
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;
            //Load Event
            this.Load += Kasa_Load;
        }

        private void Kasa_Load(object sender, EventArgs e)
        {
            listele();
        }

        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
       
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
         
        }

        // VeriTabanı Kayıtları Listeleme
        private void listele()
        {
            try
            {
                conn.Open();
                SqlDataAdapter adtr = new SqlDataAdapter("Select * from Kasa", conn);
                adtr.Fill(dt);
                dataGridView1.DataSource = dt;
                adtr.Dispose();
                conn.Close();
            }
            catch (SqlException ex)
            {
                MessageBox.Show("Error:" + ex.Message);
            }
        }

        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)
        {
            try
            {
                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();
            }
            catch (SqlException ex)
         
               {
                MessageBox.Show("Error:" + ex.Message);
            }
        }

        // 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)
        {
            try
            {
                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();
            }
            catch (SqlException ex)
            {
                MessageBox.Show("Error:" + ex.Message);
            }
        }

        // 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...
        //Gelir,Gider,Bakiye işlemleri için buton oluşturulup onların eventleri içerisinde yukarıdaki queryler çalıştırılmalıdır.
    }
}

Tekrar dener misiniz?

Not: Sanırım eksik yazmışım hocam tekrar düzelteceğim.

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
    {
        SqlConnection conn = new SqlConnection("Data Source=YOUR_SERVER_NAME;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();
            this.FormClosing += Form1_FormClosing;
            tabControl1.SelectedIndexChanged += tabControl1_SelectedIndexChanged;
            // Button Gelir, Gider, ve Bakiye
            Button btnGelir = new Button();
            btnGelir.Text = "Gelir";
            btnGelir.Click += new EventHandler(btnGelir_Click);
          
            this.Controls.Add(btnGelir);
            Button btnGider = new Button();
            btnGider.Text = "Gider";
            btnGider.Click += new EventHandler(btnGider_Click);
        
            this.Controls.Add(btnGider);
            Button btnBakiye = new Button();
            btnBakiye.Text = "Bakiye";
            btnBakiye.Click += new EventHandler(btnBakiye_Click);
          
            this.Controls.Add(btnBakiye);
            listele();
        }

        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
          
        }

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

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            // dataGridView1_CellContentClick
        }

        private void dataGridView1_Click(object sender, EventArgs e)
        {
            // dataGridView1_Click için fonksyon ekle.
          
          
        }

        private void txtsearch_TextChanged(object sender, EventArgs e)
        {
            dt.Clear();
            using (conn)
            {
                conn.Open();
                SqlDataAdapter adtr2 = new SqlDataAdapter("Select *  From Kasa where Tarih Like'%" + txtsearch.Text + "%'", conn);
                adtr2.Fill(dt);
                dataGridView1.DataSource = dt;
            }
        }

        private void btnsearch_Click(object sender, EventArgs e)
        {
            dt.Clear();
            using (conn)
            {
                conn.Open();
                SqlDataAdapter adtr2 = new SqlDataAdapter("Select *  From Kasa where Tarih Like'%" + txtsearch.Text + "%'", conn);
                adtr2.Fill(dt);
                dataGridView1.DataSource = dt;
            }
        }

        private void btnGelir_Click(object sender, EventArgs e)
        {
            using (conn)
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand("SELECT SUM(Gelir_Tutari) FROM Gelir WHERE CAST(Tarih AS DATE) = CAST(GETDATE() AS DATE)", conn);
                gelirtoplam = (int)cmd.ExecuteScalar();
              
                MessageBox.Show("Gelir Toplam: " + gelirtoplam);
            }
        }
private void btnGider_Click(object sender, EventArgs e)
        {
            using (conn)
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand("SELECT SUM(Gider_Tutari) FROM Gider WHERE CAST(Tarih AS DATE) = CAST(GETDATE() AS DATE)", conn);
                gidertoplam = (int)cmd.ExecuteScalar();
              
                MessageBox.Show("Gider Toplam: " + gidertoplam);
            }
        }

        private void btnBakiye_Click(object sender, EventArgs e)
        {
            bakiyetoplam = gelirtoplam - gidertoplam;
          
            MessageBox.Show("Bakiye Toplam: " + bakiyetoplam);
        }
    }
}

Hocam gözden kaçırdığım yerler olabilir ki muhtemelen unuttuğum yerler çoktur, işten geldim ve biraz yorgunum. Toplu kafayla daha detaylı bakacağım.
hocam çok teşekkür ederim emeğinize sağlık ancak proje bu şekil değil

Hocam çok teşekkür ederim emeğinize sağlık ancak proje bu şekil değil

Drive üzerinden uygulamanın tamamını paylaşacağım hocam sizinle
 
Hocam projenin tamamına bakabilecek vaktimin olduğunu zannetmiyorum ama burası hariç Stack Overflow'a da sorabilirsiniz.
tamamında sorun yok zaten hocam bende sekmeler arası geçiş anasayfa formunda her buton farklı formları tabpage içerisinde anasayfada açıyor yaani sekmek değiştirme işlemini farklı formda yapıyorum

tamamında sorun yok zaten hocam bende sekmeler arası geçiş anasayfa formunda her buton farklı formları tabpage içerisinde anasayfada açıyor yaani sekmek değiştirme işlemini farklı formda yapıyorum
gelir gider kasa iletişim hakkında ve anasayfa sekmeleri var ve hepsi aynı formun içinde açılıyor
 

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

Technopat Haberler

Yeni konular

Geri
Yukarı