• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Sorgu kriterlerini excelden belirlemek.

Katılım
7 Temmuz 2005
Mesajlar
70
Excel Vers. ve Dili
Office Xp - Türkçe
Merhaba arkadaşlar,

Excelde dış veri al yöntemiyle sql server'a bağlanıp verilerimi microsoft querry ile düzenleyip çekiyorum fakat kriterleri değiştirmek için özellikle tarih kriterlerini her seferinde query'nin içine girip değiştirmek zorunda kalıyorum şu kriterleri excelde bir hücrede belirlesem ve orda değiştirdiğimde sorgumda da değişse ya da bir user form üzerinde textboxların içine ilgili kriterleri girsem ve ordan aldırabilsem nasıl olur?
Bu konu benim için gerçekten çok önemli yardımlarını esirgemeyen üstadlarıma şimdiden çok teşekkür ederim.İyi çalışmalar dileklerimle...
 
Dış Veri araç çubuğu üzerindeki soldan 3.buton. Yani Sorgu Parametreleri butonuna tıklayın. Ekranda Query de oluşturduğunuz parametreleriniz görünecek. Her bir parametreye tıklayarak sağ taraftaki seçeneklerden "Aşağıdaki hücreden değeri al" kısmında değeri almasını istediğiniz excel hücresini belirtin. Alttaki "Hücre değeri değiştiğinde otomatik olarak yenile" yi işaretlerseniz artık query yi tamamen unutabilirsiniz.
 
Sn. Alibaskan vermiş olduğunuz cevap için çok teşekkür ederim fakat bir sorun var galiba benim dış veri al sekmeme tıkladığımda karşıma çıkan seçenekler sorgu düzenle ve veri aralığı özelliği parametreler alanı aktif değil yani tıklamam mümkün olmuyor.Ben nerde hata yapıyorm acaba?
 
Son düzenleme:
Query deki sorgu sonuçları excelde nerede ise o veriler üzerinde iken bu butonu arayın. eğer yine yoksa querydeki sorgunuzda parametre yok demektir. Örneğin seçmek istediğiniz parametre başlangıç ve bitiş tarihi ise query deki sorgunuz muhtemelen şu şekildedir.[Baş.Tar]='01.11.2008' ve [Bit.Tar]='30.11.2008' burayı sorguyu excele göndermeden şu şekilde değiştirip verileri excele verin. [Baş.Tar]=? ve [Bit.Tar]=?
Bu şekilde çözemezseniz Query deki sql cümlenizi gönderin üzerinde düzeltip göndereyim.
 
Query deki sorgu sonuçları excelde nerede ise o veriler üzerinde iken bu butonu arayın. eğer yine yoksa querydeki sorgunuzda parametre yok demektir. Örneğin seçmek istediğiniz parametre başlangıç ve bitiş tarihi ise query deki sorgunuz muhtemelen şu şekildedir.[Baş.Tar]='01.11.2008' ve [Bit.Tar]='30.11.2008' burayı sorguyu excele göndermeden şu şekilde değiştirip verileri excele verin. [Baş.Tar]=? ve [Bit.Tar]=?
Bu şekilde çözemezseniz Query deki sql cümlenizi gönderin üzerinde düzeltip göndereyim.


Ali bey benim sorgumda parametre yok galiba yada parametre tanımlamayı bilmiorum.Ben sorgumu göndereyim onun üzerinden bakalım eğer bu parametre tanımlamayı öğetirseniz çok minnettar kalırım gerçekten çok işime yarayacak bir bilgi bu benm için.Şu an sizin gösterdiğniz gibi sorgu içinde [Baş.Tar] diye yazınca geçersiz alan diye hata veriyor.
Çok teşekkürler tekrar..

SELECT LG_009_01_CLFLINE.DATE_
FROM FUJI.dbo.LG_009_01_CLFLINE LG_009_01_CLFLINE
WHERE (LG_009_01_CLFLINE.DATE_>'05.01.2008')
 
Gönderdiğiniz sorguya göre Queryde Ölçüt Alanı kısmında DATE hemen altındaki değer kısmında >'05.01.2008' yazıyor. Değer kısmındaki yazıyı şu şekilde değiştiriniz. >[Tarihi Giriniz ?] Değişikliği yapıp alt satıra tıkladığınızda ekranda Tarihi Giriniz diye bir Inputbox çıkması lazım. Bu çıkarsa sorguyu excele gönderin. Excelde sorgu yenilediğinizde aynı inputbox yine çıkacak. O zaman önceki mesajımda bahsettiğim yöntemle bunu excel hücresine bağlayın.
 
Yukarıdaki bahsettiğim olayı ölçütten yapamazsanız Queryde SQL kodlarına girip DATE>'05.01.2008' yazan kısmı DATE>? yapın. Aynı sonuca ulaşırsınız.
 
Sayın Alibaskan size nasıl teşekkür edeceğimi bilemiorum bu gerçekten çok işime yarayacak,elinize,emeğinize sağlık.İyi akşamlar...
 
Rica ederim. İşinize yarayıp yaramadığı konusunda bilgi verir misiniz?
 
İşime fazlasıyla yaradı Allah razı olsun sizden sayenizde kurtuldum sorgunun içine girip tarih değiştirmekten.Çok teşekkürler,iyi çalışmalar...
 
Allah cümlemizden razı olsun. İşinize yaradığına sevindim. Bana bilgilerimi tazeleme fırsatı verdiğiniz için ben teşekkür ederim. İyi çalışmalar.
 
Bilgi..

Herkese iyi çalışmalar..
acaba yaptığınız sorguyu forumda yayınlama imkanınız varmı dır. acaba...
yardımlarınız için teşekkü ederim..
 
excelde nasıl alan tanımlayabilirim..

iyi çalışmalar...
aşağıdaki sorguya nasıl A1=[tarih_1] ve A2=[tarih_2] alanlarını bağlayabilirim..
(yani aşağıdaki sorgu a1 ve a2'de bulunan tarihler arasındaki verilere göre sonuçları versin..)
yardımcı olmanız dileğiyle..
teşekkürler.


-------------------------------------------------------------------------------------
SELECT dbo.LG_311_CLCARD.CODE AS [CH.KODU], dbo.LG_311_CLCARD.DEFINITION_ AS ÜNVANI,
SUM(dbo.LG_311_01_STLINE.AMOUNT * dbo.LG_311_01_STLINE.OUTCOST) AS MALİYET, SUM(DISTINCT dbo.LG_311_01_STLINE.LINENET)
- SUM(dbo.LG_311_01_STLINE.AMOUNT * dbo.LG_311_01_STLINE.OUTCOST) AS KAR, dbo.LG_311_01_INVOICE.FICHENO AS [FATURA NR],
dbo.LG_311_01_INVOICE.DATE_ AS [FATURA TARİHİ], dbo.LG_311_01_STFICHE.FICHENO AS [İRS.NR.],
dbo.LG_311_01_STFICHE.DATE_ AS [İRS.TARİHİ], dbo.LG_311_ITEMS.CODE AS [MALZEME KODU],
dbo.LG_311_ITEMS.NAME AS [MALZEME AÇIKLAMASI], dbo.LG_311_ITEMS.STGRPCODE AS [GRUP KODU],
dbo.LG_311_ITEMS.SPECODE AS DURUMU, dbo.LG_311_01_STLINE.LINENET AS TUTAR, dbo.LG_311_01_INVOICE.TRCODE AS [FATURA TÜRÜ],
dbo.LG_311_ITEMS.CYPHCODE AS GRUP, dbo.LG_311_01_INVOICE.CAPIBLOCK_CREADEDDATE AS [FTR.OLUŞTURMA TARİHİ],
dbo.LG_311_01_STLINE.AMOUNT
FROM dbo.LG_311_01_STFICHE INNER JOIN
dbo.LG_311_CLCARD ON dbo.LG_311_01_STFICHE.CLIENTREF = dbo.LG_311_CLCARD.LOGICALREF INNER JOIN
dbo.LG_311_01_STLINE INNER JOIN
dbo.LG_311_01_INVOICE ON dbo.LG_311_01_STLINE.INVOICEREF = dbo.LG_311_01_INVOICE.LOGICALREF ON
dbo.LG_311_01_STFICHE.LOGICALREF = dbo.LG_311_01_STLINE.STFICHEREF INNER JOIN
dbo.LG_311_ITEMS ON dbo.LG_311_01_STLINE.STOCKREF = dbo.LG_311_ITEMS.LOGICALREF
WHERE (dbo.LG_311_01_INVOICE.CANCELLED = 0) AND (dbo.LG_311_01_STLINE.LINETYPE = 0) AND (dbo.LG_311_ITEMS.CYPHCODE = 'GG')
GROUP BY dbo.LG_311_CLCARD.CODE, dbo.LG_311_CLCARD.DEFINITION_, dbo.LG_311_01_INVOICE.FICHENO, dbo.LG_311_01_INVOICE.DATE_,
dbo.LG_311_01_STFICHE.FICHENO, dbo.LG_311_01_STFICHE.DATE_, dbo.LG_311_ITEMS.CODE, dbo.LG_311_ITEMS.NAME,
dbo.LG_311_ITEMS.STGRPCODE, dbo.LG_311_ITEMS.SPECODE, dbo.LG_311_01_STLINE.LINENET, dbo.LG_311_01_INVOICE.TRCODE,
dbo.LG_311_ITEMS.CYPHCODE, dbo.LG_311_01_INVOICE.CAPIBLOCK_CREADEDDATE, dbo.LG_311_01_STLINE.AMOUNT
HAVING (dbo.LG_311_01_INVOICE.TRCODE = 8) OR
(dbo.LG_311_01_INVOICE.TRCODE = 3)
-------------------------------------------------------------------------------------
 
Sorunuzu başka bir kapanmış konunun altına değil de yeni soru olarak sorarsanız daha doğru olur. Sorunuzda belirttiğiniz Tarih_1 ve Tarih_2 kriterleri sorgunuzun Where kısmında olması lazım. Sorgunuzda böyle bir parametre yok iken olmayan parametreyi de excelde tanımlayamazsınız.
 
Yukarıdaki bahsettiğim olayı ölçütten yapamazsanız Queryde SQL kodlarına girip DATE>'05.01.2008' yazan kısmı DATE>? yapın. Aynı sonuca ulaşırsınız.

Sayın alibaskan sorgu içerisinde gerek ölçüt alanlarına gerek sql cümleme hiçbir şekilde ? ifadesini ekleyemedim. Sorgu görüntülenemiyor.

Bendeki sql cümlesinde birden fazla kriter mevcut bu sebepten olabilirmi?
 
Dış veri al yöntemi ile excel'den query'e parametre gönderilebiliyoy, peki özet tablodan query'e parametre gönderilebiliyor mu? (excelde herhangi bir hücreye parametre girilerek veya texbox içine parametreyi girerek yahuttta özel bir makro yaparak bu iş yapılabiliyormu?
yardımlarınız için şimdiden teşekkür ederim.
 
Alınan Sipariş Karlılık Analizi

Bu konuda kullanılan kod Logo'da Satır bazında karlılık analizi olarak adlandırılabilir...

Harika bir kod ;

Bende bu Fatura ve COST sonrasında alınabilecek bu raporun satış aşamasından dhaa önce ki sipariş aşamasında bir önceki gün COST değerlerine bakarak Sipariş Karlılık analizi sorgusunu hazırladım...

sorgu birazdaha sadeleştirilir ise ; SQL kodunu VBA koduna daha kolay çevirebileceğim...

Benim amacım bir USER form içerisinde sadece sipariş numarasını girerek bir karlılık analizi yapmak....

ilgili sql kodu aşağıdaki gibi ;

Kod:
SELECT     SIPFIS.DATE_ AS Tarih, SIPFIS.TIME_ AS Saat, SIPFIS.FICHENO AS Sipariş_No, STOK.PRODUCERCODE AS Barkodu, STOK.CODE AS [Stok Kodu], 
                      STOK.NAME AS [Stok Adı], SIPSATIR.AMOUNT AS Miktar, SIPSATIR.PRICE AS [Brüt.Br.Fiyat], SIPSATIR.TOTAL AS [Brüt.Tutar], 
                      SIPSATIR.VATMATRAH AS [Net Tutar],
                          (SELECT     TOP 1 OUTCOST
                            FROM          LG_086_01_STLINE
                            WHERE      STOCKREF = STOK.LOGICALREF AND (TRCODE = 51 OR
                                                   (TRCODE = 8)) AND LPRODSTAT = 0 AND LINETYPE = 0 AND OUTCOST <> 0
                            ORDER BY DATE_ DESC) AS BrMaliyet, SIPSATIR.AMOUNT *
                          (SELECT     TOP 1 OUTCOST
                            FROM          LG_086_01_STLINE
                            WHERE      STOCKREF = STOK.LOGICALREF AND (TRCODE = 51 OR
                                                   (TRCODE = 8)) AND LPRODSTAT = 0 AND LINETYPE = 0 AND OUTCOST <> 0
                            ORDER BY DATE_ DESC) AS [Toplam Maliyet], SIPSATIR.VATMATRAH - SIPSATIR.AMOUNT *
                          (SELECT     TOP 1 OUTCOST
                            FROM          LG_086_01_STLINE
                            WHERE      STOCKREF = STOK.LOGICALREF AND (TRCODE = 51 OR
                                                   (TRCODE = 8)) AND LPRODSTAT = 0 AND LINETYPE = 0 AND OUTCOST <> 0
                            ORDER BY DATE_ DESC) AS NETKAR
FROM         LG_086_ITEMS STOK INNER JOIN
                      LG_086_01_ORFLINE SIPSATIR ON STOK.LOGICALREF = SIPSATIR.STOCKREF INNER JOIN
                      LG_086_01_ORFICHE SIPFIS ON SIPSATIR.ORDFICHEREF = SIPFIS.LOGICALREF
WHERE     (SIPFIS.FICHENO = '00059704')
 
Son düzenleme:
bu başlığı kapatmışsınız ama benimde böyle bir sorunum var banada yardımcı olabilirmisiniz. beni,m sorgum aşağıdaki gibi:

SELECT
T0.DocDate AS Tarih,
T0.CardCode AS [Cari Kodu],
T0.CardName AS [Cari Açıklaması],
T1.ItemCode AS [Stok Kodu],
T1.LineTotal AS [Satır Toplamı],
dbo.OCRD.U_A2B_POL_BPCLS2 AS [Plasiyer Kodu]

FROM dbo.OINV AS T0 INNER JOIN dbo.INV1 AS T1 WITH (NOLOCK) ON T0.DocEntry = T1.DocEntry INNER JOIN dbo.OCRD ON T0.CardCode = dbo.OCRD.CardCode

WHERE
(T0.CANCELED = 'N') AND
(T0.DocType = 'I') AND
(T0.CardCode LIKE N'1%') AND
(T0.DocDate BETWEEN CONVERT(DATETIME, '2016-01-01 00:00:00', 102) AND CONVERT(DATETIME, '2016-06-30 00:00:00', 102)) AND (dbo.OCRD.U_A2B_POL_BPCLS3 = N'100') AND
(NOT (dbo.OCRD.U_A2B_POL_BPCLS2 = N'00')) AND
(NOT (T1.ItemCode LIKE N'S118P%')) AND
(NOT (T1.ItemCode LIKE N'S118N%'))
 
bu başlığı kapatmışsınız ama benimde böyle bir sorunum var banada yardımcı olabilirmisiniz. beni,m sorgum aşağıdaki gibi:

SELECT
T0.DocDate AS Tarih,
T0.CardCode AS [Cari Kodu],
T0.CardName AS [Cari Açıklaması],
T1.ItemCode AS [Stok Kodu],
T1.LineTotal AS [Satır Toplamı],
dbo.OCRD.U_A2B_POL_BPCLS2 AS [Plasiyer Kodu]

FROM dbo.OINV AS T0 INNER JOIN dbo.INV1 AS T1 WITH (NOLOCK) ON T0.DocEntry = T1.DocEntry INNER JOIN dbo.OCRD ON T0.CardCode = dbo.OCRD.CardCode

WHERE
(T0.CANCELED = 'N') AND
(T0.DocType = 'I') AND
(T0.CardCode LIKE N'1%') AND
(T0.DocDate BETWEEN CONVERT(DATETIME, '2016-01-01 00:00:00', 102) AND CONVERT(DATETIME, '2016-06-30 00:00:00', 102)) AND (dbo.OCRD.U_A2B_POL_BPCLS3 = N'100') AND
(NOT (dbo.OCRD.U_A2B_POL_BPCLS2 = N'00')) AND
(NOT (T1.ItemCode LIKE N'S118P%')) AND
(NOT (T1.ItemCode LIKE N'S118N%'))

Benim istediğim tarihi excelde bir hücreye girmek ve tarihe göre filtreleme yapıp veri çekmek
 
Geri
Üst