AccessTr.neT

Tam Versiyon: otomatik kayıt yapmak?
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Sayfalar: 1 2
selamlar.
öncelikle okuyanların anlaması zor olacak belki, şimdiden kafa karışıklığı için özür dilerim. Img-grin

neyse soruma gelince, çalıştığım yerde gelirler ve giderlerin tutulması amacıyla bir db yapmaya soyundum. herşey gayet iyi gidiyordu ancak kullanacak kişi madem yaptın tam olsun çalışan personelin her ayın 01,15 ve 20 olmak üzere üç periyotta maaş aldığı bir durumda bu bilgilerin otomatik olarak her ay db eklenmesini istedi. giderlerin bir kalemide çalışanlar ve onların maaşlarıdır bilirsiniz.

benim derdimde burada başladı. tablo yapısı biraz karışık gibi duruyor onun için neler olduğunu açıklayarak devam ediyorum.
tbl_gelir_gider : gelir ve giderlerin tutulduğu tablo
tbl_gider_personel : giderin hangi personelden dolayı yapıldığını tutatn giderler ve personel ile baglantılı detay gider tablosu.
tbl_gelir_gider_baslik : gelir ve gider başlıkları tablosu.
tbl_gelir_gider_baslik_detay : gelir gider başlığına bağlı alt başlıklar ve datayları.
tbl_personel_ana : personel bilgileri.
tbl_personel_gorev : personelin görevlerinin tutulduğu tablo.

özetle problemim her program açıldığında çağıracağım "frm_personel_maas_oto" formunun çalışmaya başlaması ile bulunulan ayın kontrolünü yaparak gider tablosuna personelin 01, 15 veya 20 günlerinde maaş kayıtlarını görev tanımlarına göre otomatik olarak "tbl_gelir_gider" tablosuna ve hangi personelden dolayı yapıldığı bilgisinide "tbl_gider_personel" tablosuna eklemek. doğal olarak ilk düşüncem aktif personelin enson kayıt yapılan maaş kaydını tabloda bir alanda tutmak ve bunu karşılaştırmada kullanmak oldu. ancak bunu yazmak ile programa yaptırmak çok farklı işler.
velhasıl bunca kelamın ardından bir fikir, bir yol, bir örnek ile bana zor gibi görünen bu işin üstesinden nasıl gelebiliriz?

örnek db ekte bulabilirsiniz.

ilgilenen herkeze şimdiden teşekkür ederim.
benim eklediğim ekders programını incele orda ayı seçiyorsun ve ayın günlerine göre kişilerin ekderslerini otomotik dolduran bir uygulama var
Sayın gocebe;
Benimde üzerinde çalıştığım ve düşündüğüm bir konu. Düşüncemi gerçekleştirmek için her gün şeklini şemalini değiştiriyorum. Ama benim düşüncem manuel (buton) toplu kayıt. Manuel olsun yeter ki çalışır seviyeye getireyim. Sonuçta tek tek girmekten iyidir. Düşünsenize bir sürü kayıt. Siz de projenizin bu bölümünü çalıştırır seviyeye getirdiğinizde burada paylaşırsanız faydalı olacağının kanaatindeyim.
Teşekkürler.
sayın göçebe soruyu okuyunca bu soruyu gerçekten senin sorup sormadığını merak ettim senin yaptığın örneklere bakınca böylesine basit bir soruyu nasıl sorabiliyorsun hayret ettim yada sen bizim bildiğimiz göçebe değğilsin

neyse sorunun cevabına gelince kaç tabloya kayıt yapacaksan okadar ado nesnesi açarsın
ben şimdilik ik adet ile örnek veriyorum biriyle tbl_personel_ana tablosunu dolancağız diğeri ile tbl_gelir_gider tablosuna kayıt yapacağız

şimdi bensana kodun hepsini detaylı anlatacağım
Private Sub Etiket43_Click()
burda personel tablosundaki maaş zamanı ile içinde bulunduğumuz ayın ayı ve yılını birleştimek için bir taih alanı yarattık
Dim maastarihi As Date
burda rs diye bir ado nesnesi yarattık
Dim rs As New ADODB.Recordset
burda ise rs adlı ado nesnesinin personel tablosunu açmasını istedik
rs.Open "tbl_personel_ana", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
burdada rs1 diye bir alan yarattık
Dim rs1 As New ADODB.Recordset
burda ise rs1 adlı nesnenin gelir gider tablosunu açmasını istedik
rs1.Open "tbl_gelir_gider", CurrentProject.Connection, adOpenKeyset, adLockOptimistic

not =her iki tabloyuda aynı anda açtıkki birini dolanarak personeli alacağız ve her personel aldığımızda personele ait bilgileri açtığımız gider tablosuna kaydedeceğiz siz isterseniz aynı anda 10 tane tablo birden açıp hepsine birden her persoenlde personeli ekleye bilirsiniz dim rs ve rs.open kısmını kopyalamak sureti ile


işte burda personel tablosunu yukardan aşağı doğru gezmeye başlıyor kod
If rs.EOF <> True Then
Do
burda yukarda yarattığımız tarih alanına personel tablosundaki maas zamanını ve bu günün ayını ve yılını ekleyerek birleştirip bir tarih üretiyor
maastarihi = rs("maas_zamani") & "/" & Month(Date) & "/" & Year(Date)
işte burda açmış olduğumuz rs1 yani gider tablosuna her personelde ekleme yapıyoruz
rs1.AddNew
rs1("tarih") = maastarihi
rs1("tutar") = rs("maas")
rs1("baslik_bag") = rs("gorev_bag")
rs1("islem") = "BANKA"
rs1.Update
burda ise bir sonraki persoenl bir sonraki personel diye devam ettriyoruz
rs.MoveNext
Loop Until rs.EOF
End If
burda ise açmış olduğumuz tabloları yani bağlatıları kağatıyoruz yoksa bir başka yerde kullanmaya çalışsak bu tablo zaten açık olduğu için problem yaratacaktır
rs.Close
Set rs = Nothing
rs1.Close
Set rs1 = Nothing
End Sub



buda kodun temiz hali


Kod:
Private Sub Etiket43_Click()
Dim maastarihi As Date
Dim rs As New ADODB.Recordset
rs.Open "tbl_personel_ana", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Dim rs1 As New ADODB.Recordset
rs1.Open "tbl_gelir_gider", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
If rs.EOF <> True Then
        Do
maastarihi = rs("maas_zamani") & "/" & Month(Date) & "/" & Year(Date)
rs1.AddNew
rs1("tarih") = maastarihi
rs1("tutar") = rs("maas")
rs1("baslik_bag") = rs("gorev_bag")
rs1("islem") = "BANKA"
rs1.Update
rs.MoveNext
        Loop Until rs.EOF
    End If
rs.Close
Set rs = Nothing
rs1.Close
Set rs1 = Nothing
End Sub
bu kodu senin formundaki personel maaş toplamı etiketinin tıklamasına yaz
aslını isterseniz sorgular ile olan kayıtları almak eklenecekleri eklemek kolay işi biraz karıştıran görev tanımlarına göre gideri seçerek yaptırmakta.
db incelerseniz 01 de birden fazla görev tanımlı kişi maaş alıyor, 15 ve 20 aynı şekilde farklı görev tanımlı kişiler maaş alıyor, bu görev tanımı işin içinde olunca biraz gözüm korktu açıkçası. Img-grin
o önemli değil zaten sen personel ana tablosunda personelin görevini belirtmemişmisin bundan gari extra bir isteğin varsa ben anlamışsım eğer daha açıklayıcı olursan daha iyi olur
Sayfalar: 1 2