Skip to main content

AccessTr.neT


Bir tablodaki veri toplamını başka tabloya yazdırma

Bir tablodaki veri toplamını başka tabloya yazdırma

#1
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.
.rar örnek.rar (Dosya Boyutu: 42,89 KB | İndirme Sayısı: 6)
Cevapla
#2
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
.rar örnek-Celoyce.rar (Dosya Boyutu: 51,38 KB | İndirme Sayısı: 6)
Cevapla
#3
(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
Cevapla
#4
(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
Cevapla
#5
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.
Cevapla
#6
Ö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.
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task