Makro ile SQL bağlantısı

Katılım
16 Mart 2005
Mesajlar
63
Arkadaşlar
SQL üzerinde bi db var. Ben Micr. Query kullanarak sorgu sonucunu excele alıyorum fakat her seferinde tarih aralığını değiştirmek için sorguyu yeniden düzenlemem gerekiyor. Acaba başlangıç ve bitiş tarihlerini iki ayrı textboxa girererek sorguyu otomatik hale getiremez miyim? Kullandığım SQL komutu aşağıdaki şekilde:

SELECT makbbıl1.DOKTOR, SUM(TESHIS.PUAN) FROM makbbıl1 makbbıl1 INNER JOIN TESHIS ON MAKBBIL1.ISLEMKODU=TESHIS.ADI WHERE MAKBBIL1.TARIH BETWEEN '01/03/2005' AND '31/03/2005' GROUP BY MAKBBIL1.DOKTOR

kırmızı olan tarih kısımlarını textboxlarla belirlemek istiyorum. Yardımcı olursanız sevinirim.
Selamlar...
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

Sorgu düzenle ile query'e giriniz
ölçüt alanlarında Tarih kısmını seçin
altındaki satırda değer kısmına aşağıdaki iafadeyi yazınız.

Arasında [ilk tarih] Ve [son tarih] sorgunuzu saklayıp verileri excele atın

sonra

Veri/dıs verial / parametrelere girin
AÞAÐIDAKİ HÜCREDEN DEÐERİ AL kısmına istediğiniz hücrelerin adresini belirtiniz.

artık tarih arasu-ını o hücrelerden alacaktır

veya
BETWEEN ? AND ?


otomatik sql sorgulamasının kendi parametre sorma kutuları gelmiyormu
 
Katılım
16 Mart 2005
Mesajlar
63
Sorgulamada iki değişik tablo ilişkide olduğu için dediğiniz şekilde standart sorgulama kutularıyla yapılamaz. Zaten benim sorunum da o konuda değil. Dediğiniz kutulara gerek kalmadan SQL komut ekranında da yapabiliyorum.
Sorun şu ki ben query e girmeden bir userform üzerinden sorgulama yaptırmak istiyorum.
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

Sorgu düzenle ile query'e giriniz
ölçüt alanlarında Tarih kısmını seçin
altındaki satırda değer kısmına aşağıdaki iafadeyi yazınız.

Arasında [ilk tarih] Ve [son tarih] sorgunuzu saklayıp verileri excele atın

sonra

Veri/dıs verial / parametrelere girin
AÞAÐIDAKİ HÜCREDEN DEÐERİ AL kısmına istediğiniz hücrelerin adresini belirtiniz.

artık tarih arasu-ını o hücrelerden alacaktır
 
Katılım
16 Mart 2005
Mesajlar
63
:)
Arkadaşım sanırım ben yanlış anlattım
ben zaten sorgu neticesini excele alıyorum. Onunla ilgili bi sorun yok.
Ben daha pratik olması açısından querynin userform aracılığıyla yapılıp yapılamayacağını soruyorum. Zira bu olay Visual Basic de yapılabiliyor.
Excelde nasıl olduğunu bilmiyorum. Ayrıca ilk mesajımda yazmış olduğum SQL komutunda tarih ölçüt alanı çıkmaz, dikkat edersen "GROUP BY MAKBBIL1.DOKTOR" ifadesi var.
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

Haklısınız toplam ve grup kısmını es geçmişim özür dilerim.
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

yapamadığım bir birleştirme alanı var onu yapabilsem olacak
ben forumdan onun cevabını istiyeceğim.size tekrar dönerim benimde ilgi alanımda
 
Katılım
7 Temmuz 2004
Mesajlar
1,141
Makro kaydet ile yeni bir veritabani sorgusu kaydedin.

Isiniz bittikten sonra kaydedilmis makroyu inceleyin.

Sorgunun where kismindaki parametreleri userformdan alacak sekilde ayarlamaniz gerekmektedir.

MSQuery su an bende sorun cikariyor. Bu yüzden bir örnek ekleyemedim.

Siz kaydettiginiz makroyu buraya yapistirirsaniz üzerinden gideriz.
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba
crackerdent' Alıntı:
MAKBBIL1.TARIH BETWEEN '01/03/2005' AND '31/03/2005' GROUP BY MAKBBIL1.DOKTOR
bu kısımdaki tarihi ' şeklinde (ayraç içinde) '01.01.2005' gibi gösteremediğimizden sonuç alamıyoruz.
Sorumu makrolar kısmına sordum.
 
Katılım
16 Mart 2005
Mesajlar
63
Sub sorgu()
'
' sorgu Makro
' Makro 17/05/2005 tarihinde kaydedildi.
'

'
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=HASTASQL;UID=SA;;APP=Microsoft Office 2003;WSID=BSTBP;DATABASE=melhasta;LANGUAGE=Türkçe;Regional=Yes" _
, Destination:=Range("A1"))
.CommandText = Array( _
"SELECT makbbıl1.DOKTOR, SUM(TESHIS.PUAN) FROM makbbıl1 makbbıl1 INNER JOIN TESHIS ON MAKBBIL1.ISLEMKODU=TESHIS.ADI WHERE MAKBBIL1.TARIH BETWEEN '01/03/2005' AND '31/03/2005' GROUP BY MAKBBIL1.DOKT" _
, "OR")
.Name = "MART"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub
 
Katılım
7 Temmuz 2004
Mesajlar
1,141
"SELECT makbbıl1.DOKTOR, SUM(TESHIS.PUAN) FROM makbbıl1 makbbıl1 INNER JOIN TESHIS ON MAKBBIL1.ISLEMKODU=TESHIS.ADI WHERE MAKBBIL1.TARIH BETWEEN" & cdate(userform1.textbox1) & " AND " & cdate(userform1.textbox2) & " GROUP BY MAKBBIL1.DOKT" _
, "OR")



Not : Msquery sorunlu oldugu icin deneyemedim.

Eger calismaz ise tarihlerin etraf1na "#" koyarak deneyin.

EDIT:

asagidaki gibi degistirin.

"SELECT makbbıl1.DOKTOR, SUM(TESHIS.PUAN) FROM makbbıl1 makbbıl1 INNER JOIN TESHIS ON MAKBBIL1.ISLEMKODU=TESHIS.ADI WHERE MAKBBIL1.TARIH BETWEEN " & cdate(userform1.textbox1) & " AND " & cdate(userform1.textbox2) & " GROUP BY MAKBBIL1.DOKT" _
, "OR")
 
Katılım
16 Mart 2005
Mesajlar
63
arkadaşlar
userform üzerinden sorgu yaptırdığım zaman query de aşağıdaki komutu veriyor. tarihlerin başında ve sonunda eğer " ' " işaretini koyabilirsek çalışacak

SELECT makbbıl1.DOKTOR, SUM(TESHIS.PUAN) FROM makbbıl1 makbbıl1 INNER JOIN TESHIS ON MAKBBIL1.ISLEMKODU=TESHIS.ADI WHERE MAKBBIL1.TARIH BETWEEN 01/03/2005 AND 31/03/2005 GROUP BY MAKBBIL1.DOKTOR
 
Katılım
7 Temmuz 2004
Mesajlar
1,141
tarihlerin başında ve sonunda eğer " ' " işaretini koyabilirsek çalışacak
"SELECT makbbıl1.DOKTOR, SUM(TESHIS.PUAN) FROM makbbıl1 makbbıl1 INNER JOIN TESHIS ON MAKBBIL1.ISLEMKODU=TESHIS.ADI WHERE MAKBBIL1.TARIH BETWEEN '" & cdate(userform1.textbox1) & "' AND '" & cdate(userform1.textbox2) & "' GROUP BY MAKBBIL1.DOKT" _
, "OR")
 
Katılım
7 Temmuz 2004
Mesajlar
1,141
olmaz ise asagidaki sekilde deneyin.

"SELECT makbbıl1.DOKTOR, SUM(TESHIS.PUAN) FROM makbbıl1 makbbıl1 INNER JOIN TESHIS ON MAKBBIL1.ISLEMKODU=TESHIS.ADI WHERE MAKBBIL1.TARIH BETWEEN #" & cdate(userform1.textbox1) & "# AND #" & cdate(userform1.textbox2) & "# GROUP BY MAKBBIL1.DOKT" _
, "OR")
 
Katılım
2 Mart 2005
Mesajlar
225
Excel Vers. ve Dili
2003
2007
2010
Sn. Alpen

İşlemin tersini nasıl yapabiliriz?

TextBox daki veri ile sorgulama yapıldı. Yapılan sorgulamayı listbox a veya başka bir nesneye nasıl alabiliriz?
 
Üst