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.
Alt Tablolarda İşlemler
Merhaba,
Kod içerisine Exit Sub yazarsanız, bu koddan itibaren durur, sonraki kodlar çalışmaz
Bu kod hatalı, " tblFaturayillar" şeklinde yazarsanız kod çalışmaz, çift tırnaklar arasında boşluk olmamalıdır.
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.
INSERT INTO KODUNDA, tablodaki alanlar yazıldıktan sonra parantez kapatılır. Parantez kapatılmadan önce virgül eklenmemez.
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ı
Kod içerisine Exit Sub yazarsanız, bu koddan itibaren durur, sonraki kodlar çalışmaz
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.
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.
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.
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ı
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
'" & 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.
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.
Yukarıda yazmış olduğunuz kod ile ilgili olarak; (Bu nedenle yeni konu açmadım. Yine de gerekiyorsa yeni konu açarım)
tblFaturayillar tablosuna sonradan "Yillikbedel" alanı ekledim. Aylık fatura işlendiğinde fatura tutarının "txtFaturatutari" , Faturayıillar tablosundaki Yillikbedel alanına eklenmesini istedim.
Bunun için 3. sıradaki kod satırını değiştirerek Toplamtutar değişkeni ekledim. Şu şekilde:
Dim Varmi, YilDegeri, Toplamtutar As Integer
25. Satırdaki if Varmi=0 then komutundan sonraki komutu şu şekil değiştirdim.
DoCmd.RunSQL "INSERT INTO tblFaturayillar (FirmaID, Yil,Yillikbedel) VALUES (" & rsSQL1.Fields("FirmaID") & ", '" & Me.akYil & "', '" & Me.txtFaturatutari & "')"
36. Satırdaki if Yildegeri>0 then satırından sonraki satırda Toplamtutar değerini tanımladım:
Yilliktoplam = Application.DLookup("Yillikbedel", "tblFaturayillar", "[FirmaID] = " & rsSQL1.Fields("FirmaID") & " And [Yil] = '" & Me.akYil & "'")
Yıllıktoplam ile form üzerindeki txtFaturatutarını nasıl toplatacağım?
Şu şekil yaptım
Application.DLookup("Yillikbedel", "tblFaturayillar", "[FirmaID] = " & rsSQL1.Fields("FirmaID") & " And [Yil] = '" & Me.akYil & "') = Yilliktoplam + Me.txtFaturatutari
Bütün noktalama işaretlerini denedim. Ama Syntax error hatası veriyor.
Yardımcı olursanız memnun olurum. Kolay gelsin.
tblFaturayillar tablosuna sonradan "Yillikbedel" alanı ekledim. Aylık fatura işlendiğinde fatura tutarının "txtFaturatutari" , Faturayıillar tablosundaki Yillikbedel alanına eklenmesini istedim.
Bunun için 3. sıradaki kod satırını değiştirerek Toplamtutar değişkeni ekledim. Şu şekilde:
Dim Varmi, YilDegeri, Toplamtutar As Integer
25. Satırdaki if Varmi=0 then komutundan sonraki komutu şu şekil değiştirdim.
DoCmd.RunSQL "INSERT INTO tblFaturayillar (FirmaID, Yil,Yillikbedel) VALUES (" & rsSQL1.Fields("FirmaID") & ", '" & Me.akYil & "', '" & Me.txtFaturatutari & "')"
36. Satırdaki if Yildegeri>0 then satırından sonraki satırda Toplamtutar değerini tanımladım:
Yilliktoplam = Application.DLookup("Yillikbedel", "tblFaturayillar", "[FirmaID] = " & rsSQL1.Fields("FirmaID") & " And [Yil] = '" & Me.akYil & "'")
Yıllıktoplam ile form üzerindeki txtFaturatutarını nasıl toplatacağım?
Şu şekil yaptım
Application.DLookup("Yillikbedel", "tblFaturayillar", "[FirmaID] = " & rsSQL1.Fields("FirmaID") & " And [Yil] = '" & Me.akYil & "') = Yilliktoplam + Me.txtFaturatutari
Bütün noktalama işaretlerini denedim. Ama Syntax error hatası veriyor.
Yardımcı olursanız memnun olurum. Kolay gelsin.
Kodu deneme imkanım maalesef olmadı
Application.DLookup("Yillikbedel", "tblFaturayillar", "[FirmaID] = " & rsSQL1.Fields("FirmaID") & " And [Yil] = '" & Me.akYil & "') = Yilliktoplam + Me.txtFaturatutari
Bu şekilde kod olmaz. Dlookup a böyle kod atayamazsınız.
Yilliktoplam = Dsum ("Yillikbedel", "tblFaturayillar", "[FirmaID] = " & rsSQL1.Fields("FirmaID") & " And [Yil] = '" & Me.akYil & "')
Üstteki kod tablodaki Yillikbedel alanının toplamıdır.
Toplam = Yilliktoplam + Me.txtFaturatutari
Bu şekilde de Yilliktoplam ile formdaki fatura tutarı toplanabilir.
Application.DLookup("Yillikbedel", "tblFaturayillar", "[FirmaID] = " & rsSQL1.Fields("FirmaID") & " And [Yil] = '" & Me.akYil & "') = Yilliktoplam + Me.txtFaturatutari
Bu şekilde kod olmaz. Dlookup a böyle kod atayamazsınız.
Yilliktoplam = Dsum ("Yillikbedel", "tblFaturayillar", "[FirmaID] = " & rsSQL1.Fields("FirmaID") & " And [Yil] = '" & Me.akYil & "')
Üstteki kod tablodaki Yillikbedel alanının toplamıdır.
Toplam = Yilliktoplam + Me.txtFaturatutari
Bu şekilde de Yilliktoplam ile formdaki fatura tutarı toplanabilir.
Yilliktoplam = Dsum ("Yillikbedel", "tblFaturayillar", "[FirmaID] = " & rsSQL1.Fields("FirmaID") & " And [Yil] = '" & Me.akYil & "')
kodunu ya da
Toplam = Yilliktoplam + Me.txtFaturatutari
nereye yazmalıyım desem gülünç olurmu ki
:)
kodunu ya da
Toplam = Yilliktoplam + Me.txtFaturatutari
nereye yazmalıyım desem gülünç olurmu ki
:)
Konuyu Okuyanlar: