Merhaba arkadaşlar  sizlere bir çok kişinin sorunu olan bir konuyu açıklayacağım. Kod ile Microsoft Access Veritabanındaki otomatik sayı nasıl 1’e getirilir onu açıklayacağım. Öncelikle bu işlemi yapmadan önce veritabanınızı yedeklemenizi öneririm. Bu işlem ile veritabanındaki istediğiniz tablonun içindeki veriler silinip, otomatik sayı değerini tekrar 1’den başlatacak.

Gelelim bunu nasıl yapıyoruz sorusuna?

Önce içinde veri olan bir veritabanımız olsun. Örneğin benim veritabanımın ismi Data, içindeki tablomun ismide Kayit. Şimdi bu tablomun 2 alanı bulunmakta, alan isimlerim ogrNo, Adi ve Sinifi olarak belirledim.

ogrNo=Otomatik sayı ve birincil anahtar

Adi=Kısa Metin

Soyadi=Kısa Metin olsun.

Şimdi bu tabloya biraz veri girişi yapıyorum. Veritabanı dosyanızı; çalıştığınız proje dosyasında bin/debug içerisine atmayı unutmayınız.

Şimdi tekrar Visual Studio’ya dönüyoruz.

Kod ekranına geçelim.

using System.Data.OleDb;  //Access kütüphanesi
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        OleDbConnection bag = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Data.accdb");
        //BURASI VERİTABANI BAĞLANTISI
        OleDbCommand kmt = new OleDbCommand();  // Burası kmt isimli bir komut tanım cümlesi.

Bağlantımızı tanımladık, komut cümlemizi yazdık. Şimdi sıra geldi Sıfırla butonumuzun klik işlevine. Butonun klik olayına kodlarımızı yazalım.

private void button1_Click(object sender, EventArgs e)
{
    try
    {
        if (MessageBox.Show("Bu işlemi gerçekleştirmek istiyor musunuz? Tüm verileriniz silinecek !!",
        "Dikat", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
        //messagebox ile kullanıcıyı uyardık.            
        {
            bag.Open();  //bağlantıyı açtık
            kmt.Connection = bag;  //bağlantıyı komutumuza tanımladık                 
            kmt.CommandText = "DELETE * FROM Kayit";  //Tablomuzdaki verileri sildik.
            OleDbCommand kmt2 = new OleDbCommand("ALTER TABLE Kayit Alter COLUMN ogrNo AUTOINCREMENT (1,1);", bag);
            //alter sorgusu ile otomatik sayıyı 1'den başlattık.
            kmt.ExecuteNonQuery();  //kmt komutumuzu çalıştırdık.
            kmt2.ExecuteNonQuery();  //kmt2 komutumuzu çalıştırdık.
            bag.Close();  //bağlantımızı kapattık.
            MessageBox.Show("İşlem gerçekleşti""Bilgi");  //kullanıcıya bilgi verdik.
        }
        else
        {
            //Kullanıcı hayırı tıklarsa hiçbir işlem yapmaması için else kısmını boş bıraktık.
        }
    }
    catch (Exception)
    {
        throw;
    }
    //Try catch ile hata varsa onu yakalamaya çalıştık.

Burada kodların yanına açıklamaları yaptım. Anlamadığınız bir yer olursa soru sorabilirsiniz.

Bu işlem sonunda seçtiğimiz tablonun içindeki veriler silinecek ve otomatik sayı değeri tekrar 1’den başlayacaktır.