C# Access aynı okul numarasının engelleme kodu

sadece1eren

Hectopat
Katılım
1 Ocak 2021
Mesajlar
627
Çözümler
1
İstediğim basit Access veri tabanımda aynı veriyi girmelerini engelleyebilecek bir kod.
İnternette bulabileceğiniz bu kodlarda hata alıyorum aynısını aldıysanız.

C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;

namespace tc_kontrol.
{
 public partial class Form1 : Form.
 {
 OleDbConnection baglanti;
 OleDbCommand komut;
 OleDbDataAdapter da;

 public Form1()
 {
 InitializeComponent();
 }

 void KisiListele()
 {
 baglanti = new OleDbConnection("Provider=Microsoft.ACE.OleDb.12.0;Data Source=vtogrenci.accdb");
 baglanti.Open();
 da = new OleDbDataAdapter("Select *From ogrenci", baglanti);
 DataTable tablo = new DataTable();
 da.Fill(tablo);
 dataGridView1.DataSource = tablo;
 baglanti.Close();

 }
 private void Form1_Load(object sender, EventArgs e)
 {
 KisiListele();
 }

 public int VarMi(string aranan)
 {
 int sonuc;
 baglanti = new OleDbConnection("Provider=Microsoft.ACE.OleDb.12.0;Data Source=vtogrenci.accdb");
 string sorgu = "Select COUNT(tc) from ogrenci WHERE tc='"+aranan+"'";
 komut = new OleDbCommand(sorgu, baglanti);
 baglanti.Open();

 sonuc=Convert.ToInt32(komut.ExecuteScalar());

 baglanti.Close();
 return sonuc;

 }

 private void button1_Click(object sender, EventArgs e)
 {

 if (VarMi(txtTc.Text) != 0)
 {
 MessageBox.Show("Bu TC Numara ile daha önce kayıt yapılmış");
 }
 else.
 {
 string sorgu = "Insert into ogrenci (tc,ad,soyad) values (@tc,@ad,@soyad)";
 komut = new OleDbCommand(sorgu, baglanti);
 komut.Parameters.AddWithValue("@tc", Convert.ToInt32(txtTc.Text));
 komut.Parameters.AddWithValue("@ad", txtAd.Text);
 komut.Parameters.AddWithValue("@soyad", txtSoyad.Text);
 baglanti.Open();
 komut.ExecuteNonQuery();
 baglanti.Close();
 KisiListele();
 }

 }
 }
}

Bilginiz varsa hatama da bakabilirsiniz.
 

Dosya Ekleri

  • resim_2022-06-08_232457419.png
    resim_2022-06-08_232457419.png
    73,1 KB · Görüntüleme: 65
if(cmd.executescalar()==true)
sonuc = 1
else
sonuc = 0

ya da direkt return 1/0 yazabilirsin.

Hata aldığın satırı silip dener misin. Veri tipi uyuşmazlığı diyor.
 
if(cmd.executescalar()==true)
Sonuç = 1
Else.
Sonuç = 0

Ya da direkt return 1/0 yazabilirsin.

Hata aldığın satırı silip dener misin? Veri tipi uyuşmazlığı diyor.

Dediğiniz doğru ama yanlışlıkları var kendi kendime söylediklerinizle durumu çözdüm yardımınız için sağ olun.
Düzgün çalışan kodu paylaşıyorum sonra birilerine lazım olabilir.
Global değişken olarak bool durum(); kodunu yazacaksınız sonra.

C#:
 void VarMi()
 {
 con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Application.StartupPath + "\\Database.accdb");
 con.Open();
 OleDbCommand komut = new OleDbCommand("Select * from Uye where OkulNumarasi=@p1", con);
 komut.Parameters.AddWithValue("@p1", textBox2.Text);
 OleDbDataReader dr = komut.ExecuteReader();
 if (dr.Read())
 {
 durum = false;
 }
 else.
 {
 durum = true;
 }
 con.Close();
 }

Böyle bir Void açacaksınız ve istediğiniz kısma VarMi(); yazacaksınız.

C#:
 if (durum==false)
 {
 MessageBox.Show("Bu Öğrenci No İle Daha Önce Kayıt Yapılmış");
 }
 else.
 {
 //İstediğiniz kod.
 }

Son olarak bu if yapısını kuracaksınız hazır olacak.
 
Dediğiniz doğru ama yanlışlıkları var kendi kendime söylediklerinizle durumu çözdüm yardımınız için sağ olun.
Düzgün çalışan kodu paylaşıyorum sonra birilerine lazım olabilir.
Global değişken olarak bool durum(); kodunu yazacaksınız sonra.

C#:
 void VarMi()
 {
 con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Application.StartupPath + "\\Database.accdb");
 con.Open();
 OleDbCommand komut = new OleDbCommand("Select * from Uye where OkulNumarasi=@p1", con);
 komut.Parameters.AddWithValue("@p1", textBox2.Text);
 OleDbDataReader dr = komut.ExecuteReader();
 if (dr.Read())
 {
 durum = false;
 }
 else.
 {
 durum = true;
 }
 con.Close();
 }

Böyle bir Void açacaksınız ve istediğiniz kısma VarMi(); yazacaksınız.

C#:
 if (durum==false)
 {
 MessageBox.Show("Bu Öğrenci No İle Daha Önce Kayıt Yapılmış");
 }
 else.
 {
 //İstediğiniz kod.
 }

Son olarak bu if yapısını kuracaksınız hazır olacak.
derleyici kullanmadan aklıma gelen en basit çözümü yazmıştım. Bu da olur elbette.
 

Technopat Haberler

Yeni konular

Yeni mesajlar

Geri
Yukarı