Forumda daha önce yapılmıştı böyle bir örnek diye hatırlıyorum ama tüm aramalarıma rağmen bulamadım.
Bende yeniden yazdım.
Siz sadece yeni kayıt eklerken açsın diye düşünmüşsünüz, peki önce 3 yazıp daha sonra "aaa tüh yanlış oldu" deyip 5 yazmak isterseniz veya tam tersi 5 yazıp sonra "aaa hay allah yanlış yazmışım" deyip 3 olarak düzeltmek isterseniz noolacak?
Neyse, ben onları da düşündüm
Buyrun.
Kod:
Private Sub Form_AfterUpdate()
Dim StrSQL, i, KayitSayisi
'-----------------------------------------------------------------------
' Burada ADODB kısmına hata veriyorsa, Menüde Araçlar, Referanslar kısmından gelen listeden
' "Microsoft Activex Data Object 2.x Library" seçilmelidir.
'-----------------------------------------------------------------------
Dim RS As ADODB.Recordset
Set RS = New ADODB.Recordset
StrSQL = "Select * From Tablo2 Where KAYITNO=" & Me.KAYITNO
RS.Open StrSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
'Yeni kayıtsa
If Me.NewRecord Then
'Girilen Yabancı Dil Sayısı kadar kayıt açılıyor.
For i = 1 To Me.YBNC_DIL_SAYISI
RS.AddNew
RS("KAYITNO") = Me.KAYITNO
RS.Update
Next i
Else
'Eski kayıtta güncelleme yapılıyorsa,
'öncelikle tablo2'de daha önce kaç kayıt olduğuna bakılıyor
KayitSayisi = RS.RecordCount
'Sayı arttıysa, artan kadar kayıt açılıyor.
If Me.YBNC_DIL_SAYISI > KayitSayisi Then
For i = 1 To (Me.YBNC_DIL_SAYISI - KayitSayisi)
RS.AddNew
RS("KAYITNO") = Me.KAYITNO
RS.Update
Next i
End If
'Sayı azaldıysa, fazla kayıtlar siliniyor.
If Me.YBNC_DIL_SAYISI < KayitSayisi Then
For i = 1 To KayitSayisi
If i > Me.YBNC_DIL_SAYISI Then
RS.Delete
End If
RS.MoveNext
Next i
End If
End If
'Açılan RecordSet kapatılıyor
RS.Close
'Alt Form Güncelleniyor
Me.Altform.Requery
'-----------------------------------------------------------------------
End Sub