Excel Forum
ALTIN ÜYELİK Hakkında Bilgi


Geri Git   Excel Forum > Diğer Yazılımlar > SQL
Atatürk
Şifremi Unuttum

DUYURU SİSTEMİ / REKLAM PANOSU

SQL Yapısal sorgulama dili hakkında sorularınızı buraya sorabilirsiniz.

Özel Arama


Yanıtla
 
Paylaş Konu Araçları Görünüm Modları
Eski 15-04-2016, 19:03   #1
a_self_lion
Altın Üye
 
Giriş: 14/01/2005
Mesaj: 747
Excel Vers. ve Dili:
Ofis 2007
Varsayılan OLE Sorgusu ile SQL veritabanı tablodan veri çekmek

Merhaba arkadaşlar Dışardan veri tabanından yani SQL den OLE Sorgusu ile sorgu çekerken Komut Metni bölümüne yazmış olduğum
sorgumu şudur. SELECT * FROM XXXXX WHERE XXXXXX_TAR BETWEEN '2016-02-01' AND '2016-02-29' dır buradaki tarihleri benim
Excelde Parametre Sayfam var oradan aldırmam mümkün müdür. A4 hücremde başlangıç tarihi A5 hücresinde bitiş tarihim mevcuttur. Her sorguyu değiştirmektense böyle parametreden aldırmam daha mantıklı olacak gibi. Zira başka buna benzer en az 20 çeşit sorgum var hepsine girip tarih değiştirmek zorunda kalıyorum. Teşekkür ederim.
__________________
Bilgiler paylaşıldıkça çoğalır...!!!
EXCEL2010tr
a_self_lion Çevrimdışı   Alıntı Yaparak Cevapla
Eski 15-04-2016, 20:54   #2
alicimri
 
Giriş: 12/12/2015
Mesaj: 381
Excel Vers. ve Dili:
Ofis 2003
Varsayılan

Sayın a_self_lion
Access'ten excel'e veri al ile veri çektim. sorunuzu araştırırken aşağıdaki adreste bulduğum kodu deneme yaparak Refresh sırasında CommandText'in parametresini sayfa2 den aldırdım. Kendi dosyanıza uyarlayabilirseniz.
https://msdn.microsoft.com/en-us/lib.../ff821552.aspx
Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Sub Makro2()
Set qtQtrResults = Worksheets(1).QueryTables(1)
With qtQtrResults
 .CommandType = xlCmdSql
 .CommandText = "SELECT Tablo1.a1 FROM Tablo1 WHERE Tablo1.a1=" & Sheets("Sayfa2").Range("a1")
 .Refresh
End With
End Sub

Bu mesaj en son " 15-04-2016 " tarihinde saat 21:07 itibariyle alicimri tarafından düzenlenmiştir....
alicimri Çevrimdışı   Alıntı Yaparak Cevapla
Eski 15-04-2016, 21:51   #3
Mehmet Şahin
Destek Ekibi
 
Mehmet Şahin kullanıcısının avatarı
 
Giriş: 13/10/2005
Şehir: Bursa * Rize
Mesaj: 1,307
Excel Vers. ve Dili:
Excel 2010 - 2013 Türkçe - İngilizce
Varsayılan

Aşağıdaki gibi dener misiniz?

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
...BETWEEN '" format(range("a4"),"yyyy-mm-dd") & "' AND '" & format(range("a5"),"yyyy-mm-dd") & "'"
__________________
Mutluluk paylaşıldığında gerçektir.

Into the Wild
Mehmet Şahin Çevrimdışı   Alıntı Yaparak Cevapla
Eski 15-04-2016, 23:28   #4
alicimri
 
Giriş: 12/12/2015
Mesaj: 381
Excel Vers. ve Dili:
Ofis 2003
Varsayılan

Tarih sorgu metni sayfa, tablo, hücre ve alan isimlerini kendinize göre uyarlayın.
Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
 "SELECT Tablo1.a1 FROM Tablo1 WHERE Tablo1.a1 Between " & CDbl(Sheets("Sayfa2").Range("a1")) & " And " & CDbl(Sheets("Sayfa2").Range("b1"))
alicimri Çevrimdışı   Alıntı Yaparak Cevapla
Eski 18-04-2016, 09:44   #5
a_self_lion
Altın Üye
 
Giriş: 14/01/2005
Mesaj: 747
Excel Vers. ve Dili:
Ofis 2007
Varsayılan

ali bey ve Mehmet bey teşekkür ederim ama kullandığım yer makro değil
OLE DB sorgusu Düzenlemede Komut Metni olan yere yazmam gerekiyor. Daha sonraki aylarda sadece gerekli yerden tarihleri değiştirip yenile yapamam yeterli olacaktır.

SELECT * FROM xxxx WHERE xxxxx_tar BETWEEN '"CDbl(Sheets(
"DigerHesapalamar").Format(Range("D2"),"YYYY-MM-DD") & "'AND '" & CDbl(Sheets("DigerHesapalamar").Format(Range("E2") ,"YYYY-MM-DD") & "'"


ekran görüntüsü aşağıdadır.
__________________
Bilgiler paylaşıldıkça çoğalır...!!!
EXCEL2010tr
a_self_lion Çevrimdışı   Alıntı Yaparak Cevapla
Eski 18-04-2016, 12:55   #6
alicimri
 
Giriş: 12/12/2015
Mesaj: 381
Excel Vers. ve Dili:
Ofis 2003
Varsayılan

Sayın a_self_lion
Ole DB Sorgu Düzenle İletişim Kutusundaki Komut Metni; Ya Manuel olarak değiştirilebiliyor yada 2 No mesajımdaki Macro ile değiştirilebiliyor. Yani Komut Metnine Direkt Sayfa ve Hücre Referansı veremiyorsunuz.
Aşağıdaki satır Komut Metnini değiştiriyor. Bu satırı siz kendinize göre ayarlayabilirsiniz.
Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
 .CommandText = "SELECT Tablo1.a1 FROM Tablo1 WHERE Tablo1.a1=" & Sheets("Sayfa2").Range("a1")
Aşağıdaki satır ise "yenile yapıyor"
Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
 .Refresh

Bu mesaj en son " 18-04-2016 " tarihinde saat 13:24 itibariyle alicimri tarafından düzenlenmiştir....
alicimri Çevrimdışı   Alıntı Yaparak Cevapla
Eski 18-04-2016, 14:47   #7
a_self_lion
Altın Üye
 
Giriş: 14/01/2005
Mesaj: 747
Excel Vers. ve Dili:
Ofis 2007
Varsayılan

Kusura bakmayın Ali bey ben olayı sonra kavradım aslında macro ile müdahale daha mantıklı. Çünkü benim 9 adet aynı çalışma kitabımda ayrı sayfalar da farklı bağlantılardan bu tarz tablolarım var bunlara her bitine gidip tek tek yenileme demek yorucu olurdu ve hatalara neden olabilirdi. Yanlış düşünmüyorsam.

tarihi değiştirdiğim Digerhesaplamalar sayfamda bir command koyup macro ile sizin dediğiniz gibi ilgili sayfalardaki ilgili tabloları tarihleri aldırarak kendimiz bir tuşla yenileyebilir.
Ben içine girip macro kaydını açarak farazi bir işlem yaptım aldığım macro kaydı şu şekilde
Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
'
' Makro2 Makro
'

'
    Range("BT16416").Select
    With Selection.ListObject.QueryTable
        .Connection = Array( _
        "OLEDB;Provider=SQLOLEDB.1;Persist Security Info=True;User ID=mmm;Initial Catalog=DATA2016;Data Source=192.168.5.2;Use Procedure for " _
        , _
        "Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=xxxx-PC;Use Encryption for Data=False;Tag with column collation w" _
        , "hen possible=False")
        .CommandType = xlCmdSql
        .CommandText = Array( _
        "SELECT * FROM xxxxWHERE xxxx_TAR BETWEEN '2016-03-01' AND '2016-03-31'")
        .Refresh BackgroundQuery:=False
    End With
Bura öğrenmek istediğim bu 9 adet aynı çalışma kitabımdaki sayfalarımdaki bu tablolarımın isimleri nedir veya onlara nasıl hükmedeceğim. Kusura bakmazsanız kısaca bir örnek verirmisiniz. Diyelim ki ben Macroyu Digerhesaplamalar sayfamda yapıp satışlar sayfam maliyetler saymadaki bu tablolarımın ilgili yere sizin dediğiniz gibi tarihlerini aldırıp tek tek nasıl yenile diyebilirim.
Umarım ne demek istediğimi anlatabilmişimdir.
Teşekkür ederim.
__________________
Bilgiler paylaşıldıkça çoğalır...!!!
EXCEL2010tr

Bu mesaj en son " 18-04-2016 " tarihinde saat 15:09 itibariyle a_self_lion tarafından düzenlenmiştir....
a_self_lion Çevrimdışı   Alıntı Yaparak Cevapla
Eski 18-04-2016, 17:45   #8
alicimri
 
Giriş: 12/12/2015
Mesaj: 381
Excel Vers. ve Dili:
Ofis 2003
Varsayılan

Sayın a_self_lion
Bir ana excel dosyasından 9 ayrı excel dosyasında değişik sayfalardaki QueryTable larınızı, ana excel dosyasında girdiğiniz tarih aralığına göre, bir defada Refresh etmek mi istiyorsunuz.
Bunun için 9 ayrı dosya yapınız (Aynı klasörde mi? Sayfa sayı ve Sayfa adları aynı mı?)
alicimri Çevrimdışı   Alıntı Yaparak Cevapla
Eski 18-04-2016, 17:59   #9
a_self_lion
Altın Üye
 
Giriş: 14/01/2005
Mesaj: 747
Excel Vers. ve Dili:
Ofis 2007
Varsayılan

Alıntı:
alicimri tarafından gönderildi Mesajı Görüntüle
Sayın a_self_lion
Bir ana excel dosyasından 9 ayrı excel dosyasında değişik sayfalardaki QueryTable larınızı, ana excel dosyasında girdiğiniz tarih aralığına göre, bir defada Refresh etmek mi istiyorsunuz.
Bunun için 9 ayrı dosya yapınız (Aynı klasörde mi? Sayfa sayı ve Sayfa adları aynı mı?)

Evet Hayır ali bey bey şöyle bir tane excel dosyam var xxRaporum.xlsb bunun içinde Satışlar1 Satışlar2 Satışlar3 Satışlar4 Satışlar5 Satışlar6 Satışlar7 Satışlar8 Satışlar9 sayfalarım var ayrıca birde Digerhesaplamalar sayfam var.
digerhesaplamalar sayfamdan d2 ve e2 hücrelerine tarihleri yazdım 01.03.2016 31.03.2016 şeklinde giriyorum. Extrabilgi (lakin sql 2016-03-01 2016-03-31 bu formatta anlıyor tarihi.) yine digerhesaplamalar sayfamda sizin dediğiniz gibi bir macrodan bu bütün sayfalarımdaki tabloları bir seferde güncellemek istiyorum. Hepsinin sorgusu bir birinden doğal olarak farklı.
__________________
Bilgiler paylaşıldıkça çoğalır...!!!
EXCEL2010tr
a_self_lion Çevrimdışı   Alıntı Yaparak Cevapla
Eski 18-04-2016, 20:22   #10
alicimri
 
Giriş: 12/12/2015
Mesaj: 381
Excel Vers. ve Dili:
Ofis 2003
Varsayılan

Sayın a_self_lion

Veri tabanının aynı Tablosundan aynı bilgileri aldırmayacağınızı düşünerek Komut Metnini ilk önce F (F2-F10 hücrelerinde) sütununda formülle oluşturun, döngü ile Satışlar1 sayfasındaki QueryTable ya DigerHesapalamar sayfasındaki F2 hücresindeki Metni, Satışlar2 sayfasındaki QueryTable ya DigerHesapalamar F3 hücresindeki Metni................ aldıran kod aşağıda.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Makro2 Makro
for i = 1 To 9 
Sheets("Satışlar" & i).QueryTables(1).CommandText = Sheets("DigerHesapalamar").Range("F" & i +1)
Sheets("Satışlar" & i).QueryTables(1).Refresh  
Next
End Sub
Her sayfada önceden 1 adet QueryTable nin oluşturulmuş olması gerekiyor.

Bu mesaj en son " 18-04-2016 " tarihinde saat 20:36 itibariyle alicimri tarafından düzenlenmiştir....
alicimri Çevrimdışı   Alıntı Yaparak Cevapla
Yanıtla


Konu Araçları
Görünüm Modları

Gönderme Kuralları
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
SimgelerAçık
[IMG] kodu Açık
HTML kodu Kapalı


Saat 13:55


Bu forum Elit NET - www.elitnet.com.tr tarafından sunulmaktadır.

Excel Eğitimi - Mobil Uygulama - Çorlu - Çorlu Web Tasarım - Tarot Falı - invest in turkey - Lingerie - Dyeing Machine - Karton Bardak- Çorlu Özel Eğitim- Site Yönetimi- Led Aydınlatma- Pronet Tekirdağ- Çorlu Kamera- Pronet Edirne- Pronet Kırklareli- Pronet Çerkezköy- Pronet Çorlu- Pronet Lüleburgaz- Pronet Keşan- Çorlu Araç Takip- Çorlu Su Arıtma- Boru Profil- Gebze Emlak- Beylikdüzü Temizlik- İstanbul Burun Estetiği- Bakır Sülfat- Rampa- Rotary- Çorlu İnternet Sitesi- youngblood- Çorlu Palet- Çerkezköy Palet- Çorlu Prefabrik- Çorlu Sürücü Kursu- Çorlu Sandviç Panel- Şişli Avukat- Korona Test Kalemi- Çorlu Vinç- Çorlu Pimapen Tamiri-
Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Advertisement System V2.6 By   Branden