Sayfayı Yazdır | Pencereyi Kapat

Sql sorgusunda tarih kisitini Excel'den getirme

Nereden Yazdırıldığı: ERP Nedir? | Türkiye'nin ERP Forum Platformu
Kategori: ERP Genel
Forum Adı: ERP Excel Entegrasyonları
Forum Tanımlaması: ERP Excel Entegrasyonları İle İlgili Bilgiler ve Sorular İçin...
URL: http://www.erpne.org/forum_posts.asp?TID=3015
Tarih: 08 Haziran 2025 Saat 01:37
Program Versiyonu: Web Wiz Forums 11.10 - http://www.webwizforums.com


Konu: Sql sorgusunda tarih kisitini Excel'den getirme
Mesajı Yazan: kuzey_yolcu
Konu: Sql sorgusunda tarih kisitini Excel'den getirme
Mesaj Tarihi: 09 Mart 2012 Saat 09:40
Merhaba arkadaslar,
Extend'de NETSIS_DATA fonksiyonunu kullanarak verileri getiriyorum.
A2 hücresinde
 =NETSIS_DATA("SAYIM";"A5";32767;SAYIM!B2;"X12")
fonksiyonu yer aliyor.
B2 hücresinde de SQL sorgusu var. Mesela asagidaki sorgu 15.02.2012 tarihli sayimi getiriyor. 

SELECT SAYIMOTR.TARIH, STSABIT.GRUP_KODU, SAYIMOTR.STOK_KODU, SAYIMOTR.STOK_ADI, SAYIMOTR.MIKTAR from SAYIMOTR INNER JOIN STSABIT ON SAYIMOTR.STOK_KODU=STSABIT.STOK_KODU WHERE SAYIMOTR.TARIH=”02.15.2012” AND SAYIMOTR.DEPO_KODU=1

Bu rapor için degil ama baska raporlar için tarih kisitini sürekli degistirmem gerekebiliyor. Tarihi, bu hücreye (B2) girip tarih kismini bulup degistirmek yerine bir excel hücresine girmek istiyorum, örnegin C2 olsun. Ben C2'ye 20.02.2012 girdigimde, B2 hücresindeki sorgudaki tarih kisiti degissin, fonksiyon ona göre verileri getirsin. Bir textbox ile de olabilir, excel hücresi de olabilir, farketmez.

& Cells(2, "C").Value &   

& CDate(Cells(2, "C").Value) &

" & Cdbl(CDate(Cells(2, "C").Value) & "

gibi çözümler önerildi ama ise yaramadi. Hep hata verdi. Baska nasil yapabiliriz?


-------------
Sistem, çözümdür.
Sistem sonuçları üretir, insanlar sistemi yönetir.



Cevaplar:
Mesajı Yazan: mbaykan
Mesaj Tarihi: 09 Mart 2012 Saat 10:27
B2 hücresi
="SELECT SAYIMOTR.TARIH, STSABIT.GRUP_KODU, SAYIMOTR.STOK_KODU, SAYIMOTR.STOK_ADI, SAYIMOTR.MIKTAR from SAYIMOTR INNER JOIN STSABIT ON SAYIMOTR.STOK_KODU=STSABIT.STOK_KODU WHERE SAYIMOTR.TARIH="""&D2&""" AND SAYIMOTR.DEPO_KODU=1"

D2 hücresi
=METNEÇEVIR(C2;"aa/gg/yyyy")  ya da =TEXT(C2;"mm/dd/yyyy")

ile C2 ye girdiginiz tarihi degisken yapar

D2'yi kullanmayacaksaniz formülü &METNEÇEVIR(C2;"aa/gg/yyyy")& seklinde yazarsiniz

kolay gelsin



-------------
Mehmet Baykan


Mesajı Yazan: kuzey_yolcu
Mesaj Tarihi: 09 Mart 2012 Saat 10:48
Merhaba,
Yalniz söyle bir sey var. Ilk mesajimda belirttigim gibi formül A2 hücresinde. A2 hücresi = ile basliyor, NETSIS_DATA fonksiyonu orda yani. B2 hücresinde ise sadece sql sorgusu var ve = ile baslamiyor. Yukarida yazdiklarinizi da denedim ama hata verdi.

-------------
Sistem, çözümdür.
Sistem sonuçları üretir, insanlar sistemi yönetir.


Mesajı Yazan: mbaykan
Mesaj Tarihi: 09 Mart 2012 Saat 13:56
A2 hücresindeki SAYIM!B2 yerine B2&METNEÇEVIR(C2;"""aa/gg/yyyy""")&D2
Yazip sorgunuzu iki parçaya bölün
deneyin Disapprove

not Çifttirnak isareti problem olurmu bilmiyorum? DAMGA(34) fonksiyonunu kullanin

formüllediginiz gibi bir makro yazip C2'ye deger girdikten sonra bunu hesaplayip B2'ye yazan. O zaman B2'ye = ile baslamazsiniz


-------------
Mehmet Baykan


Mesajı Yazan: kuzey_yolcu
Mesaj Tarihi: 09 Mart 2012 Saat 15:10
Dediginizi tam olarak anlayamadim da ben zaten su sekilde de denedim:
 
=NETSIS_DATA("SAYIM";"A5";32767;"SELECT SAYIMOTR.TARIH, STSABIT.GRUP_KODU, SAYIMOTR.STOK_KODU, SAYIMOTR.STOK_ADI, SAYIMOTR.MIKTAR from SAYIMOTR INNER JOIN STSABIT ON SAYIMOTR.STOK_KODU=STSABIT.STOK_KODU WHERE SAYIMOTR.TARIH="sizinönerdikleriniz" AND SAYIMOTR.DEPO_KODU=1";"X12")
 
Yani B2 hücresini isin içine hiç katmadan direk formüle yazdim. Tarih yerine de sizin önerdiginiz birkaç farkli sekilde denedim. Kimisinde hata verdi, kimisinde de hata vermedi ama hiç veri gelmedi, o tarihte veri olmasina ve önceki sql kodumla veri gelmesine ragmen.
 
Olmadi maalesef. Extend kullaniyor olsaydiniz dosyayi yollayacaktim ama kullanmadiginizi söylemistiniz.
 
Aslinda dediginiz gibi B2yi degistiren bir makro yapabilsem o da olurdu. Daha önce denemistim ama bu sefer de visual basic'te makro hatalarini geçememistim.


-------------
Sistem, çözümdür.
Sistem sonuçları üretir, insanlar sistemi yönetir.


Mesajı Yazan: mbaykan
Mesaj Tarihi: 09 Mart 2012 Saat 15:21
B2 hücresindeki bilginin aynisini D2'ye kopyalayin "aa/gg/yyy" yazan yere "<trh>"
yazin

SELECT SAYIMOTR.TARIH, STSABIT.GRUP_KODU, SAYIMOTR.STOK_KODU, SAYIMOTR.STOK_ADI, SAYIMOTR.MIKTAR from SAYIMOTR INNER JOIN STSABIT ON SAYIMOTR.STOK_KODU=STSABIT.STOK_KODU WHERE SAYIMOTR.TARIH=”<trh>” AND SAYIMOTR.DEPO_KODU=1

yukaridaki içerik D2'de olacak

Sayfa  isminin üzerine sag klik yapip Kod Görüntüle komutundan sonra
asagidaki makroyu yazin

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$C$2" Then
 Range("B2").Value = Replace(Range("D2").Value, "<trh>", Format(Range("c2").Value, "mm/dd/yyyy"))
 
End If

End Sub





-------------
Mehmet Baykan


Mesajı Yazan: kuzey_yolcu
Mesaj Tarihi: 09 Mart 2012 Saat 15:46
Mehmet Bey, kusura bakmayin da baya karisti benim tarafimda isler. Formül A'da, sql B'de, tarih C'de, tarihi degistirecek formül D'de. Bir de makro. Neyi nereye ne sekilde koyacagimi sasirdim Ermm

-------------
Sistem, çözümdür.
Sistem sonuçları üretir, insanlar sistemi yönetir.


Mesajı Yazan: Conari
Mesaj Tarihi: 09 Mart 2012 Saat 15:51
Dosyayi yükleyin.
 
Bu gibi islemleri bende Macro ve ek hücreler ile yapiyorum. Yoksa sorguyu extendde yönetmek zor. hücre degisikliginde çalismaya baslar extend.


-------------
Netsisden vazgeçemiyorum. Beni engelliyor..


Mesajı Yazan: mbaykan
Mesaj Tarihi: 09 Mart 2012 Saat 15:56
mesaji güncelledim
sizin rapor sayfasinda istediginiz gibi C2'de tarih D2'de ise (B2'deki) Sorgu metninin bir benzeri olmali (tarih yerine <trh> koyun)
makro yazimi ise tarif ettigim gibi Sayfanin ismi üzerinde sag klik ve Kod görüntüle
ile sonra makroyu Sub  ..  End Sub dahil kopyalayin
tablonuza dönün ve C2'yi degistirin
B2'de de degistigini görmelisiniz



-------------
Mehmet Baykan


Mesajı Yazan: Conari
Mesaj Tarihi: 09 Mart 2012 Saat 15:59
@Mbaykan,
Excelde makro güvenlik ayarlari yapilmamissa macro çalismayacaktir.


-------------
Netsisden vazgeçemiyorum. Beni engelliyor..


Mesajı Yazan: kuzey_yolcu
Mesaj Tarihi: 09 Mart 2012 Saat 16:17
Sayin Conari, makro var dosyada. Verileri güncellerken makro kullaniyorum. Güvenlik ayarlarinda bir problem çikmaz da. Neyse ben bir deneyeyim tekrar Mehmet Bey'in dedigini.

-------------
Sistem, çözümdür.
Sistem sonuçları üretir, insanlar sistemi yönetir.


Mesajı Yazan: kuzey_yolcu
Mesaj Tarihi: 09 Mart 2012 Saat 16:51
Mehmet Bey, kusura bakmayin yapamadim. Rica etsem, asagida yükledigim dosyada söylediginiz degisiklikleri yapabilir misiniz?
mail adresim:yolcu_6@yahoo.com.tr
Yapmaya çalistiginiz seyi anladim ama B2 ye yazacagim sorguda tarih yerine ne yazacagim? Yazdiklarimda hata veriyor.
http://hotfile.com/dl/149303065/fc02394/saymm.xls.html - http://hotfile.com/dl/149303065/fc02394/saymm.xls.html
 


-------------
Sistem, çözümdür.
Sistem sonuçları üretir, insanlar sistemi yönetir.


Mesajı Yazan: mbaykan
Mesaj Tarihi: 09 Mart 2012 Saat 17:26
gönderdiginiz tabloda Tarih girilen yer BAKIYE isimli sayfada buna göre makronunda
bu sayfada yazilmasi gerekir küçük bir degisklikle

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$2" Then
 Sheets("SAYIM").Range("B2").Value = Replace(Sheets("SAYIM").Range("D2").Value, "<trh>", Format(Range("BAKIYE!B2").Value, "mm/dd/yyyy"))
 
End If
End Sub




-------------
Mehmet Baykan


Mesajı Yazan: Conari
Mesaj Tarihi: 09 Mart 2012 Saat 17:27
benim örnegime bakin
 
http://www.wupload.com/file/2673433207/Extend.rar - http://www.wupload.com/file/2673433207/Extend.rar


-------------
Netsisden vazgeçemiyorum. Beni engelliyor..


Mesajı Yazan: kuzey_yolcu
Mesaj Tarihi: 09 Mart 2012 Saat 17:48
Mehmet Bey, simdi gördüm de bakiye sayfasinda degil tarih. Orasi kafanizi karistirmasin. Benim amacim bunu yapmanin yolunu ögrenmek ve baska yerlerde kullanmak. ilk mesajimda da belirttigim gibi aslinda bu raporda degil de baska raporlarda çok ihtiyacim oluyor. Ögrenebilirsem, onlara uygulayacagim bu yöntemi. Gönderdiginize bakacagim. Sayin Conari, sizin örneginizi de inceleyecegim.
Tesekkür ederim ilgilendiginiz için. Insallah sonuca ulasip geri bildirimde bulunacagim.


-------------
Sistem, çözümdür.
Sistem sonuçları üretir, insanlar sistemi yönetir.


Mesajı Yazan: Rafet
Mesaj Tarihi: 23 Mart 2012 Saat 10:33
Zamaninda hepimizin ugrastigi bir sey.

Kisitlari Hücereden verecekseniz.  Hücrenin Konumunu kullanmak yerine hüçreye ad verin.
Daha kullanisli oalcaktir.

tarih = format(Range("A1") ,"yyyy-mm-dd")

yerine

A1 hüçresine ad vererek mesala "sayfaadi_tarih1" yapin.
daha sonra bu hüçreyi kesip koyaladiginizda üstüne altina hüçre eklediginizde ad verdini z hüçrede yaptiginiz isleme göre yer degistirecek.

kodlamada
tarih1 = format(Range("sayfaadi_tarih1")
tarih2 = format(Range("sayfaadi_tarih2")



view = "SELECT * FROM TBLSTHAR WHERE TARIH BETWEEN '" & sayfaadi_tarih1 & "' and  '" & sayfaadi_tarih2 & "'  "

gibi kullanirsaniz .

kod yazim daha okunakli, kullanisli gelistirmeye elverisli olacaktir.

Saygilar.






Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 11.10 - http://www.webwizforums.com
Copyright ©2001-2017 Web Wiz Ltd. - https://www.webwiz.net