• DİKKAT

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

Sql kodundaki tarih kısıtını excel hücresinden alma

kodları boşuna istemedik herhalde :)

ne olduğunu tam olarak görmek için, illa biryerlere bağlanmak için değildi.

Lütfen yanlış anlamayın. Dosyayı eklemenin gereksiz olduğunu düşündüm çünkü neticede bağlantı makroları çalışmayacak vs. Ama ben yine de ekleyeyim. Bahsettiğim kod G2 hücresinde. Dosya, bağlantı makrosuyla programa bağlanıyor, daha sonra verileri güncelle butonuyla da verileri alıyoruz. Verileri alırken benim kullandığım tek kod o sql kodu yani. Bu arada en son yazdığınızı da denedim. Olmadı.

Sayın halit3, son hakkınızda size müjde vermek isterdim ama üzgünüm:)

Hakkınızı helal edin. Çok uğraştırdım sizi. Neyse ben biraz daha araştırayım. İnşallah çözüm bulursam paylaşırım.
Bu arada dosyanın sadece 1 sayfasını bile yükleyemedim 1 MB tan fazla olduğu için. O yüzden printini yolluyorum. Ne kadar faydası olabilir bilmiyorum:)
 

Ekli dosyalar

  • tarih png.jpg
    tarih png.jpg
    20.6 KB · Görüntüleme: 19
xl dosyası beklerken jpg ile karşılaştık :)

Konu benim için kapanmıştır. Sanırım anlaşamayacağız.
 
xl dosyası beklerken jpg ile karşılaştık :)

Konu benim için kapanmıştır. Sanırım anlaşamayacağız.

Sayın Necdet Yeşertener,
Dosyanın aslı 31.3 MB. Ben sadece 1 Sheet'ini yükleyeyim dedim, o da 1 MB'ı geçiyor. Onu da yüklemedi. Benim de yapabileceğim bir şey yok. Yoksa sorun benim sorunum, neden dosyayı görüp de bir çözüm üretmenizi istemeyeyim.
Neyse, şimdiye kdar harcadığınız vakit için teşekkür ederim.
İyi çalışmalar.
 
Merhaba,

Son bir çaba daha :)

Sanırım kodunuz G2 hücresindeydi G2:
Tarihi A1 hücresinden alıyor, onu siz kendinize göre uyarlayınız ve deneyiniz.

="SELECT SUM(TBLMCEK.TUTAR) FROM TBLMCEK INNER JOIN TBLBNKHESSABIT ON TBLBNKHESSABIT.NETHESKODU=TBLMCEK.SC_VERILENK WHERE TBLMCEK.VADETRH < """ & METNEÇEVİR(A1; "GG.AA.YYYY") & """" & " AND TBLMCEK.SC_SONDUR=""B"" AND TBLBNKHESSABIT.ACIKLAMA=""INGBANK TEMİNAT ÇEKLERİ"" GROUP BY TBLBNKHESSABIT.ACIKLAMA "
 
Merhaba,

Son bir çaba daha :)

Sanırım kodunuz G2 hücresindeydi G2:
Tarihi A1 hücresinden alıyor, onu siz kendinize göre uyarlayınız ve deneyiniz.

="SELECT SUM(TBLMCEK.TUTAR) FROM TBLMCEK INNER JOIN TBLBNKHESSABIT ON TBLBNKHESSABIT.NETHESKODU=TBLMCEK.SC_VERILENK WHERE TBLMCEK.VADETRH < """ & METNEÇEVİR(A1; "GG.AA.YYYY") & """" & " AND TBLMCEK.SC_SONDUR=""B"" AND TBLBNKHESSABIT.ACIKLAMA=""INGBANK TEMİNAT ÇEKLERİ"" GROUP BY TBLBNKHESSABIT.ACIKLAMA "

Malesef bu da olmadı. Bu arada kod G2 hücresinde evet. Her defasında ben o kodun içine girerek tarihi değiştirmek istemediğim için, tarihi herhangi bir excel hücresine girip, kodun o veriyi o excel hücresinden almasını istiyordum. Çünkü bunu kullanacak çalışanın kafasının karışmaması gerek kodlarla. Ya bir excel hücresinden veya kod çalışacağı zaman çıkacak bir boxtan giriş yapabilseydim güzel olurdu. Çünkü raporun son kullanıcısı da haklı olarak bunu istiyor.
 
İşlemi doğru yaptığınızdan emin olmak için 16. mesajdaki kodu kendi kodunuza ekliyerek buraya eklermisiniz. çünkü tırnak işareti işlerinde bir karışıklık var gibi geliyor bana.
 
Tarihi A1 hücresinden aldınız mı?

bu bir, ikincisi G2 hücresini kopyala özel yapıştır ile başka bir hücreye yapıştır ve sonucu inceleyin. doğrudan yazmış gibi görünüyor mu? olmadı diyorsunuz başka birşey demiyorsunuz.

Halit beyin dediği gibi tırnaklar burada başa bela.
 
ben bir örnek dosya ekliyorum buradaki düğmelere sırasıyla tıkla ve durumu değerlendir.

not :kod A1 hücresindeki tarih değerini alıyor.
 

Ekli dosyalar

.

Bu olur mu?

Kod:
Dim tarih As String 
tarih = worksheet("Sheet1").Range("G2").Value 

.....
   ......WHERE TBLMCEK.VADETRH < tarih


...
 
Merhaba,
Elimizde "SELECT SUM(TBLMCEK.TUTAR) FROM TBLMCEK INNER JOIN TBLBNKHESSABIT ON TBLBNKHESSABIT.NETHESKODU=TBLMCEK.SC_VERILENK WHERE TBLMCEK.VADETRH < "05.01.2011" AND TBLMCEK.SC_SONDUR="B" AND TBLBNKHESSABIT.ACIKLAMA="INGBANK TEMİNAT ÇEKLERİ" GROUP BY TBLBNKHESSABIT.ACIKLAMA " şeklinde bir sql sorgusu var. Bu sorgudaki "05.01.2011" tarihini, her defasında girip kodun içinden düzeltmek yerine; kodun bu tarihi, tarihin girileceği bir excel hücresinden veya bir inputboxtan almasını nasıl sağlayabiliriz?


Kod:
SELECT SUM(TBLMCEK.TUTAR) FROM TBLMCEK INNER JOIN TBLBNKHESSABIT ON TBLBNKHESSABIT.NETHESKODU=TBLMCEK.SC_VERILENK WHERE TBLMCEK.VADETRH < '" & Sayfa1.Range("S14") & "' AND TBLMCEK.SC_SONDUR="B" AND TBLBNKHESSABIT.ACIKLAMA="INGBANK TEMİNAT ÇEKLERİ" GROUP BY TBLBNKHESSABIT.ACIKLAMA

Deneyin bakalım.
 
Hücredeki tarih formatı uygun olmayabilir. Tarih kısıtlaması şu iki şekilde yazılabilir:

Hücrede tarih SQL server formatında ise, yani YYYY-GG-AA
Tarih, tek tırnak içine alınacaktır.
Kod:
- [B]WHERE TBLMCEK.VADETRH < '" & Range("G2").Value & "' And ...[/B]
- Hücredeki tarih Türkiye standardında ise, yani GG.AA.YYYY
Bunu ya SQL server formatına çevirip yukarıdaki gibi yazarsınız yada, tarihi sayıya çevirerek yazarsınız. Sayıya çevirerek aşağıdaki gibi olacaktır. Burada tarih sayı olarak karşılaştırılcağı için tek tırnak kullanılmaz.

Kod:
- [B]WHERE TBLMCEK.VADETRH < " & Cdbl(Cdate(Range("G2").Value)) & " And[/B] ...
 
Arkadaşlar günaydın,
Sabah ilk işim önerilen her şeyi denemek oldu. Ama malesef yine bir sonuca ulaşamadım. Ekteki hata mesajını alıyorum hep.
Tırnak işaretlerine dikkat etmediğim kafanıza takılıyor gibi ama emin olun her kombinasyonu deniyorum. Önce sizin verdiğinizi olduğu gibi deniyorum. Daha sonra bir tırnağı siliyorum. Hiç tırnak olmadan deniyorum. Aklınıza gelecek her kombinasyonda deniyorum. Fakat her seferinde ekteki hata mesajı tekrarlanıyor.
Şunu tekrar söylemek istiyorum. Rapordaki verileri getiren sql sorgusu, G2 hücresinde yer almaktadır, tarih değil. Tarih, sabit bir kısıt olarak bu kodun içinde yer alıyor ama benim istediğim koda girip değiştirmek yerine benim tarih girebileceğim bir hücre olsun, mesela A1 hücresi. Ben A1 deki tarihi değiştireyim, G2 deki kod da tarih kısıtını A2 ye göre güncellesin. Sadece sql kodunu değiştirmek yetmiyor sanırım. Visual basice girip bazı tanımlar yapmak gerekiyor. Bazı arkadaşlar da onlarla ilgili kod vermişler "Dim as string" gibi. Ben bunu visual basice girip bu formülün kullanıldığı sayfaya yapıştırdım ama compile error veriyor. Yanlış yere mi koyuyorum acaba. Nereye koymam gerekir sizce?
 

Ekli dosyalar

  • hata-mesaji.jpg
    hata-mesaji.jpg
    20.8 KB · Görüntüleme: 13
SQL formatı neyse onu vermek lazım. CONVERT(DATETIME,'" & Range("G2").value & "',103) ya da 101 iş görebilir.
 
Son düzenleme:
Eklediğiniz resim ile verdiğim kod arasında bir ilişki göremedim ben.
Tarih'i hangi hücreden alacaksanız, o hücre ismini verdiğim kodda yazmanız yeterlidir.
O şekilde de olur, Erkan bey'in verdiği şekilde de..
Aksi olmaması gibi bir durum söz konusu olamaz.
Başka bir yerlerde hata yapıyorsunuz demektir.
 
Eklediğiniz resim ile verdiğim kod arasında bir ilişki göremedim ben.
Tarih'i hangi hücreden alacaksanız, o hücre ismini verdiğim kodda yazmanız yeterlidir.
O şekilde de olur, Erkan bey'in verdiği şekilde de..
Aksi olmaması gibi bir durum söz konusu olamaz.
Başka bir yerlerde hata yapıyorsunuz demektir.

Başka bir yerde hata yapmadığımı düşünüyorum, çünkü kodda tarihin yer aldığı yeri değiştirince bu hata oluyor. Normal olarak tarih yazarsam sorun çıkmıyor. Eklediğim hata mesajı sizin kodu yazınca çıkan olmayabilir. Ama hepsinde aynı hata çıktığı için örnek olarak bir tanesini ekledim.
 
Benim eklediğim mesaja göre hazırladığınız kodu buraya ekler misiniz?
 
Merhaba,

G2 hücresindeki ifadeyi kullandığınız makro kodunu foruma eklermisiniz.
 
Merhaba,

Ekte bir örnek dosya hazırladım. Dosya içinde gerekli açıklamaları yaptım. Denermisiniz.
 

Ekli dosyalar

Geri
Üst