Skip to main content

AccessTr.neT


Alt formda hesaplatma komutu nedeni ile focus sorunu

Alt formda hesaplatma komutu nedeni ile focus sorunu

#7
(07/12/2016, 15:57)atoz112 yazdı: sayın shalala,

4.mesajda yapılan açıklamalarda bahsi geçen kullanımlar akabinde elde edilen görseller aşağıda yer almaktadır.

her bir kayıt girişi ve ENTER davranışı neticesinde,bir sonraki denetime geçme işlemi sağlanmaktadır.

[Resim: do.php?imgf=148111542476131.jpg]

[Resim: do.php?imgf=148111542490362.jpg]

[Resim: do.php?imgf=148111542497373.jpg]

bilginize...iyi çalışmalar,saygılar.

Sayın Atoz112

Zaman ayırdığınız için teşekkür ederim ama bende sonuç gerçekten de farklı çözemedim bir türlü.
Cevapla
#8
Merhaba,

ORD_LINE_FORM isimli formdaki LINE_MALIYET fonksiyonunda bulunan 

DoCmd.RunCommand acCmdSaveRecord

kodunu tek tırnak ile iptal ederek deneyiniz.
Cevapla
#9
Üst mesaja yazdığım düzenleme işe yaramıyor. Altforma yazılan yeni veriyi tabloya kaydedilmediği için Dsum kodu hatalı çalışıyor. 

Kaydetmek için "DoCmd.RunCommand acCmdSaveRecord" kullanınca da ilk kayda gidiyor.

1-)Alt formdaki LINE_MALIYET fonksiyonundaki "DoCmd.RunCommand acCmdSaveRecord" kodunu iptal et

2-) Alt formun form alt bilgisi kısmına "GTOPLAMALIYET" adında metin kutusu ekle, denetim kaynağına da 


=DSum('MALIYET_TUTAR';'ORD_LINE';'[SIP_ID]=' & [Formlar]![ORD_MAIN_FORM]![SIP_ID])-DSum('MALIYET_TUTAR';'ORD_LINE';'[SIP_LINE_ID]=' & [SIP_LINE_ID])+[TUTAR]

kodu ekle,

3-) LINE_MALIYET fonksiyonundaki "SİPARİŞ TOPLAM MALİYETİNİ ANA TABLOYA YAZ" şeklinde belirttiğiniz ilk docmd.runsql kodunu iptal et, yerine aşağıdaki kodu ekle


DoCmd.RunSQL "UPDATE ORD_MAIN INNER JOIN ORD_LINE ON ORD_MAIN.SIP_ID = ORD_LINE.SIP_ID SET ORD_MAIN.TAHM_TOPLAM_MALIYET = [Forms]![ORD_MAIN_FORM]![ORD_LINE_FORM].[Form]![GTOPLAMALIYET] WHERE (((ORD_MAIN.SIP_ID)=[Formlar]![ORD_MAIN_FORM]![SIP_ID]));"
Cevapla
#10
(08/12/2016, 02:38)ozanakkaya yazdı: Üst mesaja yazdığım düzenleme işe yaramıyor. Altforma yazılan yeni veriyi tabloya kaydedilmediği için Dsum kodu hatalı çalışıyor. 

Kaydetmek için "DoCmd.RunCommand acCmdSaveRecord" kullanınca da ilk kayda gidiyor.

1-)Alt formdaki LINE_MALIYET fonksiyonundaki "DoCmd.RunCommand acCmdSaveRecord" kodunu iptal et

2-) Alt formun form alt bilgisi kısmına "GTOPLAMALIYET" adında metin kutusu ekle, denetim kaynağına da 


=DSum('MALIYET_TUTAR';'ORD_LINE';'[SIP_ID]=' & [Formlar]![ORD_MAIN_FORM]![SIP_ID])-DSum('MALIYET_TUTAR';'ORD_LINE';'[SIP_LINE_ID]=' & [SIP_LINE_ID])+[TUTAR]

kodu ekle,

3-) LINE_MALIYET fonksiyonundaki "SİPARİŞ TOPLAM MALİYETİNİ ANA TABLOYA YAZ" şeklinde belirttiğiniz ilk docmd.runsql kodunu iptal et, yerine aşağıdaki kodu ekle


DoCmd.RunSQL "UPDATE ORD_MAIN INNER JOIN ORD_LINE ON ORD_MAIN.SIP_ID = ORD_LINE.SIP_ID SET ORD_MAIN.TAHM_TOPLAM_MALIYET = [Forms]![ORD_MAIN_FORM]![ORD_LINE_FORM].[Form]![GTOPLAMALIYET] WHERE (((ORD_MAIN.SIP_ID)=[Formlar]![ORD_MAIN_FORM]![SIP_ID]));"

Denedim yine olmadı satırda miktar ve birim fiyat güncelledikten sonra alt satıra geçene kadar değişiklik yapmıyor.
Enter tuşu ile alt satıra gidildiğinde yine alt formun ilk satırına dönüyor.
.rar shalala_sql_komutundan_sonra_focus_sorunu_2.rar (Dosya Boyutu: 1,13 MB | İndirme Sayısı: 7)
Cevapla
#11
sayın shalala,

eklediğiniz örnek uygulama incelendiğinde fark ettiğim bazı hususları belirtmekte ve buna dikkatinizi çekmekte fayda var kanısındayım.en azından,hatırlatmada bulunmak adına.

1)

öncelikle;
ORD_MAIN_FORM adlı formun kod sayfasında üst menüden DEBUG - COMPILE işlemini uygulamanız yerinde olacaktır.çünkü;hatalı alan adı ve denetim adı tanımlamaları söz konusu.bu da,ileride,bu hususlardan kaynaklı sorunlara maruz kalmanızın muhtemel olacağı anlamına gelmektedir.

aslında,bu kontrolü,her zaman hem tüm formlar için hem de konularınıza her bir örnek uygulama eklemeden öncesinde kontrol etmek amacı ile yapmanız,sizin için verimli bir alışkanlık olur bu vesile ile.

buna bağlı olarak;

Konulara eklenen Uygulama içeriğine yönelik Tavsiyeler

yukarıda bağlantısı yazılı konuyu da incelemenizi ve içeriğindeki açıklamalara yönelik olarak uygulamanız üzerinde bahsi yapılan düzeltmeleri de sağlamanız,yine ileride bunlardan kaynaklı sorulara denk gelmemeniz için doğru ve verimli olacaktır.

2)

ORD_MAIN_FORM adlı formda yer alan Fonksiyonlarda mevcut bulunan hesaplama işlemlerinde kullandığınız denetimler,direkt olarak bu formun üzerinde değil,içeriğindeki alt formlarda yer almakta olan denetimlerdir.

dolayısı ile de,bu hesaplamaların geçerli olması için de,bu alt formlardaki denetimlerin doğru yazılışları ile elde etmeniz gerekmektedir.

Alt Form Denetim Değerlerine ulaşma ve Alt Form Güncelleme

yukarıda bağlantısı yazılı konuyu da incelemenizi ve içeriğindeki açıklamalara yönelik olarak,bu hesaplamalar için gerekli olan denetimleri elde etmeyi deneyiniz.

ÖRNEK:
ORD_MAIN_FORM adlı formda yer alan SEVKHESAP adlı form içerisinde

Me.SEVK_NET_FIYAT = (Me.SEVK_TANIMLI_FIYAT - Me.SEVK_ISKONTO)
Me.SEVK_NET_TUTAR = (Me.SEVK_NET_FIYAT * Me.SEVK_MIKTAR)

kodları mevcut.eğer bu denetimler,direkt ana formun üzerinde olsalardı bu ifadeler ile verileri alıp hesaplama işlemini sağlayabilirsiniz.fakat,alt formlarda yer aldıkları için,bağlantısı yazılı konuda da görüleceği üzere,farklı kod yazımları ile verileri alıp hesaplamayı gerçekleştirmelisiniz.

Forms![ORD_MAIN_FORM]![ORD_SHIP_FORM].Form![SEVK_NET_FIYAT] = (Forms![ORD_MAIN_FORM]![ORD_SHIP_FORM].Form![SEVK_TANIMLI_FIYAT] - Forms![ORD_MAIN_FORM]![ORD_SHIP_FORM].Form![SEVK_ISKONTO])

Forms![ORD_MAIN_FORM]![ORD_SHIP_FORM].Form![SEVK_NET_TUTAR] = (Forms![ORD_MAIN_FORM]![ORD_SHIP_FORM].Form![SEVK_NET_FIYAT] * Forms![ORD_MAIN_FORM]![ORD_SHIP_FORM].Form![SEVK_MIKTAR])

benzeri bir kod kullanımı uygun olabilir.bilginize...iyi çalışmalar,saygılar.
Herkes, kendisinin AR-GE'cisidir...


Konulara eklenen Uygulama içeriğine yönelik Tavsiyeler
Alt Form Denetim Değerlerine ulaşma ve Alt Form Güncelleme
Kapatırken Düzenle (Compact On Close) Seçeneğinin İşaretlenmesi Hakkında
Cevapla
#12
Sayın Atoz112,

Tavsiyeleriniz ve desteğiniz için teşekkür ederim uygulamayı elden geçireceğim.
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da