Delphi Can

Orjinalini görmek için tıklayınız: ExportGridToExcel ile 2 cxgridi 1 excel de toplama.
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
selamın aleyküm, kolay gelsin.

benim sorunum. 2 adet CXGRID'im var ve bunlara 2 farklı sql sorgusundan veri geliyor. bunları tek tek excel'e "ExportGridToExcel" komutu ile atabiliyorum, ama iki griddekini 1 excel de sayfalar halinde nasıl alabilirim.
----------
altarnatif olarak sorguları birleştirebilirim ama sql kısmında işin içinden çıkamadım. 
 
Select MAKINA, SUM(TOPMIKTAR) AS TOPLAMURETIM, COUNT(*) AS TOPADETI from TOPLAR WHERE HURDA=0 AND (TARIHSAAT BETWEEN  '07:00:01', 104) AND ' 15:00:00' 104))GROUP BY MAKINA';
 
Select MAKINA, SUM(TOPMIKTAR) AS HURDA, COUNT(*) AS HURDATOP from TOPLAR WHERE HURDA=1 AND (TARIHSAAT BETWEEN '07:00:01' 104) AND  15:00:00', 104))GROUP BY MAKINA';


Bu ikisinin arasındaki farkım hurda ismindeki bolean tipinde ki alana göre hurda olup olmadığına karar verip, 2 cxgrid e aldırmak. Bunu 1 cxgrid e aldıracak sql kodu olsa daha bile işime yarar.  

şimdiden teşekkürler. kolay gelsin
Sql birleştirmesi için
Union All komutu kullanılır bu komut select ifadesndeki sıralama ve veritürlerini dikkate alır isimlendirmede ise birinci selectte bulunan isimleri kabul eder
Sele A, B, C From T1 Where xxxxx
Union All
Select X,Y,Z From T2 Where xxxxx


YADA sizin sorguya göre düşünürsek tek sorguda

Kod:
Select MAKINA, HURDA, SUM(TOPMIKTAR) AS TOPLAMURETIM,
      COUNT(*) AS TOPADETI
 from TOPLAR
WHERE HURDA in (0, 1)
  AND (TARIHSAAT BETWEEN '07:00:01', 104) AND '15:00:00', 104))
GROUP BY MAKINA, HURDA
(12-02-2020, Saat: 10:16)adelphiforumz Adlı Kullanıcıdan Alıntı: [ -> ]Sql birleştirmesi için
Union All komutu kullanılır bu komut select ifadesndeki sıralama ve veritürlerini dikkate alır isimlendirmede ise birinci selectte bulunan isimleri kabul eder
Sele A, B, C From T1 Where xxxxx
Union All
Select X,Y,Z From T2 Where xxxxx

size zahmet biraz daha açarmısınız. bu komutu gördüm ama birçok denememe rağmen yapamadım malesef Sad tablo 1 adet bu arada. 1 tablodan 2 sorgu yapıyorum. arasındaki fark hurda alanındaki true veya false olması
Senin sorgunda Hurda Bool türünde olduğundan where şartına sokmanada gerek yok 
Kod:
Select MAKINA,
      CASE WHEN HURDA = 1 THEN '1-HURDA OLANLAR' else '0-HURDA OLMAYANLAR' END as HURDA,
      SUM(TOPMIKTAR) AS TOPLAMURETIM,
      COUNT(*) AS TOPADETI
 from TOPLAR
WHERE (TARIHSAAT BETWEEN '07:00:01', 104) AND '15:00:00', 104))
GROUP BY MAKINA, HURDA

Özellikle Group by kullanımını gözden geçirmenizi öneririm
dostum çok çok sağol, tam aradığım şey oldu. ellerine sağlık.
(12-02-2020, Saat: 10:29)adelphiforumz Adlı Kullanıcıdan Alıntı: [ -> ]Senin sorgunda Hurda Bool türünde olduğundan where şartına sokmanada gerek yok 
Kod:
Select MAKINA,
      CASE WHEN HURDA = 1 THEN '1-HURDA OLANLAR' else '0-HURDA OLMAYANLAR' END as HURDA,
      SUM(TOPMIKTAR) AS TOPLAMURETIM,
      COUNT(*) AS TOPADETI
 from TOPLAR
WHERE (TARIHSAAT BETWEEN '07:00:01', 104) AND '15:00:00', 104))
GROUP BY MAKINA, HURDA

Özellikle Group by kullanımını gözden geçirmenizi öneririm


kolay gelsin, bunu 1 tık daha ileriye taşımak istiyorum ama yardımcı olabilir misiniz?,  

Şöyle ki ; bu sorguda sorun yok çok güzel çalışıyor,  "makina" alanındakilerin hepsinde bu işlemi yapıyor çıktısında  örneğin 4 nolu makina hurda olmayan 60 kilo,  5 numarada hurda olmayan 50 kg gibi, 

ama işlem görmemiş makina lar da kaydı olmadığı için doğal olarak listelenmiyor.  2 bir tablomda bu makinaların hepsinin listesi var. "tablo adı: makinalar alan ismi :makina" bu ikisini karşılaştırıp üretime girmemiş makinalara üretimde değil veya 0   gibi bir ibare ile sıralamaya alabilirmiyiz.  

ben if ve case ile denedim ama işin içinden çıkamadım. yardımcı olma imkanınız varsa çok sevinirim. olmazsa da canınız sağ olsun.

QyXvay.png  6 dan 11 e geçiyor. bunu önlemek adına, 7-8-9-10 da mesela üretim yok yada diğer tablodan karşılaştırma yapıp, tüm haneleri 0 olarak çektirme şansımız olur mu?
Tabi ki yardımcı oluruz.
Fakat öncelikle soruyu sorarken adımları ayırarak metni okunaklı hale getirsen daha iyi olur.
konuyu yanlış anlaşılmadan kurtarmak için basit bir şekillendirme yaparsan daha doğru ve net cevaplar alabilirsin

sorunun direkt cevabını vermeden ve tablolar arasında Join kavramını basitçe gözden geçirmeni öneririm
Özellikle senin ihtiyacın olacak olan Left join
yani 1. tabloda var olan makinalar 2.tablonda olan sonuçlara karşılık gelecek
böylece aşağıdaki gibi bir şey elde edeceksin

M1 -> Islem 1 Sonucu
M1 -> Islem 2 Sonucu
M2 -> Islem 1 Sonucu
M3 -> sonucu olmayan işlem fakat makinnın adı görünüyor
M4 -> Islem 1 Sonucu
...
..


NOT:
Küçük boyutlu resimleri forum içerisinde bulunan dosya yükle ile ekleyip yazının içine ilave edersen daha iyi olur

Join için basit bir anlatım linki https://www.sqlkodlari.com/20-sql-left-j...lanimi.asp
(13-02-2020, Saat: 10:53)adelphiforumz Adlı Kullanıcıdan Alıntı: [ -> ]Tabi ki yardımcı oluruz.
Fakat öncelikle soruyu sorarken adımları ayırarak metni okunaklı hale getirsen daha iyi olur.
konuyu yanlış anlaşılmadan kurtarmak için basit bir şekillendirme yaparsan daha doğru ve net cevaplar alabilirsin

sorunun direkt cevabını vermeden ve tablolar arasında Join kavramını basitçe gözden geçirmeni öneririm
Özellikle senin ihtiyacın olacak olan Left join
yani 1. tabloda var olan makinalar 2.tablonda olan sonuçlara karşılık gelecek
böylece aşağıdaki gibi bir şey elde edeceksin

M1 -> Islem 1 Sonucu
M1 -> Islem 2 Sonucu
M2 -> Islem 1 Sonucu
M3 -> sonucu olmayan işlem fakat makinnın adı görünüyor
M4 -> Islem 1 Sonucu
...
..


NOT:
Küçük boyutlu resimleri forum içerisinde bulunan dosya yükle ile ekleyip yazının içine ilave edersen daha iyi olur
çok sağolun bi  Left Join'e odaklanayım o zaman   Idea