eksik sayıyı sıra olarak atama - Baskı Önizleme +- AccessTr.neT (https://accesstr.net) +-- Forum: Microsoft Access (https://accesstr.net/forum-microsoft-access.html) +--- Forum: Access Cevaplanmış Soruları (https://accesstr.net/forum-access-cevaplanmis-sorulari.html) +--- Konu Başlığı: eksik sayıyı sıra olarak atama (/konu-eksik-sayiyi-sira-olarak-atama.html) |
eksik sayıyı sıra olarak atama - lemoncher2 - 06/08/2021 Merhaba iyi günler Bir tablo üzerinde birincil anahtar olarak otomatik sayı verilen bir sütunum var. Her yeni kayıtta otomatik olarak bir sayı veriyor. Ancak veri otomatik sayı ve birincil anahtar olması sebebi ile tablodan silenen herhangi bir satırın numarasında tekrardan kayıt yapmıyor. Ben bu durumu aşmak için şöyle bir çözüm düşündüm. Yeni bir sutun açayım ve bu sutuna form uzerinde kayıt yaptığım esnada kaydet butonunun click özelliğine bu sütunu sayıp sıradan ilk sayıyı vermesini ve eğer arada silinen bir sayı var ise yani eksik olan bir sayı varsa yeni kayıta bu sayıyı vermesini istiyorum. Bunun için Vba kodunda ne yapabilirim yardımlarınız için teşekkür ederim. RE: Otomatik Sayo - berduş - 06/08/2021 bildiğim pratik bir yol yok belki döngü ile 1 ile en büyük kayıt No arasında ilgili sayının olup olmadığına bakılabilir yada her kayıt silme işleminden sonra silinen no ayrı bir tabloya kaydedilip en küçük değer çekilebilir ama bence sıralı bir sütuna ihtiyaç yok ve fazladan yapılacak her işlem VTnin performansını olumsuz etkiler. neden sıralı bir sütuna ihtiyaç duyuyorsunuz? RE: Otomatik Sayo - lemoncher2 - 06/08/2021 (06/08/2021, 00:27)berduş yazdı: bildiğim pratik bir yol yok belki döngü ile 1 ile en büyük kayıt No arasında ilgili sayının olup olmadığına bakılabilir yada her kayıt silme işleminden sonra silinen no ayrı bir tabloya kaydedilip en küçük değer çekilebilir ama bence sıralı bir sütuna ihtiyaç yok ve fazladan yapılacak her işlem VTnin performansını olumsuz etkiler. Kayıt numarası eklemem gerekiyor ve bu numaranında kayıt silinse bile atlamaması gerekiyor. Silinen kayıdın numarasını yeni katıda verip bir sonraki kayıtda da kaldığı yerden devam etmesi gerekiyor. Eksiksiz kayıt numarasına ihtiyaç duyduğum için. Verilen bu kayıt numarasınında sonradan değişmemesi gerekli(her kayıttan baştan numara verdireceğimiz bir kod işime yaramaz yani) Public Function Yok() Dim Kayit as recordset,Sayac as long set Kayit=cuurentdb.openrecordset("Select Kimlik from TabloAdi order by Kimlik") Kayit.movefirst do until Kayit.EOF Sayac=Sayac+1 if sayac<>Kayit!Kimlik then Yok=Sayac:exit do Kayit.Movenext loop Kayit.close:Set Kayit=nothing end function Böyle bir kod buldum ama işe yaratıp yaramayacağından emin değilim RE: Otomatik Sayo - berduş - 06/08/2021 yukardaki kod da döngü mantığını kullanmış, yani işe yarar gibi görünüyor ama buradaki Kimlik otomatik tam sayı olan kimlik mi sizin oluşturduğunuz kimlik mi? bir de az kayıtta yada düşük nolar silindiğinde pratik olabilir ama 100 bin kayıtta 99.998ci kayıt silinmişse zaman almaz mı döngü? RE: Otomatik Sayo - lemoncher2 - 06/08/2021 Bunu bilmiyorum kodu diğer forumdan aldım orada da bir açıklama yoktu. Sanırım bizim oluşturduğumuz sütun. Kodu çalıştıramadım siz çalıştırabilirmisiniz rica etsem Max kayıt satısı 10.000 olacak bir tablo. 10 bin olma ihtimali de çok düşük RE: Otomatik Sayo - berduş - 06/08/2021 bunu (06/08/2021, 00:56)lemoncher2 yazdı: Kodu çalıştıramadım siz çalıştırabilirmisiniz rica etsembunu yapmak için yeni bir VT , tablo, form oluşturmam, kayıt eklemem .... gerek siz çalışmanızın ilgili kısmını ekleyin öyle deneyelim |