• DİKKAT

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

ADODB.Connection ve LIKE deyimi

  • Konbuyu başlatan Konbuyu başlatan hsayar
  • Başlangıç tarihi Başlangıç tarihi
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Kod:
Sub XXX_Anemos()
Dim cn As Object, rs As Object
 
sorYIL = 2007
Set cn = CreateObject("ADODB.Connection")
 
cn.Open _
"Driver={Microsoft Excel Driver (*.xls)};dbq=" & ThisWorkbook.FullName
'BYIL    MYIL    GIDER_TURU  DKR MES_MER
'LIKE SOYADI LIKE
Set rs = cn.Execute( _
"SELECT DISTINCT BYIL, MYIL, GIDER_TURU, MES_MER  " & _
"FROM [2007$F4:I65536]")

Sheets("TABLOM").[a2].CopyFromRecordset rs
 
rs.Close
cn.Close
'Call Kodlar
MsgBox "tamamlandı"
End Sub

1) yukarıdaki kodlar çalıştığında kira, KİRA, Kira, kİRA gibi veri girildiğinde hepsi için farklı satır açıyor bunu engellemek için LIKE deyimi kullanmak gereekli imiş ama onuda ben bilmiyorum GIDER_TURU, MES_MER başlıklarını büyük küçük harf duyarsız yapmak için ne lazımdır.
nasıl olmalı

2) Ayrıca Bütçe yılı sadece 2007 olan giderleri listelemek için nasıl bir değişklik olmalı
 
güncel yardımlarınız için şimdiden teşekkürler
 
güncel yardımlarınız için şimdiden teşekkürler
 
güncel yardımlarınız için şimdiden teşekkürler
 
güncel yardımlarınız için şimdiden teşekkürler
 
"Like", filtreme işleminde kullanılır.
Aşağıdaki cümleleri deneyin.
1)
Kod:
"SELECT DISTINCT BYIL, MYIL, [B]UCASE([/B]GIDER_TURU[B])[/B], MES_MER  " & _
"FROM [2007$F4:I65536]"

2)
Kod:
"SELECT DISTINCT BYIL, MYIL, UCASE(GIDER_TURU), MES_MER  " & _
"FROM [2007$F4:I65536]" & _
"[B]WHERE BYIL = 2007[/B]"
 
Kod:
Set rs = cn.Execute( _
"SELECT DISTINCT BYIL, MYIL, UCASE(GIDER_TURU), UCASE(MES_MER)  " & _
"FROM [LISTE$F4:I65536]")

hocam bu deyim türkçe karakterleri pas geçiyor kendi ktf mide kullandırtmıyor yokmu türkçeye uydurabilceğimiz bir çevireç.

kullandığım ktf;
Kod:
Function UCaseTr(ByVal metin As String)
    UCaseTr = UCase(Replace(Replace(metin, "ı", "I"), "i", "İ"))
End Function

KIRA AYRANLı
KIRA KUMDERE
KIRA PAŞAKALDıRıMı

doğruları; KİRA,AYRANLI,PAŞAKALDIRIMI dır.
 
Kod:
Set rs = cn.Execute( _
"SELECT DISTINCT BYIL, MYIL, GIDER_TURU, MES_MER " & _
"FROM [LISTE$F4:I65536]" & _
"WHERE BYIL = 2005")

ifadesine J sütununda yeralan TUTAR başlığının toplamınıda eklemek için
Kod:
Set rs = cn.Execute( _
'"SELECT DISTINCT BYIL, MYIL, GIDER_TURU, MES_MER, Sum(TUTAR) " & _
'"FROM [LISTE$F4:J65536]" & _
'"WHERE BYIL = 2005")
kodununu kullandım ama hata veriyor doğrusu nedir.
 
SQL Server veritabanında "REPLACE" SQL fonksiyonu desteklenirken, M$ Jet ile kullanılamıyor. Değişikliği veritabanında yapın ki sorgulamalarda problem çıkmasın.

Toplam ile ilgili sorguyu aşağıdaki gibi deneyin.
Kod:
[LEFT]Set rs = cn.Execute( _
"SELECT DISTINCT BYIL, MYIL, GIDER_TURU, MES_MER, Sum(TUTAR) AS TUTAR " & _
"FROM  [LISTE$F4:J65536] " & _
"WHERE BYIL = 2005 " & _
"GROUP BY BYIL, MYIL, GIDER_TURU, MES_MER")[/LEFT]
 
Aşağıdaki resimdeki hatayı veriyor hocam bunun nedeni nedir?

Run-time error '-2147467259 (80004005)
[micosoft][ODBC Excel Sürücüsü] Sorgu tanımının SELECT listesindeki 'TUTAR' Diğer Adı nedeyle oluşan kısır döngü.

Not: TUTAR başlığını TUTAR_b olarak değiştirip koddada gerekli değişikliği yaptım yine aynı yerde hata aldım.

başlıklar 4. satırdadır. sütunlar F,G,H,I,J dir.
Veri tabanının örnek görüntüsü aşağıdaki gibidir;
Kod:
BYIL	MYIL	GIDER_TURU	MES_MER	 TUTAR
2005	2005	Personel	Daimi	19,25
2005	2005	Genel	Genel	550,00
2005	2005	Genel	Genel	3.385,00
2005	2005	Aidat	ZO	823,50
2005	2005	Genel	Genel	480,00
2005	2005	Personel	Daimi	137,00
2005	2005	Personel	Daimi	64,50
2005	2005	Kira	Ayranlı	2.400,00
2005	2005	Personel	Daimi	500,00
2005	2005	Yatırım	Topçukonak	10.000,00
2005	2006	Kira	Kumdere	2.500,00
2005	2005	Genel	Genel	25,00
2005	2005	Personel	Daimi	200,00
2005	2005	Yatırım	Genel	121,00
2005	2004	Tohum	Satın	1.650,00
2005	2005	Yatırım	Genel	800,00
2005	2005	Mazot	Genel	1.600,00
2005	2005	Personel	Daimi	100,00
2005	2005	Kira	paşakaldırımı	1.300,00
2005	2005	Genel	Genel	250,00
2005	2005	Personel	Daimi	11.000,00
2005	2005	Gıda	Lokanta	43,00
 
Son düzenleme:
Toplanan alana aynı takma adı verildiğinden oldu galiba.

Kod:
[LEFT]Set rs = cn.Execute( _
"SELECT DISTINCT BYIL, MYIL, GIDER_TURU, MES_MER, Sum(TUTAR) AS [B]TOP_TUTAR[/B] " & _
"FROM [LISTE$F4:J65536] " & _
"WHERE BYIL = 2005 " & _
"GROUP BY BYIL, MYIL, GIDER_TURU, MES_MER")[/LEFT]
 
teşekkürler hocam sizi bayağı uğraştırdım.
 
Geri
Üst