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 25-01-2016, 18:19   #1
antonio
Destek Ekibi
 
antonio kullanıcısının avatarı
 
Giriş: 13/02/2011
Mesaj: 1,031
Excel Vers. ve Dili:
Excel 2013
Varsayılan ADO ile SQL sorgusunu tüm aylara tek tabloda uyarlamak

Merhaba Arkadaşlar,
Userform ile veriler.accdb access veritabanındaki tablolardan giderler tablosuna sql sorgusu ile bağlanarak tüm gider kalemlerinin tüm aylara karşılık gelen gider toplamlarını ay ay görüntülemek istedim, ancak başaramadım.
Tum giderlerin her hangi bir aya karşılık gelen toplamını almakta sorun yok. hatta bunu bir spinbutton yardımıyla textbox change olayına bağlayarak yazan aya ait gider toplamını ilgili ayın hizasına getirebiliyorum. Oysa benim oluşturmak istediğim tablo, ekte gönderdiğim zip dosyası içindeki excel dosyasında sayfa1 de tablo olarak görüntülenmiştir. Şimdiden ilgilenen tüm arkadaşlara teşekkür ederim..
Aşağıda kullandığım kodları yazıyorum:
Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Private Sub TextBox1_Change()
    Dim conn As Object, rs As Object, yol As String, sorgu As String
yol = ThisWorkbook.Path & "\veriler.accdb"
Set conn = CreateObject("adodb.connection")
Set rs1 = CreateObject("adodb.recordset")
Set rs2 = CreateObject("adodb.recordset")
Set rs3 = CreateObject("adodb.recordset")
Set rs4 = CreateObject("adodb.recordset")

conn.Open "provider=microsoft.ace.oledb.12.0; data source=" & yol & ";"

'access tablo bilgileri:
'tablo adı: giderler
'tablo alanları: sr_no, tarih, gider_kalemi, tutar
'butona basıldığı zaman her gider kaleminin listede sıralanmasını ve karşısında 12 ay boyunca
'hangi ay ne kadar bir toplam gider maliyeti olduğunu tek tabloda (sayfadaki gibi) listelemek istiyorum
'sorgu bu ihtiyaca karşılık verecek şekilde yapılmalı (topla.çarpım mantığı)
'önceden teşekkürler

sorgu1 = "select '', gider_kalemi, format(sum(tutar), '#,##0.#0') from giderler where month(tarih)=1 group by gider_kalemi"

sorgu2 = "select '', gider_kalemi, '', format(sum(tutar), '#,##0.#0') from giderler where month(tarih)=2 group by gider_kalemi"

sorgu3 = "select '', gider_kalemi, '', '', format(sum(tutar), '#,##0.#0') from giderler where month(tarih)=3 group by gider_kalemi"

sorgu4 = "select '', gider_kalemi, '', '', '', format(sum(tutar), '#,##0.#0') from giderler where month(tarih)=4 group by gider_kalemi"

sorgu5 = "select '', gider_kalemi, '', '', '', '', format(sum(tutar), '#,##0.#0') from giderler where month(tarih)=5 group by gider_kalemi"

sorgu6 = "select '', gider_kalemi, '', '', '', '', '', format(sum(tutar), '#,##0.#0') from giderler where month(tarih)=6 group by gider_kalemi"

sorgu7 = "select '', gider_kalemi, '', '', '', '', '', '', format(sum(tutar), '#,##0.#0') from giderler where month(tarih)=7 group by gider_kalemi"

sorgu8 = "select '', gider_kalemi, '', '', '', '', '', '', '', format(sum(tutar), '#,##0.#0') from giderler where month(tarih)=8 group by gider_kalemi"

sorgu9 = "select '', gider_kalemi, '', '', '', '', '', '', '', '', format(sum(tutar), '#,##0.#0') from giderler where month(tarih)=9 group by gider_kalemi"

sorgu10 = "select '', gider_kalemi, '', '', '', '', '', '', '', '', '', format(sum(tutar), '#,##0.#0') from giderler where month(tarih)=10 group by gider_kalemi"

sorgu11 = "select '', gider_kalemi, '', '', '', '', '', '', '', '', '', '', format(sum(tutar), '#,##0.#0') from giderler where month(tarih)=11 group by gider_kalemi"
sorgu12 = "select '', gider_kalemi, '', '', '', '', '', '', '', '', '', '', '', format(sum(tutar), '#,##0.#0') from giderler where month(tarih)=12 group by gider_kalemi"

Set rs1 = conn.Execute(sorgu1)
Set rs2 = conn.Execute(sorgu2)
Set rs3 = conn.Execute(sorgu3)
Set rs4 = conn.Execute(sorgu4)
Set rs5 = conn.Execute(sorgu5)
Set rs6 = conn.Execute(sorgu6)
Set rs7 = conn.Execute(sorgu7)
Set rs8 = conn.Execute(sorgu8)
Set rs9 = conn.Execute(sorgu9)
Set rs10 = conn.Execute(sorgu10)
Set rs11 = conn.Execute(sorgu11)
Set rs12 = conn.Execute(sorgu12)
With ListBox1
'    .Column = rs2.getrows
'    .Column = rs & TextBox1.Value.getrows
    Select Case TextBox1.Value
        Case 1
    .RowSource = Empty
            .Column = rs1.getrows
        Case 2
    .RowSource = Empty
            .Column = rs2.getrows
        Case 3
    .RowSource = Empty
            .Column = rs3.getrows
        Case 4
    .RowSource = Empty
            .Column = rs4.getrows
        Case 5
    .RowSource = Empty
            .Column = rs5.getrows
        Case 6
    .RowSource = Empty
            .Column = rs6.getrows
        Case 7
    .RowSource = Empty
            .Column = rs7.getrows
        Case 8
    .RowSource = Empty
            .Column = rs8.getrows
        Case 9
    .RowSource = Empty
            .Column = rs9.getrows
        Case 10
    .RowSource = Empty
            .Column = rs10.getrows
        Case 11
    .RowSource = Empty
            .Column = rs11.getrows
        Case 12
    .RowSource = Empty
            .Column = rs12.getrows
    End Select
End With
Set rs1 = Nothing
Set rs2 = Nothing
Set rs3 = Nothing
Set rs4 = Nothing
Set rs5 = Nothing
Set rs6 = Nothing
Set rs7 = Nothing
Set rs8 = Nothing
Set rs9 = Nothing
Set rs10 = Nothing
Set rs11 = Nothing
Set rs12 = Nothing

Set conn = Nothing

End Sub
Eklenmiş Dosyalar
Dosya Türü: rar antonio.rar (53.2 KB, 17 Görüntülenme)
__________________
Özel mesaj sistemini devre dışı bıraktım.
Yardım istemeden önce Forum Kurallarını okuyunuz.
Aynı konuyu farklı bölümlerde açanların sorularını yanıtlamıyorum, bu durumu fark etmeden yanıtlamışsam, mesajımı siliyorum.
antonio Çevrimdışı   Alıntı Yaparak Cevapla
Eski 25-01-2016, 21:18   #2
Zeki Gürsoy
Uzman
 
Zeki Gürsoy kullanıcısının avatarı
 
Giriş: 31/12/2005
Şehir: Sakarya-Hendek
Mesaj: 3,353
Excel Vers. ve Dili:
Office 2016 (x64) - Türkçe
Varsayılan

En sade sql yolu "transform" deyimidir. "IIF" fonksiyonu da diğer bir yöntem ancak yazımı uzun.

Transform deyimi ve ekran çıktısı aşağıda:

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
transform sum(tutar)
select gider_kalemi
from giderler
group by gider_kalemi
order by 1
pivot format(tarih, "mm-mmmm")
Eklenmiş Resimler
Dosya Türü: jpg Ekran Alıntısı.JPG (70.8 KB, 71 Görüntülenme)
__________________

gursoyzeki@gmail.com




Zeki Gürsoy Çevrimdışı   Alıntı Yaparak Cevapla
Eski 25-01-2016, 22:40   #3
antonio
Destek Ekibi
 
antonio kullanıcısının avatarı
 
Giriş: 13/02/2011
Mesaj: 1,031
Excel Vers. ve Dili:
Excel 2013
Varsayılan

Sayın Gürsoy, ilgilendiğiniz için teşekkür ederim. Hemen kodu deniyorum. Ancak hemen dikkatimi çektiği için sormakta yarar görüyorum: "Order by 1" cümlesindeki 1 neyi ifade ediyor?
__________________
Özel mesaj sistemini devre dışı bıraktım.
Yardım istemeden önce Forum Kurallarını okuyunuz.
Aynı konuyu farklı bölümlerde açanların sorularını yanıtlamıyorum, bu durumu fark etmeden yanıtlamışsam, mesajımı siliyorum.
antonio Çevrimdışı   Alıntı Yaparak Cevapla
Eski 25-01-2016, 23:03   #4
antonio
Destek Ekibi
 
antonio kullanıcısının avatarı
 
Giriş: 13/02/2011
Mesaj: 1,031
Excel Vers. ve Dili:
Excel 2013
Varsayılan

Sayın Gürsoy kod çalışıyor. Sayenizde yeni bir sorgu yöntemi öğrendim. Bunun olabilirliğinden emin değildim, iyi ki sormuşum.
Son sütuna da toplamların gelmesi mümkünmüdür acaba?
__________________
Özel mesaj sistemini devre dışı bıraktım.
Yardım istemeden önce Forum Kurallarını okuyunuz.
Aynı konuyu farklı bölümlerde açanların sorularını yanıtlamıyorum, bu durumu fark etmeden yanıtlamışsam, mesajımı siliyorum.
antonio Çevrimdışı   Alıntı Yaparak Cevapla
Eski 25-01-2016, 23:10   #5
Zeki Gürsoy
Uzman
 
Zeki Gürsoy kullanıcısının avatarı
 
Giriş: 31/12/2005
Şehir: Sakarya-Hendek
Mesaj: 3,353
Excel Vers. ve Dili:
Office 2016 (x64) - Türkçe
Varsayılan

Toplam, sol başa geliyor; vba kodu ile sağ başa alırsınız artık.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
TRANSFORM sum(tutar)
SELECT gider_kalemi, sum(tutar) as GToplam
FROM giderler
GROUP BY gider_kalemi
ORDER BY gider_kalemi
PIVOT format(tarih, "mm-mmmm");
__________________

gursoyzeki@gmail.com




Zeki Gürsoy Çevrimdışı   Alıntı Yaparak Cevapla
Eski 25-01-2016, 23:28   #6
antonio
Destek Ekibi
 
antonio kullanıcısının avatarı
 
Giriş: 13/02/2011
Mesaj: 1,031
Excel Vers. ve Dili:
Excel 2013
Varsayılan

Alıntı:
Zeki Gürsoy tarafından gönderildi Mesajı Görüntüle
Toplam, sol başa geliyor; vba kodu ile sağ başa alırsınız artık.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
TRANSFORM sum(tutar)
SELECT gider_kalemi, sum(tutar) as GToplam
FROM giderler
GROUP BY gider_kalemi
ORDER BY gider_kalemi
PIVOT format(tarih, "mm-mmmm");
Üstadım bu kodu uyarlayamadım. "Permission denied" hatası alıyorum. Acaba ben yazım düzeninde bir hata mı yapıyorum?
Eklenmiş Resimler
Dosya Türü: png permission denied hatası.png (4.6 KB, 12 Görüntülenme)
__________________
Özel mesaj sistemini devre dışı bıraktım.
Yardım istemeden önce Forum Kurallarını okuyunuz.
Aynı konuyu farklı bölümlerde açanların sorularını yanıtlamıyorum, bu durumu fark etmeden yanıtlamışsam, mesajımı siliyorum.
antonio Çevrimdışı   Alıntı Yaparak Cevapla
Eski 25-01-2016, 23:40   #7
antonio
Destek Ekibi
 
antonio kullanıcısının avatarı
 
Giriş: 13/02/2011
Mesaj: 1,031
Excel Vers. ve Dili:
Excel 2013
Varsayılan

Sayın Gürsoy, bu bilgiler çok değerliydi. Sağolun, var olun.. Geri kalanını ben kurcalar, üstesinden gelmeye çalışırım.
Beyninize ve paylaşımcı yüreğinize sağlık..
__________________
Özel mesaj sistemini devre dışı bıraktım.
Yardım istemeden önce Forum Kurallarını okuyunuz.
Aynı konuyu farklı bölümlerde açanların sorularını yanıtlamıyorum, bu durumu fark etmeden yanıtlamışsam, mesajımı siliyorum.
antonio Çevrimdışı   Alıntı Yaparak Cevapla
Eski 25-01-2016, 23:48   #8
antonio
Destek Ekibi
 
antonio kullanıcısının avatarı
 
Giriş: 13/02/2011
Mesaj: 1,031
Excel Vers. ve Dili:
Excel 2013
Varsayılan

Bu arada hata sebebini buldum: Bir önceki sorguda listbox dolu iken sonraki sorguyu devamına yazmışım ve listbox u boşaltmadan recordset nesnesini listboxa taşımaya çalışmışım.
Şu anda kod çalışıyor.
Sağlıcakla kalın..
__________________
Özel mesaj sistemini devre dışı bıraktım.
Yardım istemeden önce Forum Kurallarını okuyunuz.
Aynı konuyu farklı bölümlerde açanların sorularını yanıtlamıyorum, bu durumu fark etmeden yanıtlamışsam, mesajımı siliyorum.
antonio Çevrimdışı   Alıntı Yaparak Cevapla
Eski 26-01-2016, 02:15   #9
Korhan Ayhan
Moderatör
 
Korhan Ayhan kullanıcısının avatarı
 
Giriş: 15/03/2005
Şehir: ANTALYA
Mesaj: 22,641
Excel Vers. ve Dili:
OFFICE 2013-2016 PRO TR
Varsayılan

Uygulamalı dosyayı ekleyebilir misiniz?
__________________
.
.
.

Soru sormadan önce forumumuzun aşağıdaki
bölümlerini incelediğinizde birçok sorunuza yanıt bulabilirsiniz.


Excel Dersanesi
Uygulamalı Excel Eğitimi
Excel İçin Örnek Uygulamalar
Video Dersane (***Altın Üyelere Özel***)

Lütfen sorularınızın çözümlendiğine dair geri dönüş mesajı yazınız...!
Lütfen yazım ve forum kurallarına uyalım...!
Lütfen sorularımızı açık ve net bir dille ifade edelim...!



FORUM KURALLARI
Korhan Ayhan Çevrimdışı   Alıntı Yaparak Cevapla
Eski 26-01-2016, 19:40   #10
antonio
Destek Ekibi
 
antonio kullanıcısının avatarı
 
Giriş: 13/02/2011
Mesaj: 1,031
Excel Vers. ve Dili:
Excel 2013
Varsayılan

Alıntı:
Korhan Ayhan tarafından gönderildi Mesajı Görüntüle
Uygulamalı dosyayı ekleyebilir misiniz?
Korhan Üstad, uygulamalı dosya ektedir.
Eklenmiş Dosyalar
Dosya Türü: rar antonio.rar (51.9 KB, 31 Görüntülenme)
__________________
Özel mesaj sistemini devre dışı bıraktım.
Yardım istemeden önce Forum Kurallarını okuyunuz.
Aynı konuyu farklı bölümlerde açanların sorularını yanıtlamıyorum, bu durumu fark etmeden yanıtlamışsam, mesajımı siliyorum.
antonio Ç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 16:01


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- Çorlu Çelik Konstruksiyon-
Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Advertisement System V2.6 By   Branden