![]() |
|
MSSQL Dinamik sorgu oluşturup filitreleme yapmak. - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Veri Tabanı (https://www.delphican.com/forumdisplay.php?fid=4) +--- Forum: MS SQL Server (https://www.delphican.com/forumdisplay.php?fid=103) +--- Konu Başlığı: MSSQL Dinamik sorgu oluşturup filitreleme yapmak. (/showthread.php?tid=4081) Sayfalar:
1
2
|
MSSQL Dinamik sorgu oluşturup filitreleme yapmak. - Bay_Y - 18-10-2019 herkese kolaylıklar ve hayırlı cumalar diliyorum. Bir sorunum ama 2 sorum var. Konu hakkında görüş öneri ve yardımlarınızı rica ediyorum. İlk Sorum Dinamik olarak bir sorgu oluşturmalıyım , aşağıdaki örnek olsun diye örnek bir tablo bunun gibi birkaç tablodan birkaç değeri toplayıp çarpıp bir sonuç bulacağım ( biraz daha açıklayıcı olabilmesi adına maliyet hesabı yapacağım. ama bu maliyet reçete üzerinden yapılacağı için birkaç farklı tablo ve birkaç farklı hesap içeriyor. bu yüzden bir fonksiyon yazarak sonucu buluyorum.) ![]() tabloda 24,5 olarak görünen maliyet benim ilk ürün maliyetim Select kod,aciklama, dbo.urunmaliyetihesapla(kod) From urunlistesi dediğimde "Only functions and some extended stored procedures can be executed from within a function." diyor Bu sorguyu çalıştırmak burdan maliyetlerinde olduğu bir sorgu elde etmek istiyorum , sonrasında bunu Delphi üzerinden bir grid ile kullanıcının girdiği değerlere göre filitrelemek istiyorum. Çok saçma veya olabilirliği konusunda emin değilim ama böyle birşeye ihtiyacım var ve bu konuda fikrinizi almak istiyorum. Maliyetler çok değişken olduğu için tabloda maliyet tutamıyorum o yüzden anlık hesaplamam gerekiyor. Konu ile ilgili şöyle bir çözüm aklıma geldi ama açıkcası olabilir mi diye size danışmak istiyorum. Olamaz sa sizin önereceğiniz birşey var mı onu öğrenmek istiyorum. Benim yapmayı düşündüğüm yol ürün listesi almadan önce ürünlistesini okuyup maliyet hesaplarını yapıp temp bir tablo oluşturmak ve bu temp dosyayı gride yükleyip filitreleme yapmak. Ama bu dosya oluşmadan bu işlem yapılabilirmi açıkcası onu merak ediyorum. herkese teşekkür ediyorum , hayırlı kazançlar ve iyi çalışmalar diliyorum. Cvp: MSSQL Dinamik sorgu oluşturup filitreleme yapmak. - adelphiforumz - 18-10-2019 @Bay_Y Öncelikle bu yapmak istedikleriniz SP ile mümkün ve Kolay diyebilirim. Son düşünceniz doğru yol fakat dikkat etmeniz gereken bir husus var Kayıt sayılarınız büyüdükçe fonksiyon ile elde edeceğiniz süre oldukça uzayacaktır. "dbo.urunmaliyetihesapla(kod)" Böyle bir durumda eğer imkan dahilinde ise maliyet hesabını SP içerisinde yapın yada maliyet hesabını yapan bir view oluşturup bunu SP içerisinde kullanın. ayrıca temp tabloları ilk baştan filtre kriterleriniz varsa bunu uyguladıktan sonra oluşturup maliyet hesabına başlayın MSSQL Dinamik sorgu oluşturup filitreleme yapmak. - Bay_Y - 18-10-2019 "adelphiforumz " teşekkür ederim fikir ve önerileriniz için. aslında maliyet hesabı yapan kısım başlı başına bir storeprocedure fakat listede gösterebilmek adına function a çevirdim ama çalışmadı farklı bir şekilde yapılabilir mi diya açıkcası denemek istedim.kayıt sayısına gelince doğru en büyük çekincem bu aslında her ne kadar kayıt sayısı şu an için az da olsa rakamların 1000 leri geçme ihtimali çok yüksek ve bu ihtimal de beni düşündürüyor. tekrar teşekkürler. MSSQL Dinamik sorgu oluşturup filitreleme yapmak. - shooterman - 18-10-2019 selamlar aynı konu benim için geçmişte yaşadığım bir durumdu. Ben öncelikle, kullanılacak olan hammaddelerin listesinden yola çıkarak, maliyetlerini temp tabloya aktardım. Sonrasında, kullanılacak olan yarı mamüllerin tablosunu döndü ile geçerek, bağlı bulunduğu hammaddeleri gruplayarak fiyatlarını aldım. Sonrasında da, ana mamül kalemlerine bu fiyatları aktardım. Aynı şekilde işlemler yavaştı. Ancak stringgrid yerine dbgrid kullandım. Ayrıca veritabanı olarak mysql ve sqlite kullandım. Böylelikle her iki veritabanının tablolarında indexler oluşturdum. İndexleme yapmadan önce, işlem süresi 3 dakika sürüyor iken, indexleme sonrasında bu süre 50 sn. lere kadar düştü. MSSQL Dinamik sorgu oluşturup filitreleme yapmak. - adelphiforumz - 18-10-2019 @Bay_Y Yine Maliyet hesabını bir SP içinde yap bu sp sonucunu diğer çağıracağın SP ye Output parametresi ile table olarak al Sonra bunu yeni SP içerisinde kullan MSSQL Dinamik sorgu oluşturup filitreleme yapmak. - Bay_Y - 18-10-2019 değerli yorumlarınız için çok teşekkürler . Cvp: MSSQL Dinamik sorgu oluşturup filitreleme yapmak. - serdar - 18-10-2019 Merhaba Urun tablosundaki kod sutunu unique (yani tekil) olduğunu varsayarak belirttiğiniz gibi bir sonuç almak için örnek şöyle olmalı. CREATE FUNCTION urunmaliyetihesapla(@kod int=null) RETURNS FLOAT AS BEGIN DECLARE @gecicitablo TABLE (maliyet FLOAT) INSERT INTO @gecicitablo(maliyet) SELECT (h.miktar*h.fiyat+y.mihar*y.fiyat) --kendi hesaplamanız.6,25 hücreindeki formulu girin. null sorunu ile karsılasmamak için isnull() fonksiyonunu da kullanın FROM hammadde h JOIN yarimamul y on h.yarimamulid=y.id JOIN urun u on u.id=y.urunid WHERE u.kod=@kod RETURN ( SELECT sum(maliyet) FROM @gecicitablo ) END kullanırken söyle cağrımalısın SELECT u.id, u.kod, u.aciklama, u.miktar, dbo.urunmaliyetihesapla(kod) as maliyet FROM urun u MSSQL Dinamik sorgu oluşturup filitreleme yapmak. - FiRewaLL - 18-10-2019 Eğer hata varsa kusura bakma ama mantık olarak bir yol gösterecektir. Deneme imkanım olmadı. Eğer sorun yaşarsan Team vs ile bağlanıp yardımcı olabilirim. Kod: SELECT ID,KOD,ACIKLAMA,SUM(HFIYAT) AS HFIYAT,SUM(MIKTAR) AS MIKTAR FROM (MSSQL Dinamik sorgu oluşturup filitreleme yapmak. - Bay_Y - 19-10-2019 Vakit ayırıp cevap yazan herkese çok teşekkür ediyorum. Çok sağolun. MSSQL Dinamik sorgu oluşturup filitreleme yapmak. - FiRewaLL - 20-10-2019 (19-10-2019, Saat: 09:42)Bay_Y Adlı Kullanıcıdan Alıntı: Vakit ayırıp cevap yazan herkese çok teşekkür ediyorum. Çok sağolun. Sorunu ne şekilde çözdünüz Merak ettim
|