Sayın mehmetdemiral;
makbuz lazer adlı rapor çalıştırılıp rapor alındıktan sonra kapatıldığında sırası ile makbuz ekle ve ödeme sil surguları çalışıyor.
Ödemeleri siliyorum çünkü aslolan serbest meslek makbuzunun ödeme anında kesilip müşteriye verilmesidir. bu olayda hiç bir şekilde cari hesap (Borç-alacak) mantığı işlemez. Forumda üstatlarımdan öğrendiğim şeylerden biri de gereksiz verilerden kaçınıp veri tabanını şişirmemek. Kısacası ödemeler tablosundaki kayıtların ömrü ilgili makbuzun kesilmesi ile sona eriyor. Neyse buralara takılmayalım.
Sorunum şu ki Makbuz lazer raporunda yer alan MakbuzNo değerini (bu raporda oluşan) makbuzlar tablosuna nasıl kaydederim.
Verdiğiniz örneği inceliyorum. İlginize teşekkürler.
Fatura no hakkında
Sn mantars alternatif çözüm birleştirme sorgusu yapabilirsiniz. Saygılar...
Bilgi paylaşıldıkça çoğalır....
Her engel, yaşam koşullarınızı daha iyileştirecek bir fırsattır.
Access için her zaman lazım olacak konu başlıkları listesi
Her engel, yaşam koşullarınızı daha iyileştirecek bir fırsattır.
Access için her zaman lazım olacak konu başlıkları listesi
Alıntı:Forumda üstatlarımdan öğrendiğim şeylerden biri de gereksiz verilerden kaçınıp veri tabanını şişirmemek. Kısacası ödemeler tablosundaki kayıtların ömrü ilgili makbuzun kesilmesi ile sona eriyor. Neyse buralara takılmayalım.
Sayın mantars, bu sözleriniz için yorum yok diyebilirim sadece. Sonuçta sizin programınız, siz hazırlıyorsunuz. Ama ben halen programınızın çalışma mantığı ile ilgili cevabı bekliyorum. Yukarda madde madde yazdığım çalışma sistemi, doğru mu? Yoksa yanlış mı çalışıyorum. Çok basitleştirerek anlatır mısınız. İnanın gündüzleri işyerinde o kadar yoğun teknik servis işiyle uğraşıyorum ki, akşam kafayı toplamak zor. Bir de evde net yok. Şu anda net olan bir yerde iftardayım, burda da Access yok) Şansın bu kadarı... Siz tane tane, formların adlarıyla şu işi bir gösterinm bana. Yaşlı adam olunca biraz geç anlıyor insan) Kusura bakmayın...
Bunları şunun için yazıyorum: Siz "makbuz lazer adlı rapor çalıştırılıp rapor alındıktan sonra kapatıldığında sırası ile makbuz ekle ve ödeme sil surguları çalışıyor." demişsiniz ya, ben o raporu direk açamıyorum. Tarih aralığı falan istiyor ama girilemiyor.
İnadına, ille de Accesstr.net...
Sayın mehmetdemiral;
ikinci örnek dosyamdaki uygulamamda sadece sorunumun çözülmesi için gerekli olduğuna inandığım form, rapor vb. bulunduğu için çalışma mantığını anlamamış olabilirsiniz.
Birinci mesajımdaki örnek üzerinden anlatayım o halde.
1) Başlangıçta açılan denetim formu aracılığı ile Serbest meslek mensubu bilgileri (Faturayı kesecek olan firma gibi algılayabiliriz) girilir ve form kapatılır.
2) Kanuni oran bilgileri kontrol edilir ve varsa düzeltme yapılarak o form da kapatılır.
3) Müşteri işlemleri bölümünden müşteri kaydı yapılır. veya üzerinde bir değişiklik varsa yapılır.
4) Müşteri işlemleri bölümünde yer alan müşteri ödeme taahüdü girişi bölümünden ilgili müşterilerin ilgili ödeme bilgileri kaydedilir. (Buradaki ödeme bilgileri müşterinin o ödemesini yaptığını deyil ödeme taahüdünde bulunduğunu gösterir. Bu yüzden ödeme bilgileri girişinde tahsil edildi onay kutusu bulunmakta.)
5) Fatura (Makbuz) kesileceği zaman ana menüden makbuz kesme işlemleri bölümüne girilir. Kesilecek makbuz belirle bölümünden Makbuz belirle formu çalıştırılır. bu form tahsil edilmeyenler sorgusu aracılığı ile ödemeler tablosunda tahsil edildi onay kutusu işaretli olmayan ve verilen tarih aralığındaki ödeme kayıtlarını getirir. makbuz belirle formu açıldığı halde tarih alanlarına girilemiyor ise MSCOMCT2.OCX ile ilgili kayıt işlemi yapılır. (Ben de bu kayıt işlemini bu forumdan öğrendim.) Faturası kesilecek ödemelerin tahsil edildi onay kutuları işaretlenerek bu form kapatılır.
6) Lazer yazıcıdan makbuz kesme bölümüne girilir. Bu bölüme girilince makbuz lazer raporu açılır.
6.1) Makbuz lazer raporunun açıldığında olayına bağlı olarak RaporTarihAraligi parametre formu aracılığı ile ödemelersorgu sorgusuna dayalı olarak verilen iki tarih arasındaki ödeme bilgileri, müşteri bilgileri vb. faturanın hesaplanması ve kesimi ile ilgili bilgilere dayanarak kesilecek faturalar (makbuzlar) raporlanır.
6.2) Makbuz lazer raporunun kapandığında olayına bağlı olarak makbuz ekle makrosu öncelikle makbuz ekle ekleme sorgusunu çalıştırır. Bu sorgu ilgili rapordaki bilgileri makbuzlar tablosuna ekler. (sorunum olan ilgili makbuz numarası alanı hariç)
6.3) Makbuz lazer raporunun kapandığında olayına bağlı olarak makbuz ekle makrosu ödeme sil silme sorgusunu çalıştırır. Bu sorgu ilgili rapordaki bilgileri ödemeler tablosundan siler.
Programın işleyişi kısaca bu hocam. Bu arada programcılık mantığı yönünden sizlere ters gelen hatalarım muhakkak vardır, affola.
Tüm hocalarıma allah sabırlar versin. Çünkü bu mesajları okumak bile önemli bir vakit ayırmadır, kafa patlatmaktır, emek vermektir. bunun için paylaşımda bulunan tüm arkadaşlara teşekkürler.
ikinci örnek dosyamdaki uygulamamda sadece sorunumun çözülmesi için gerekli olduğuna inandığım form, rapor vb. bulunduğu için çalışma mantığını anlamamış olabilirsiniz.
Birinci mesajımdaki örnek üzerinden anlatayım o halde.
1) Başlangıçta açılan denetim formu aracılığı ile Serbest meslek mensubu bilgileri (Faturayı kesecek olan firma gibi algılayabiliriz) girilir ve form kapatılır.
2) Kanuni oran bilgileri kontrol edilir ve varsa düzeltme yapılarak o form da kapatılır.
3) Müşteri işlemleri bölümünden müşteri kaydı yapılır. veya üzerinde bir değişiklik varsa yapılır.
4) Müşteri işlemleri bölümünde yer alan müşteri ödeme taahüdü girişi bölümünden ilgili müşterilerin ilgili ödeme bilgileri kaydedilir. (Buradaki ödeme bilgileri müşterinin o ödemesini yaptığını deyil ödeme taahüdünde bulunduğunu gösterir. Bu yüzden ödeme bilgileri girişinde tahsil edildi onay kutusu bulunmakta.)
5) Fatura (Makbuz) kesileceği zaman ana menüden makbuz kesme işlemleri bölümüne girilir. Kesilecek makbuz belirle bölümünden Makbuz belirle formu çalıştırılır. bu form tahsil edilmeyenler sorgusu aracılığı ile ödemeler tablosunda tahsil edildi onay kutusu işaretli olmayan ve verilen tarih aralığındaki ödeme kayıtlarını getirir. makbuz belirle formu açıldığı halde tarih alanlarına girilemiyor ise MSCOMCT2.OCX ile ilgili kayıt işlemi yapılır. (Ben de bu kayıt işlemini bu forumdan öğrendim.) Faturası kesilecek ödemelerin tahsil edildi onay kutuları işaretlenerek bu form kapatılır.
6) Lazer yazıcıdan makbuz kesme bölümüne girilir. Bu bölüme girilince makbuz lazer raporu açılır.
6.1) Makbuz lazer raporunun açıldığında olayına bağlı olarak RaporTarihAraligi parametre formu aracılığı ile ödemelersorgu sorgusuna dayalı olarak verilen iki tarih arasındaki ödeme bilgileri, müşteri bilgileri vb. faturanın hesaplanması ve kesimi ile ilgili bilgilere dayanarak kesilecek faturalar (makbuzlar) raporlanır.
6.2) Makbuz lazer raporunun kapandığında olayına bağlı olarak makbuz ekle makrosu öncelikle makbuz ekle ekleme sorgusunu çalıştırır. Bu sorgu ilgili rapordaki bilgileri makbuzlar tablosuna ekler. (sorunum olan ilgili makbuz numarası alanı hariç)
6.3) Makbuz lazer raporunun kapandığında olayına bağlı olarak makbuz ekle makrosu ödeme sil silme sorgusunu çalıştırır. Bu sorgu ilgili rapordaki bilgileri ödemeler tablosundan siler.
Programın işleyişi kısaca bu hocam. Bu arada programcılık mantığı yönünden sizlere ters gelen hatalarım muhakkak vardır, affola.
Tüm hocalarıma allah sabırlar versin. Çünkü bu mesajları okumak bile önemli bir vakit ayırmadır, kafa patlatmaktır, emek vermektir. bunun için paylaşımda bulunan tüm arkadaşlara teşekkürler.
MakbuzLazer isimli rapora Kayitno alanı ekle ve raporun kapandığında olayına aşağıdaki (makroyu iptal et) kodu yaz
Kod:
Private Sub Report_Close()
DoCmd.OpenQuery "Makbuz Ekle", acViewNormal, acAdd
DoCmd.OpenQuery "Ödeme Sil", acViewNormal, acEdit
DoCmd.Close acQuery, "Makbuz Ekle"
strSQL = "SELECT * FROM Makbuzlar "
Set rstkayit = New ADODB.Recordset
rstkayit.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
With rstkayit
.Find "[MüsteriNo]=" & Me.KayitNo
If Not rstkayit.EOF Then
.Fields("MakbuzNo") = Me.MakbuzNo
.Update
End If
End With
strSQL = "SELECT * FROM SonNumara "
Set rsxkayit = New ADODB.Recordset
rsxkayit.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
With rsxkayit
.AddNew
.Fields("SonMakbuzNo") = Me.MakbuzNo
.Update
End With
End Sub
Sayın sledgeab
verdiğiniz kodları
Private Sub Report_Close()
DoCmd.OpenQuery "Makbuz Ekle", acViewNormal, acAdd
DoCmd.OpenQuery "Ödeme Sil", acViewNormal, acEdit
DoCmd.Close acQuery, "Makbuz Ekle"
strSQL = "SELECT * FROM Makbuzlar "
Set rstkayit = New ADODB.Recordset
rstkayit.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
artma = 0
Do While Not rstkayit.EOF
With rstkayit
.Find "[MakbuzNo]= null"
If Not rstkayit.EOF Then
artma = artma + 1
FatNo = SonMakbuzNo + artma
.Fields("MakbuzNo") = FatNo
.Update
End If
End With
Loop
strSQL = "SELECT * FROM SonNumara "
Set rsxkayit = New ADODB.Recordset
rsxkayit.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
With rsxkayit
.Fields("SonMakbuzNo") = FatNo
.Update
End With
End Sub
Şeklinde değiştirerek tam isteğime ulaştım. Ancak bu kezde sorgu kullanıcı tarafından iptal edilirse hata mesajı vererek çalışmayı kesiyor. Bunu engellemek için ne yapabilirim? Saygılar.
verdiğiniz kodları
Private Sub Report_Close()
DoCmd.OpenQuery "Makbuz Ekle", acViewNormal, acAdd
DoCmd.OpenQuery "Ödeme Sil", acViewNormal, acEdit
DoCmd.Close acQuery, "Makbuz Ekle"
strSQL = "SELECT * FROM Makbuzlar "
Set rstkayit = New ADODB.Recordset
rstkayit.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
artma = 0
Do While Not rstkayit.EOF
With rstkayit
.Find "[MakbuzNo]= null"
If Not rstkayit.EOF Then
artma = artma + 1
FatNo = SonMakbuzNo + artma
.Fields("MakbuzNo") = FatNo
.Update
End If
End With
Loop
strSQL = "SELECT * FROM SonNumara "
Set rsxkayit = New ADODB.Recordset
rsxkayit.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
With rsxkayit
.Fields("SonMakbuzNo") = FatNo
.Update
End With
End Sub
Şeklinde değiştirerek tam isteğime ulaştım. Ancak bu kezde sorgu kullanıcı tarafından iptal edilirse hata mesajı vererek çalışmayı kesiyor. Bunu engellemek için ne yapabilirim? Saygılar.
Konuyu Okuyanlar: 2 Ziyaretçi