eksik sayıyı sıra olarak atama

1 2 3 4 5 6 7
09/08/2021, 21:11

berduş

Her yeni kayıda yılın eklenmesi yeterli olur bence ama eski kayıtlar için de yıl güncellemesi gerekecek 1 defa yıl güncellemesi yapıldıktan sonra yeni kayıtlarda bu sorun olmaz.
09/08/2021, 21:39

lemoncher2

(09/08/2021, 21:11)berduş yazdı: Her yeni kayıda yılın eklenmesi yeterli olur bence ama eski kayıtlar için de yıl güncellemesi gerekecek 1 defa yıl güncellemesi yapıldıktan sonra yeni kayıtlarda bu sorun olmaz.

Eski kayıtların yıl güncellenmesi de yapılmaması gerekiyor ama hangi yıl olarak kaydedilmişse o şekilde kalması gerekmekte
09/08/2021, 22:05

berduş

kast ettiğim o değil yanılmıyorsam dosyanızdaki tabloda yer alan kayıtların henüz yıl alanı yok yıl alanı olmayan eski kayıtlar için bir defaya mahsus olarak düşünmüştüm ama dosyanızın son halini ekleyin ona göre bir çözüm bulmaya çalışırız kodda sadece recordseti tanımlarken bu yılın kayıtlarını çağırırsak sorun çıkmaz diye düşünüyorum

konunuz tekrar sorulara taşınmıştır
dosyanızı ekleyebilirsiniz.
09/08/2021, 22:06

lemoncher2

(09/08/2021, 22:05)berduş yazdı: kast ettiğim o değil yanılmıyorsam dosyanızdaki tabloda yer alan kayıtların henüz yıl alanı yok yıl alanı olmayan eski kayıtlar için bir defaya mahsus olarak düşünmüştüm ama dosyanızın son halini ekleyin ona göre bir çözüm bulmaya çalışırız kodda sadece recordseti tanımlarken bu yılın kayıtlarını çağırırsak sorun çıkmaz diye düşünüyorum

Sizin çalışmanıza bahsettiğim şekilde bir ekleme yaptım. Yeni Kayıt Butonuna tıklayıp deneyebilirmisiniz.
09/08/2021, 23:24

berduş

tarihi 'Format(Date, "yyyy") yerine aşağıdaki gibi de ekleyebilirsiniz aynı şey
Me.Metin481 = Year(Date)
modül kodunu aşağıdaki gibi düzenleyip dener misiniz?
Function Yok() As Long
Dim Kayit As Recordset, Sayac As Long
Set Kayit = CurrentDb.OpenRecordset("Select Rapor_No_Dosya from Tablo1 where (Rapor_No_Dosya)>0 and [Rapor_Yili]=" & Year(Date) & " order by Rapor_No_Dosya") '<== değişen

If Kayit.RecordCount = 0 Then Yok = 1: Exit Function
Kayit.MoveFirst
Sayac = 0
Do Until Kayit.EOF
    Sayac = Sayac + 1
    If Sayac <> Nz(Kayit(0), 0) Then Yok = Sayac: Exit Do
    Kayit.MoveNext
Loop
If Yok = 0 Then Yok = Kayit.RecordCount + 1 '<==eklenen
Kayit.Close: Set Kayit = Nothing
End Function
09/08/2021, 23:35

lemoncher2

(09/08/2021, 23:35)lemoncher2 yazdı: [quote="berduş" pid="181683" dateline="1628540679"]
tarihi 'Format(Date, "yyyy") yerine aşağıdaki gibi de ekleyebilirsiniz aynı şey
Me.Metin481 = Year(Date)
modül kodunu aşağıdaki gibi düzenleyip dener misiniz?
Function Yok() As Long
Dim Kayit As Recordset, Sayac As Long
Set Kayit = CurrentDb.OpenRecordset("Select Rapor_No_Dosya from Tablo1 where (Rapor_No_Dosya)>0 and [Rapor_Yili]=" & Year(Date) & " order by Rapor_No_Dosya") '<== değişen

If Kayit.RecordCount = 0 Then Yok = 1: Exit Function
Kayit.MoveFirst
Sayac = 0
Do Until Kayit.EOF
    Sayac = Sayac + 1
    If Sayac <> Nz(Kayit(0), 0) Then Yok = Sayac: Exit Do
    Kayit.MoveNext
Loop
If Yok = 0 Then Yok = Kayit.RecordCount + 1 '<==eklenen
Kayit.Close: Set Kayit = Nothing
End Function

Sanırım çalışıyor şuan hocam elinize sağlık bilgisayarın tarihini değiştirmek suretiyle deneyebilirim sanırım

kaydet butonunda If Nz(Me.Rapor_No_Dosya, 0) = 0 Then Me.Rapor_No_Dosya = Yok  bu kodu kullanıyorum
Şimdi denedim de rapor_No_Dosya sayılarını aynı sayılar olacak şekilde veriyor.

Tablo1 deki tüm kayıtları sildim. Form üzerinden 6 adet kayıt ekledim. Tablo1 üzerinden 3. kaydı sildim. Form üzerinden 6. kaydı seçip değiştir diyip tekrar işlem yapmadan kaydet dediğimde eksik sayıyı sıra olarak atamadı
1 2 3 4 5 6 7