Skip to main content

AccessTr.neT


Alt Tablolarda İşlemler

Alt Tablolarda İşlemler

Çözüldü #1
Daha önceden böyle bir konu açmıştım. Aldığım yardıma göre başka bir çalışma yaptım. Ama kodları çalıştıramadım. Nerde hata yapıyorum? Bakabilir misiniz. Ben defalarca inceledim ama bişey göremedim. Örnek ektedir. Teşekkür ederim.
.rar faturadeneme.rar (Dosya Boyutu: 155,21 KB | İndirme Sayısı: 3)
Cevapla
#2
Merhaba, 
Kod içerisine Exit Sub yazarsanız, bu koddan itibaren durur, sonraki kodlar çalışmaz

Visual Basic Code
YilDegeri = Nz(DLookup("YilID", " tblFaturayillar", "[FaturaID] = " & rsSQL1.Fields("FaturaID") & " And [Yil] = '" & Me.akYil & "'"), 0)


Bu kod hatalı, " tblFaturayillar" şeklinde yazarsanız kod çalışmaz, çift tırnaklar arasında boşluk olmamalıdır.

Visual Basic Code
Varmi = Nz(DLookup("TelefonID", "tblTelefon", "[FaturaID] = " & rsSQL1.Fields("FaturaID") & " And [YilID] = " & YilDegeri & " And [Ay] = '" & Me.akAyadi), 0)


Kodun en sonunda tek tırnak var. Kod bloğu içerisinde başka hiç tek tırnak yok, tek tırnak ile açıldıysa yine tek tırnak ile kapatılmalıdır.

Visual Basic Code
Varmi = Nz(DLookup("TelefonID", "tblTelefon", "[FaturaID] = " & rsSQL1.Fields("FaturaID") & " And [YilID] = " & YilDegeri & " And [Ay] = '" & Me.akAyadi & "'"), 0)



INSERT INTO KODUNDA, tablodaki alanlar yazıldıktan sonra parantez kapatılır. Parantez kapatılmadan önce virgül eklenmemez.

SQL Code
INSERT INTO tblTelefon (........, Damgavergisineesastutar, Damgavergisiorani, Damgavergisi, Netodenen, Tutanakno, Tutanaktarihi, Odemeemrino, Odemeemritarihi,)


En sondaki virgül hatalı.

ekleme sorgusunda, tablodaki alanlar kadar, alanlar için atanan (values) değeri sayısı aynı olmalıdır. İlk kısımda 5 tane tablo alanı, ikinci kısımda (values) bu alanlar için belirlenen 4 veya 6 değer olmamalı, values kısmı da 5 olmalı. Koddaki ilk ekleme sorgusunda tablo için Faturatarihi alanı eklenmiş ancak bu alan içi değer içeren denetim eklenmemiş.

Kodun tamamı aşağıdaki gibi olmalı

Visual Basic Code
Dim strSQL1 As String
Dim rsSQL1 As ADODB.Recordset
Dim Varmi, YilDegeri As Integer
If IsNull(Me.akYil) Then
MsgBox "Yil Seçimi Yapınız"
    Exit Sub
ElseIf IsNull(Me.akAyadi) Then
MsgBox "Ay Seçimi Yapınız"
End If
'Exit Sub

strSQL1 = "SELECT * FROM tblFaturalar WHERE ((Faturacinsi)='Telefon');"

Set rsSQL1 = New ADODB.Recordset

rsSQL1.Open strSQL1, CurrentProject.Connection, adOpenKeyset, adLockOptimistic

DoCmd.SetWarnings True

Do While Not rsSQL1.EOF

    Varmi = Nz(DLookup("YilID", "tblFaturayillar", "[FaturaID] = " & rsSQL1.Fields("FaturaID") & " And [Yil] = '" & Me.akYil & "'"), 0)

    If Varmi = 0 Then

        DoCmd.RunSQL "INSERT INTO  tblFaturayillar (FaturaID, Yil) VALUES (" & rsSQL1.Fields("FaturaID") & ", '" & Me.akYil & "')"

    End If

    YilDegeri = Nz(DLookup("YilID", "tblFaturayillar", "[FaturaID] = " & rsSQL1.Fields("FaturaID") & " And [Yil] = '" & Me.akYil & "'"), 0)


    If YilDegeri > 0 Then

        Varmi = Nz(DLookup("TelefonID", "tblTelefon", "[FaturaID] = " & rsSQL1.Fields("FaturaID") & " And [YilID] = " & YilDegeri & " And [Ay] = '" & Me.akAyadi & "'"), 0)
    
        If Varmi = 0 Then
    
            DoCmd.RunSQL "INSERT INTO tblTelefon (FaturaID,YilID, Yil, Ay, Faturadonemibir, Faturadonemiiki,Faturatarihi, Sonodemetarihi, Faturano, Faturatutari, Vergilertoplami, Damgavergisineesastutar, Damgavergisiorani, Damgavergisi, Netodenen, Tutanakno, Tutanaktarihi, Odemeemrino, Odemeemritarihi) VALUES (" & rsSQL1.Fields("FaturaID") & ", " & YilDegeri & ",  '" & Me.akYil & "','" & Me.akAyadi & "','" & Me.txtFaturaDonemibir & "', '" & Me.txtFaturaDonemiiki & "', '" & Me.txtFaturatarihi & "', '" & Me.txtSonodemetarihi & "', '" & Me.txtFaturano & "', '" & Me.txtFaturatutari & "', '" & Me.txtVergilertoplami & "', '" & Me.txtDamgavergisineesastutar & "', '" & Me.txtDamgavergisiorani & "','" & Me.txtDamgavergisi & "','" & Me.txtNetodenen & "','" & Me.txtTutanakno & "','" & Me.txtTutanaktarihi & "','" & Me.txtOdemeemrino & "','" & Me.txtOdemeemritarihi & "')"
     
        Else
     
            DoCmd.RunSQL "delete * from tblTelefon where " & "[FaturaID] = " & rsSQL1.Fields("FaturaID") & " And [YilID] = " & YilDegeri & " And [Ay] = '" & Me.akAyadi & "'"
        
            DoCmd.RunSQL "INSERT INTO tblTelefon (FaturaID,YilID, Yil, Ay, Faturadonemibir, Faturadonemiiki,Faturatarihi, Sonodemetarihi, Faturano, Faturatutari, Vergilertoplami, Damgavergisineesastutar, Damgavergisiorani, Damgavergisi, Netodenen, Tutanakno, Tutanaktarihi, Odemeemrino, Odemeemritarihi) VALUES (" & rsSQL1.Fields("FaturaID") & ", " & YilDegeri & ",  '" & Me.akYil & "','" & Me.akAyadi & "','" & Me.txtFaturaDonemibir & "', '" & Me.txtFaturaDonemiiki & "', '" & Me.txtFaturatarihi & "','" & Me.txtSonodemetarihi & "', '" & Me.txtFaturano & "', '" & Me.txtFaturatutari & "', '" & Me.txtVergilertoplami & "', '" & Me.txtDamgavergisineesastutar & "', '" & Me.txtDamgavergisiorani & "','" & Me.txtDamgavergisi & "','" & Me.txtNetodenen & "','" & Me.txtTutanakno & "','" & Me.txtTutanaktarihi & "','" & Me.txtOdemeemrino & "','" & Me.txtOdemeemritarihi & "')"
        
        End If

End If

DoCmd.SetWarnings False

rsSQL1.MoveNext

Loop

DoCmd.SetWarnings True


rsSQL1.Close
Set rsSQL1 = Nothing

Me.afTelefon.Requery

"Boş Örnek Eklerim, Yapıp Verirler" demeyin, örneğinizi hazırlayın.
Komplike kod talebiniz var ise İletişim bağlantısından bize ulaşın. 
Cebelleşmezsen Öğrenemezsin. 
Cevapla
#3
'" & Me.akAyadi & "'"
ifadesinin sağında ve solunda & işareti ne anlama geliyor?

rsSQL1.Open strSQL1, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Araştırdığımda "Varsayılan olarak, ADO kayıt kümeleri eklemeler ve silmelere izin vermeyen bir adLockReadOnly kilit türüyle açılır. Bu nedenle adLockOptimistic kullanıyoruz. " bilgisini öğrendim. Fakat "adLockPessimistic" kodu da kullanılabilir diyor. İkisinin arasındaki fark nedir?
Bir de neden adOpenkeyset var?

Bunların dışında eklemiş olduğum kod dizinindeki açıklamlarınızı incledim ve hatalarımı gördüm. Teşekkür ederim. iyi çalışmalar.
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task