Merhaba,
Ekte verdiğim örnekte ana formun en altındaki formda (ORD_SHIP tablosu) bulunan SEVK_MIKTAR alanının toplamını, SIP_LINE_ID kriterine göre bir üst formda bulunan (ORD_LINE tablosu) SEVK_TOPLAMI alanına
Sql update komutu ile kayıt etmek istiyorum. Bir şekilde
Dsum ile bir yere toplatıp sonra
Sql Update ile tabloya yazmam gerekiyor sanırım beceremedim yardımcı olmanızı rica ederim.
merhaba
istediğini yaptım,SEVK_MIKTARI alanındaki toplamı SEVK TOPLAMA a aldım,istediğin oldu
ancaakkk,bence bu böyle olmazzzz...belki şimdilik işini görürü veya size yol gösterir.
Bu hali ile yaptıgın programın çok hatalı görünüyor,işlerinizi bununla takip ederseniz,ileride çok sıkıntı yaşarsınız.
bence iyi bir kurgu ile alt yapınızı ve ilişkilerinizi gözden geçirin... kolay gelsin
(14/11/2016, 11:35)shalala yazdı: SEVK_TOPLAMI alanına Sql update komutu ile kayıt etmek istiyorum. Bir şekilde Dsum ile bir yere toplatıp sonra Sql Update ile tabloya yazmam gerekiyor
Ana formdaki ORD_SHIP isimli alt formda bulunan SEVK_MIKTAR metin kutusunun güncelleştirme sonrasında olayına aşağıdaki kodu ekleyerek deneyiniz.
DoCmd.RunCommand acCmdSaveRecord
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE ORD_LINE INNER JOIN ORD_SHIP ON ORD_LINE.SIP_LINE_ID = ORD_SHIP.SIP_LINE_ID SET ORD_LINE.SEVK_TOPLAMI = Dsum ('SEVK_MIKTAR','ORD_SHIP','[SIP_LINE_ID]=' & [SIP_ID]) WHERE (((ORD_LINE.SIP_ID)= Formlar![ORD_MAIN_FORM]![SIP_ID]));"
DoCmd.SetWarnings True
(14/11/2016, 12:49)ozanakkaya yazdı: (14/11/2016, 11:35)shalala yazdı: SEVK_TOPLAMI alanına Sql update komutu ile kayıt etmek istiyorum. Bir şekilde Dsum ile bir yere toplatıp sonra Sql Update ile tabloya yazmam gerekiyor
Ana formdaki ORD_SHIP isimli alt formda bulunan SEVK_MIKTAR metin kutusunun güncelleştirme sonrasında olayına aşağıdaki kodu ekleyerek deneyiniz.
DoCmd.RunCommand acCmdSaveRecord
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE ORD_LINE INNER JOIN ORD_SHIP ON ORD_LINE.SIP_LINE_ID = ORD_SHIP.SIP_LINE_ID SET ORD_LINE.SEVK_TOPLAMI = Dsum ('SEVK_MIKTAR','ORD_SHIP','[SIP_LINE_ID]=' & [SIP_ID]) WHERE (((ORD_LINE.SIP_ID)= Formlar![ORD_MAIN_FORM]![SIP_ID]));"
DoCmd.SetWarnings True
Sayın Ozanakkaya çok teşekkür ederim sanırım baya yaklaştık ama olmadı.
Bu hali ile formdaki SIP_LINE_ID si aynı olanların hepsine yazıyor dolayısı ile hatalı işlem oluyor benim yapmak istediğim ORD_SHIP tablsundaki SIP_LINE_ID si aynı olanları toplayıp ORD_LINE tablosundaki SIP_LINE_ID si aynı olan satıra yazdırmak. Tabi sadece formda işlem yaptıklarımız için. Ben aşağdaıki gibi yazdım ama olmadı tabi.
,DoCmd.SetWarnings False
Dim
Sql As String
'(Me.TOPLAA ORD_SHIP_FORM UN ALTINDA BİR TEXBOX OLABİLİR GİBİ DENEDİM AMA OLMADI)
Me.TOPLAA = Nz(DSum("[SEVK_MIKTAR]", "ORD_SHIP", "[SIP_LINE_ID]= Forms![ORD_SHIP_FORM]![LINE_ID]"), 0)
sql = "UPDATE ORD_LINE SET SEVK_TOPLAMI = ORD_SHIP_FORM.TOPLAA WHERE SIP_LINE_ID = Forms!ORD_SHIP_FORM.SIP_LINE_ID"
DoCmd.RunSQL sql
Form_ORD_SHIP_FORM.Requery
Merhaba, bu tür sorularda örnek uygulamaya birden fazla kayıt ekleyerek yollarsanız çözüm ararken fazla veri içerisinde test etme şansımız olur.
Kodları aşağıdakilerle değiştirerek deneyiniz.
DoCmd.RunCommand acCmdSaveRecord
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE ORD_LINE INNER JOIN ORD_SHIP ON ORD_LINE.SIP_LINE_ID = ORD_SHIP.SIP_LINE_ID SET ORD_LINE.SEVK_TOPLAMI = Dsum ('SEVK_MIKTAR','ORD_SHIP','[SIP_LINE_ID]=' & [SIP_ID]) WHERE (((ORD_LINE.SIP_LINE_ID)=[Formlar]![ORD_MAIN_FORM]![ORD_LINE_FORM].[Form]![SIP_LINE_ID]));"
DoCmd.SetWarnings True
Ayrıca, sorunuza cevap yazan celoycenin cevabı ile ilgili de yorum yazınız.
Öncelikle sabırla yardımcı olmaya çalıştığınız için çok teşekkür ederim.
Sayın Celoyce nin yanıtına cevap yazarken sizden çözüm gelince onu atlamış oldum kusuruma bakmasın lütfen.
Genel yapıda bazı değişiklikler yapacağım ama takıldığım bu konuyu çözmek için basit bir örnek gönderdim o nedenle kusura bakmayın. Diğer alanalar arasındaki hesaplamaları yaptırıyorum sadece takıldığım konularda sizleri rahatsız ediyorum.
Son gönderdiğiniz kod ile olacak gibiydi ki yine olmadı.
Sorun şu üst formda ikinci yada üçüncü satır seçip onun alt formuna veri girip hesaplama yaptırdığımızda çalışmıyor yada sadece üst satırın hesaplamasını yapıyor kriter ile ilgili sorun var sanırım.
Kullandığınız kod yapısından anlamadığım için farklı denemelerde yapamıyorum bunu halledersek söz bir süre daha rahatsız etmeyeceğim sabrınız için tekrar teşekkür ederim.