[VBA] Ardışık Sayı Sıralama
#1

.rar   Database1.rar (Boyut: 31,29 KB / İndirilme: 54)

Üstadlarım öncelikli olarak teşekkür ederek başlamak istiyorum.

Devlet Huzurevinde bakılan ücretli yaşlılardan oluşan vezne alındısı düzenlediğimiz bir Access Uygulamamız bulunmaktadır.
Yıl boyunca çeşitli nedenlerden dolayı kurumdan ayrılan yaşlı sakinlerimiz olmaktadır. Bu nedenle “Tbl_UcretliKisiKayıt” isimli tablomuzda “Durum” isimli seçmeli kutu alanımız var.

Yaşlı ayrılmış ise bu alanı tikliyoruz ve işlem yaparken bu isim diğer formlar veya raporlarda gözükmüyor. Yıl bitince de bu uygulamayı olduğu gibi arşivliyor ve saklıyoruz.

Ancak yeni yıla başlayınca bu ayrılanları Formdan (Silme Sorgusu ile) siliyoruz.

Kayıtarı silince de malumunuz 1,2,3,4 vb ardışık giden kayıtlar ayrılanın Kayıt No suna göre ardışık sıralama bozuluyor.10 veya 15 kişilik kayıt olsa manuel sıralamayı “Frm_UcretliKisiKayıt” formudan yapıyoruz. Ancak sayı 100 veya 150 civarında olunca bu işlemin zaman alacağı muhakkak.

Siz hocalarımdan istediğim ayrılanları sildikten sonra 1,2,4,5,7,8,9,10,12,18,20,21,25,27,28,29,32 vb şekilde sıralanan Kayıt No alanını ardışık olarak (120  yaşlı olduğu ve yaşlıların 20 sinin ayrıldığı varsayımı üzerine kalan 100 kişinin) 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18...100 şeklinde VBA kodu ile Buton üzerinden veya Sorgu ile sıralama imkanı varsa bu konuda engin bilgilerinizi ve yardımlarınızı bekliyor teşekkürlerimi sunuyorum.

İyi çalışmalar dilerim.



  Alıntı
Bu mesajı beğenenler:
#2
(19-10-2022, 14:09)Ahmet51 demiş ki: Üstadlarım öncelikli olarak teşekkür ederek başlamak istiyorum.

Devlet Huzurevinde bakılan ücretli yaşlılardan oluşan vezne alındısı düzenlediğimiz bir Access Uygulamamız bulunmaktadır.
Yıl boyunca çeşitli nedenlerden dolayı kurumdan ayrılan yaşlı sakinlerimiz olmaktadır. Bu nedenle “Tbl_UcretliKisiKayıt” isimli tablomuzda “Durum” isimli seçmeli kutu alanımız var.

Yaşlı ayrılmış ise bu alanı tikliyoruz ve işlem yaparken bu isim diğer formlar veya raporlarda gözükmüyor. Yıl bitince de bu uygulamayı olduğu gibi arşivliyor ve saklıyoruz.

Ancak yeni yıla başlayınca bu ayrılanları Formdan (Silme Sorgusu ile) siliyoruz.

Kayıtarı silince de malumunuz 1,2,3,4 vb ardışık giden kayıtlar ayrılanın Kayıt No suna göre ardışık sıralama bozuluyor.10 veya 15 kişilik kayıt olsa manuel sıralamayı “Frm_UcretliKisiKayıt” formudan yapıyoruz. Ancak sayı 100 veya 150 civarında olunca bu işlemin zaman alacağı muhakkak.

Siz hocalarımdan istediğim ayrılanları sildikten sonra 1,2,4,5,9,10,11,12,18 vb şekilde sıralanan Kayıt No alanını ardışık olarak (120  yaşlı olduğu ve yaşlıların 20 sinin ayrıldığı varsayımı üzerine kalan 100 kişinin ardışık olarak sıralanması) 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18...100 şeklinde VBA kodu ile Buton üzerinden veya Sorgu ile sıralama imkanı varsa bu konuda engin bilgilerinizi ve yardımlarınızı bekliyor teşekkürlerimi sunuyorum.

İyi çalışmalar dilerim.

Sayın Ahmet51 kayıtları niçin sildiğinizi anlamadım ama programlar zaten verileri depolamak için vardır. Eski verileriniz her zaman elinizin altında durur. Ama siz silerek devam ediyorsunuz anlaşılan. Kayıtları sildiğiniz vakit otomatik olarak verilen id kısmı birdaha 1 den başlamaz. Mesela bir hasta kaydettiniz numarası 86 olsun. Bu hastaya ait ödemeler veya yemek listesi gibi listeleri ise ayrı tabloda tutmanız gerektiği için bu tablolara kayıtları hastanın 86 olan id'si ile yaparsınız ki ilişkilendirilebilsin. Şimdi siz hasta tablosundan bu kaydı böylece silerseniz diğer tablolarda ilişkili olan kayıtlara erişemezsiniz. Silinmiş bile olsanız aşağıdaki gibi ORDER BY diyerek sıralayabilirsiniz.

ÖRNEK SORGU:
Visual Basic
  1. SELECT tbl_kullanici.kul_id, tbl_kullanici.adi, tbl_kullanici.soyadi
  2. FROM tbl_kullanici
  3. ORDER BY tbl_kullanici.kul_id;



Siz bu kayıtları sildikten sonra zaten tablodaki id sırasına göre kayıtlar duracaktır. dediğim gibi ilişkili tablolarınız olmaması durumunda bu dediğimi yapmanız gerekiyor. Aynı tabloyu sağ tıklayıp kopyalayın ve yapıştırın yapıştırırken yalnızca yapıyı seçin. aynı tablo yapısında bir tablo daha oluştu. ister içinden bütün verileri seçip bu tabloya yapıştırın isterseniz bir ekleme sorgusu ile önceki tablodan ekleyin. bu işlemin sonunda hastalara verilen id ler 1 den başlayacaktır. diğer tabloyu silerek yeni tabloyu aynı isimle kaydetmeyi unutmayın.



  Alıntı
Bu mesajı beğenenler:
#3
(19-10-2022, 14:22)alperalper demiş ki: Sayın Ahmet51 kayıtları niçin sildiğinizi anlamadım ama programlar zaten verileri depolamak için vardır. Eski verileriniz her zaman elinizin altında durur. Ama siz silerek devam ediyorsunuz anlaşılan. Kayıtları sildiğiniz vakit otomatik olarak verilen id kısmı birdaha 1 den başlamaz. Mesela bir hasta kaydettiniz numarası 86 olsun. Bu hastaya ait ödemeler veya yemek listesi gibi listeleri ise ayrı tabloda tutmanız gerektiği için bu tablolara kayıtları hastanın 86 olan id'si ile yaparsınız ki ilişkilendirilebilsin. Şimdi siz hasta tablosundan bu kaydı böylece silerseniz diğer tablolarda ilişkili olan kayıtlara erişemezsiniz. Silinmiş bile olsanız aşağıdaki gibi ORDER BY diyerek sıralayabilirsiniz.

ÖRNEK SORGU:
Visual Basic
  1. SELECT tbl_kullanici.kul_id, tbl_kullanici.adi, tbl_kullanici.soyadi
  2. FROM tbl_kullanici
  3. ORDER BY tbl_kullanici.kul_id;


Siz bu kayıtları sildikten sonra zaten tablodaki id sırasına göre kayıtlar duracaktır. dediğim gibi ilişkili tablolarınız olmaması durumunda bu dediğimi yapmanız gerekiyor. Aynı tabloyu sağ tıklayıp kopyalayın ve yapıştırın yapıştırırken yalnızca yapıyı seçin. aynı tablo yapısında bir tablo daha oluştu. ister içinden bütün verileri seçip bu tabloya yapıştırın isterseniz bir ekleme sorgusu ile önceki tablodan ekleyin. bu işlemin sonunda hastalara verilen id ler 1 den başlayacaktır. diğer tabloyu silerek yeni tabloyu aynı isimle kaydetmeyi unutmayın.


Üstadım ilginizden dolayı öncelikle teşekkür ederim. Her yıl bu işlemi aynı uygulamayı arşivleyip yeni yıl için kayıtlı yaşlılar hariç( ayrılan yaşlılar dahil) içeriği boşaltıp vezne alındısı tanzim etmeye yeniden başlıyoruz.

Kayıt No alanı "Otomatik Sayı" alanı olarak tanımlanmadı. "Sayı" olarak tanımlı.

Private Sub Form_Current()
If Me.NewRecord Then
On Error Resume Next
Me![Kayıt No].DefaultValue = Nz(DMax("[Kayıt No]", "Tbl_UcretliKisiKayıt"), 0) + 1
End If
End Sub

Her yeni kayıttan sonra formun Olay alanında "Geçerli Olduğunda" sekmesinde yukarıdaki kod ile sıra no verilmektedir.

Eğer mümkünse sıralama beklentimiz; yeni tablo veya benzeri işlemlerle uğraşmadan  bir "Buton" a tıklama ile ilgili vba kodu gerekiyor.



  Alıntı
Bu mesajı beğenenler:
#4
Örnek bir dosya yüklerseniz yardımcı olabilirim. Bu şekilde bir çözüm sunarım ancak işinizi görmeyebilir. İçinde gerçek isimler olmayan bir örnek eklermisiniz?



  Alıntı
Bu mesajı beğenenler:
#5
(20-10-2022, 09:54)alperalper demiş ki: Örnek bir dosya yüklerseniz yardımcı olabilirim. Bu şekilde bir çözüm sunarım ancak işinizi görmeyebilir. İçinde gerçek isimler olmayan bir örnek eklermisiniz?


Üstadım ilk mesajda örnek mevcut. Ben yinede 1 tane daha ekliyorum. İsimler gerçek değil.
Kayıtta 10 kişi var. 3 Kişiyi ayrıldı olarak işaretledim.

Tbl_UcretliKisiKayıt Sorgu'sunu çalıştırın o üç kişi silinecektir.

Ona göre yardımcı olursunuz.

Teşekkür ederim


.rar   Örnek.rar (Boyut: 30,52 KB / İndirilme: 58)



  Alıntı
Bu mesajı beğenenler:
#6
(20-10-2022, 10:42)Ahmet51 demiş ki:
(20-10-2022, 09:54)alperalper demiş ki: Örnek bir dosya yüklerseniz yardımcı olabilirim. Bu şekilde bir çözüm sunarım ancak işinizi görmeyebilir. İçinde gerçek isimler olmayan bir örnek eklermisiniz?


Üstadım ilk mesajda örnek mevcut. Ben yinede 1 tane daha ekliyorum. İsimler gerçek değil.
Kayıtta 10 kişi var. 3 Kişiyi ayrıldı olarak işaretledim.

Tbl_UcretliKisiKayıt Sorgu'sunu çalıştırın o üç kişi silinecektir.

Ona göre yardımcı olursunuz.

Teşekkür ederim


Saygı değer üstadlarım şu konuya bir el atabilirmisiniz.



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  [SORGU] iki sayı arasında nasıl sorgu yapılır? 26092009 3 7.671 15-12-2024, 08:42
Son Mesaj: halil.tefci
access-sql-18 [RAPOR] Kayıt Içerisindeki Miktar Alanındaki Sayı Kadar Rapora Ilgili Kaydı Rapora Kopyalama gurolk 12 1.002 29-07-2024, 12:01
Son Mesaj: dsezgin
  Sıralama evren89 2 321 08-07-2024, 10:03
Son Mesaj: evren89
  Gruplu Sıralama evren89 2 346 06-07-2024, 15:08
Son Mesaj: evren89
  Sayı Bulma evren89 1 337 16-06-2024, 01:49
Son Mesaj: dsezgin
  [SORGU] Sayı Formatı Bozulmadan Metinle Birleştirme atyaty 2 395 08-12-2023, 18:57
Son Mesaj: atyaty
  [VBA] Yıl Ay Sayı Sıralama Kodu Hakkında Ahmet51 6 792 29-05-2023, 09:31
Son Mesaj: halily
  [VBA] Ardışık Tarih Alanı 1 Er Artan Ahmet51 3 457 12-05-2023, 16:42
Son Mesaj: halily

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi