Skip to main content

AccessTr.neT


Access Kod birleştirme İki ayrı tablo denetleme

Access Kod birleştirme İki ayrı tablo denetleme

Çözüldü #1
Merhabalar arkadaşlar..
Sorun şu Alt form üzerinden ceza girişi yapılmaktadır.
Girilen ceza maddeleri ise tblİPTALMADDELERİ ve tblMENNEDENLERİ adlı iki tablodan denetlenerek bu tablolarda olan maddeler varsa bana uyarı vererek gereken tablolara ayrıca altform üzerinden kayıt yapılmaktadır.
Ancak Kodlar da da göreceğiniz üzere sadece birini denetlemekte diğerini es geçiyor.
Or işlecini kullanmayı denedim ozaman ikisine de uyarı veriyor ancak sadece bir tabloya kayıt giriyor.Ben uyarı hangi yönde ise o tabloya kayıt yapmak istiyorum...
Şuan sadece tblİPTALMADDELERİ ni denetliyor tblMENNEDENLERİ ni denetlemiyor...

İnşallah anlata bilmişimdir...
.rar Deneme.rar (Dosya Boyutu: 66,35 KB | İndirme Sayısı: 27)
Kaplumbağa ya dikkat et...
Sadece  başını çıkartıp risk aldığında ilerleyebiliyor...
Son Düzenleme: 02/02/2009, 13:18, Düzenleyen: Puletin.
Cevapla
Çözüldü #2
Bu şekilde deneyin;
Önce tblİPTALMADDELERİ kontrol ediliyor ve varsa sorularak yazılıyor.
Sonra tblMENNEDENLERİ kontrol ediliyor ve varsa sorularak yazılıyor.

Kod:
Private Sub Maddesi_AfterUpdate()
TL = DLookup("[Miktarı]", "tblMADDELER", "[Maddesi]='" & Me.Maddesi & "'")
Puani = DLookup("[Puanı]", "tblMADDELER", "[Maddesi]='" & Me.Maddesi & "'")

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

Dim SD, C As String
Dim stringCliteria As String

SD = Me.Maddesi.Value

stringCliteria = "[Maddesi]=" & "'" & SD & "'"

If DCount("*", "tblİPTALMADDELERİ", "Maddesi='" & Me.Maddesi & "'") > 0 Then
    C = MsgBox("DİKKKAT *" & SD & " * ADINDA *" & vbCr & " DEVAM ", vbYesNo + _
        vbQuestion, "DİKKAT")
    If C = vbYes Then
        DoCmd.RunSQL _
            "insert into tblBELGEİPTAL SELECT * from tblVERİLER where (tblVERİLER.Ceza_ID=Forms![frmCEZALAR]![frmCEZAGİR].form.[Ceza_ID])"
        MsgBox "İPTAL KAYDI YAPILDI"
    End If
End If

If DCount("*", "tblMENNEDENLERİ", "Maddesi='" & Me.Maddesi & "'") > 0 Then
    C = MsgBox("DİKKKAT *" & SD & " * ADINDA *" & vbCr & " DEVAM ", vbYesNo + _
        vbQuestion, "DİKKAT")
    If C = vbYes Then
        DoCmd.RunSQL _
            "insert into tblARACMEN SELECT * from tblVERİLER where (tblVERİLER.Ceza_ID=Forms![frmCEZALAR]![frmCEZAGİR].form.[Ceza_ID])"
        MsgBox "KAYIT YAPILDI"
    End If
End If
End Sub

Eğer siz önce tblİPTALMADDELERİ ni kontrol etsin ve varsa sorularak yazsın, yoksa gidip tblMENNEDENLERİ ni kontrol etsin istiyorsanız,
aşağıdaki şekilde yapın.

Kod:
Private Sub Maddesi_AfterUpdate()
TL = DLookup("[Miktarı]", "tblMADDELER", "[Maddesi]='" & Me.Maddesi & "'")
Puani = DLookup("[Puanı]", "tblMADDELER", "[Maddesi]='" & Me.Maddesi & "'")

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

Dim SD, C As String
Dim stringCliteria As String

SD = Me.Maddesi.Value

stringCliteria = "[Maddesi]=" & "'" & SD & "'"

If DCount("*", "tblİPTALMADDELERİ", "Maddesi='" & Me.Maddesi & "'") > 0 Then
    C = MsgBox("DİKKKAT *" & SD & " * ADINDA *" & vbCr & " DEVAM ", vbYesNo + _
        vbQuestion, "DİKKAT")
    If C = vbYes Then
        DoCmd.RunSQL _
            "insert into tblBELGEİPTAL SELECT * from tblVERİLER where (tblVERİLER.Ceza_ID=Forms![frmCEZALAR]![frmCEZAGİR].form.[Ceza_ID])"
        MsgBox "İPTAL KAYDI YAPILDI"
    End If
Else
    If DCount("*", "tblMENNEDENLERİ", "Maddesi='" & Me.Maddesi & "'") > 0 Then
        C = MsgBox("DİKKKAT *" & SD & " * ADINDA *" & vbCr & " DEVAM ", vbYesNo + _
            vbQuestion, "DİKKAT")
        If C = vbYes Then
            DoCmd.RunSQL _
                "insert into tblARACMEN SELECT * from tblVERİLER where (tblVERİLER.Ceza_ID=Forms![frmCEZALAR]![frmCEZAGİR].form.[Ceza_ID])"
            MsgBox "KAYIT YAPILDI"
        End If
    End If
End If
End Sub

Bildiğini bilenin arkasından git, bildiğini bilmeyeni uyar, bilmediğini bilene öğret, bilmediğini bilmeyenden kaç.
Konfüçyüs
Cevapla
Çözüldü #3
Sayın Seruz hocam , ilginiz için çok çok teşekkürler
İkiside işimi görüyor..
İki gündür uğraşıyordum..
Anladığım kadarı ile benim hatam "End if" olayını yanlış yerde kullanmamdan kaynaklanmış galiba..

Hocam birde Alt forma veri girişini 3 adet le sınırlama yapa bilirmiyiz.
Herceza için maksimumu 3 adet giriş olacak şekilde

Tekrar teşekkürler
Kaplumbağa ya dikkat et...
Sadece  başını çıkartıp risk aldığında ilerleyebiliyor...
Son Düzenleme: 02/02/2009, 14:46, Düzenleyen: Puletin.
Cevapla
Çözüldü #4
Alt forma metin15 adında bir metin kutusu ekledim. Bu metin kutusuna
Kod:
=say(Ceza_ID)
yazarak alt formdaki toplamı aldım. Ve bu formun geçerli olduğunda olayına aşağıdaki kodları yazdım:

Kod:
If Metin15 >= 3 Then
Me.Ceza_ID.Locked = True
Me.Türü.Locked = True
Me.Maddesi.Locked = True
Me.TL.Locked = True
Me.Puani.Locked = True


Else

Me.Ceza_ID.Locked = False
Me.Türü.Locked = False
Me.Maddesi.Locked = False
Me.TL.Locked = False
Me.Puani.Locked = False

End If

Böylece metin15=3 veya daha fazlası olursa veri girişi kitlenmiş oluyor. Tabii çok basit bir yöntem ama geliştirebilirsiniz.

Kolay gelsin.. Örneği de ekledim..
Bu arada eğer kodu şu şekle dönüştürürseniz

Kod:
Form.AllowAdditions = False
Form.AllowDeletions = False
Form.AllowEdits = False

o zaman da teker teker değil topyekün olarak forma yeni kayıt eklemek, silmek veya düzenlemek mümkün olmayacaktır. Ama mesela düzenleme yapmak istersiniz ama yeni eklenmesin ve silinmesin isterseniz son satırı kullanmayın. İlk satır yeni kayıt ortadaki satır ise silme içindir.

Kolay gelsin.
.rar Deneme22.rar (Dosya Boyutu: 83,92 KB | İndirme Sayısı: 64)
İnadına, ille de Accesstr.net...
Cevapla
Çözüldü #5
Teşekkür Ediyorum Sayın mehmetdemiral ...
Elinize sağlık.....
Kaplumbağa ya dikkat et...
Sadece  başını çıkartıp risk aldığında ilerleyebiliyor...
Cevapla
Çözüldü #6
Rica ederim. Benim için zevkti..
İnadına, ille de Accesstr.net...
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da