SQL den excel veri cekme ( İki tarih ekleme başlangıç ve bugün )

Katılım
10 Eylül 2019
Mesajlar
19
Excel Vers. ve Dili
2019 Türkçe
Merhaba,
Kullanmakta oldugum V3 nebim programında ki mevcut içindeki raporları Kullanmakta oldugumuz Server PROFİLLER kısımdan sorguyu alarak Excel de Microsoft Query den verileri excel cekiyorum ama bu işlemi yaparken mecburen Nebim tarafından başlangıç tarihini 01,01,1900 bitiş tarihini ise 01,01,2050 olarak güzelce istediğim gibi veriler geliyor.bunun ardından PİVOT table ürünleri renk beden gibi istediğim gibi yorumluyorum...
Burada sormak istediğim soru şu dur ? boş bir hüçrede yada başka nerde olabilir bilemedim ama ilk sorguyu değiştirmeden yada sürekli sorgunun içine girip sürekli tarihleri değiştirmekle uğraşmadan boş bir hüçrede başlangıç tarih ve bitiş tarihlerini istediğim tarihleri yazarak verileri aynen şekilde cekebilir miyim ?
yardımlarınız için teşekkürler..
 
Katılım
24 Ağustos 2020
Mesajlar
4
Excel Vers. ve Dili
2010
Veritabanına baglantı sağladıktan sonra declare edilecek alanlar ile iki hücreden parametre olarak alırsınız. Yerli değil yabancı kaynakları kullanabilirsiniz.
ancak tarih bilgisi sql sürümüne göre sanırım değişik şekillerde denemek gerekiyordu.
 
Katılım
4 Ocak 2010
Mesajlar
2,074
Excel Vers. ve Dili
OFFICE 2007 PRO TR - Win7 X64
Merhabalar,

Ado yöntemiyle excelden iki tarih arası rapor çekilebilir örnek sorguyu ekleyin direk onun üzerinden dosya haliyle paylaşayım.
 

Rafet

Altın Üye
Katılım
24 Mart 2005
Mesajlar
230
Excel Vers. ve Dili
Ofice 2010 - Türkçe
Merhaba ,

SQL de tarih formatı "yıl-ay-gün" "yyyy-mm-dd" olarak algılıyor.
Bu nedenle excelde hüçreden veriyi alırken . Mesala tarih "A1" hüçresinde ise tarih = Format(Range("A1"),"yyyy-MM-dd") olarak alıp cumlenin içinede " & tarih & " olarak yerleştirmek gerekiyor.

"A1" hüçrerisini seçmek yerine hüçre adlandırarak yapmak daha kullanışlı olacak.
Kesip kopyaladığınız sutun ekleyip sutun sidiğinizde "A1" hüsresini yeri değişir ama adlandırdığınız hüçrenin adresi aynı kalır.

Yıllardır view lerin içine kısıtları aşağıdaki kod ile atarım.
Kod:
Tarih1_ = Format(Range("tarih1"), "yyyy-MM-dd")  /* excel sayfadaki "tarih1" olarak adlandırılmış hüçreden başlangoç tarihini çekiyor */
Tarih2_ = Format(Range("tarih2"), "yyyy-MM-dd") /*excel sayfadaki "tarih2" olarak adlandırılmış hüçreden bitiş tarihini çekiyor */
If Tarih1_ <> Empty Then  /* tarih kisiti hiç girilmemişse atlıyor */
    Tarih = " AND Od.Tarih BETWEEN   '" & Tarih1_ & "' AND '" & Tarih1_ & " 23:59'"   /*tarih kısıtlarından saat dakka var ise ilk baştan son başa kadar almak için. */
    If Tarih2_ <> Empty Then Tarih = " AND Od.Tarih BETWEEN  '" & Tarih1_ & "' AND '" & Tarih2_ & " 23:59' "  /* bitiş zamanı belirtilmiş ise . */
End If

Grup_ = Range("Grup")
If Grup_ <> Empty Then
    Grup = "    AND (COALESCE(Grup,'.') LIKE '%" & Grup_ & "%' "   /*  İçreren tüm veriler.  */
    Grup = Grup & " OR COALESCE(Grup,'.') IN ('" & Replace(Grup_, ",", "','") & "') "   /*  eşit kısıtı kullanmak yerine eşit olarak aradığım kısıtların arasına "," koyarak birden çok eşit olan grupları çekmemi sağlıyor. */
    Grup = Grup & " ) "
End If



kisit = "";
kisit = kisit & tarih
kisit = kisit & grup

sorgu = "";
sorgu = sorgu & " Select T.* " ;
sorgu = sorgu & " From TABLOADI T ";
sorgu = sorgu & " WHERE 1= 1 "
sorgu = sorgu & kisit
 
Son düzenleme:

Rafet

Altın Üye
Katılım
24 Mart 2005
Mesajlar
230
Excel Vers. ve Dili
Ofice 2010 - Türkçe
tarih ile ilgili dinamik tarihler kullanmak istiyorsanda buradan yararlana bilirsin.


Kod:
SELECT 'Bugün' Aciklama            ,CONVERT(VARCHAR(10),GETDATE(),20) AS Tarih            UNION ALL
SELECT 'Yarin' Aciklama            ,CONVERT(VARCHAR(10),GETDATE()+1,20) AS Tarih            UNION ALL
SELECT 'Dün' Aciklama            ,CONVERT(VARCHAR(10),GETDATE()-1,20) AS Tarih            UNION ALL

SELECT 'EnBaştan'                ,'1900-01-01'        UNION ALL
SELECT 'EnSona'                    ,'2999-12-31'        UNION ALL

SELECT 'AyBaşı'                    ,CONVERT(VARCHAR(10),DATEADD(dd,-(DAY(GETDATE())-1),GETDATE()),20) AS Date_Value                UNION ALL
SELECT 'AySonu'                    ,CONVERT(VARCHAR(10),DATEADD(dd,-(DAY(DATEADD(mm,1,GETDATE()))),DATEADD(mm,1,GETDATE())),20)    UNION ALL

SELECT 'HaftaBaşı'                , DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 0)        UNION ALL
SELECT 'HaftaSonu'                , DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 6)        UNION ALL

SELECT 'GelecekHaftaBaşı'        , DATEADD(ww, DATEDIFF(ww,0,GETDATE())+1, 0)    UNION ALL
SELECT 'GelecekHaftaSonu'        , DATEADD(ww, DATEDIFF(ww,0,GETDATE())+1, 6)    UNION ALL

SELECT 'GeçenAyBaşı'            ,CONVERT(VARCHAR(10),DATEADD(dd,-(DAY(DATEADD(mm,1,GETDATE()))-1),DATEADD(mm,-1,GETDATE())),20)        UNION ALL
SELECT 'GeçenAySonu'            ,CONVERT(VARCHAR(10),DATEADD(dd,-(DAY(GETDATE())),GETDATE()),20) AS Date_Value                UNION ALL

SELECT 'Geçen2AyBaşı'            ,CONVERT(VARCHAR(10),DATEADD(dd,-(DAY(DATEADD(mm,1,GETDATE()))-1),DATEADD(mm,-2,GETDATE())),20)        UNION ALL
SELECT 'Geçen2AySonu'            ,CONVERT(VARCHAR(10),DATEADD(dd,-(DAY(DATEADD(mm,-1,GETDATE()))),DATEADD(mm,-1,GETDATE())),20) AS Date_Value                UNION ALL

SELECT 'SonrakıAybaşı'            ,CONVERT(VARCHAR(10),DATEADD(dd,-(DAY(DATEADD(mm,1,GETDATE()))-1),DATEADD(mm,1,GETDATE())),20)        UNION ALL
SELECT 'SonrariAySonu'            ,CONVERT(VARCHAR(10),DATEADD(dd,-(DAY(DATEADD(mm,1,GETDATE()))),DATEADD(mm,2,GETDATE())),20)    UNION ALL


SELECT 'YılBaşı'                ,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)        UNION ALL
SELECT 'YılSonu'                ,DATEADD(dd,-1,DATEADD(yy,0,DATEADD(yy,DATEDIFF(yy,0,getdate())+1,0))) UNION ALL

SELECT 'GelecekYılBaşı'            ,DATEADD(dd,-1,DATEADD(yy,0,DATEADD(yy,DATEDIFF(yy,0,getdate())+1,1)))   UNION ALL
SELECT 'GelecekYılSonu'            ,DATEADD(dd,-1,DATEADD(yy,+1,DATEADD(yy,DATEDIFF(yy,0,getdate())+1,0)))   UNION ALL

SELECT 'BeşGünÖnce'                    ,CONVERT(VARCHAR(10),GETDATE()-5,20) AS Tarih UNION ALL
SELECT 'BeşGünSonra'                ,CONVERT(VARCHAR(10),GETDATE()+5,20) AS Tarih UNION ALL
 
SELECT 'OnGünÖnce'                ,CONVERT(VARCHAR(10),GETDATE()-10,20) AS Tarih UNION ALL
SELECT 'OnGünSonra'                ,CONVERT(VARCHAR(10),GETDATE()+10,20) AS Tarih --UNION ALL
Grup olarak kendi kodlarımdım.
Alıntı değildir.
 
Üst