AccessTr.neT

Tam Versiyon: text kutusundaki sayıya göre alt tabloda kayıt açma
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
ana tablo ve alt tablomuz var
ana tablo alanları
adı
soy adı
bildiği yabancı dil sayısı
diye
ve alt tablomuz var
bildiği dillerin listesi

Ana tablomuzdaki bildiği yabancı dil sayısını atıyorum 3 girsek alt tabloda 3 satırı otomatik açarmı???
Tabii ki açar ancak kod yazmak gerekiyor tabii.

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 Img-grin
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
Güzel kod.Temiz,sade..
denemedım ama tşk ederım. denedımmı tekrar teşekkür ederım saol paylaşım için
denedımde örnek süper olmuş tekrar tşk ederım.. çok işime yarayacak