• DİKKAT

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

Bakiye sorgusu sorunu

Katılım
17 Aralık 2008
Mesajlar
780
Excel Vers. ve Dili
Microsoft 365
Merhaba arkadaşlar;

Dış veri al ile sql veritabanına bağlanıp orada oluşturduğum sorguyu excele aktarmak istiyorum.Ama sql sorgusunu tamamlayamadım.

SELECT MAHSUP.HESAP, MAHSUP.BORC,MAHSUP.ALACAK, (BORC-ALACAK) AS 'BAKİYE'
FROM ETA_STOKGIRIS_2007.dbo.MAHSUP MAHSUP
WHERE (MAHSUP.HESAP='320.01.001')

YUKARIDAKİ SORGUDA 320.01.001 NOLU HESABIN BORÇ VE ALACAK SÜTUNLARINI ÇEKİYORUM.BAKİYE SÜTUNUNU OLUŞTURAMIYORUM.

HESAP BORÇ ALACAK BAKİYE
320.01.001 10 0 10
320.01.001 45 0 55
320.01.001 0 40 15


YUKARIDAKİ GİBİ BAKİYESİNİ 15 GÖRMEK İÇİN NASIL BİR SORGU OLUŞTURMALIYIM.
 
Sanırım aldığınız verileri döngüye girerek alacaktan borcu çıkararak elde etmelisiniz.:cool:
 
Arkadaşlar;

Eğer sql sorgusunu oluşturamazsam işin bakiye kısmını veriyi excele aktardıktan sonra makro olarak yapmak istiyorum.



Sub Makro8()

Range("J17").Select
ActiveCell.FormulaR1C1 = "BAKİYE"
Range("J18").Select
ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
Range("J19").Select
ActiveCell.FormulaR1C1 = "=R[-1]C+RC[-2]-RC[-1]"
Range("J19").Select
Selection.AutoFill Destination:=Range("J19:J21")
Range("J19:J21").Select
End Sub

Yukarıdaki kod bunun için yeterli değil.Eksik olan kısmı J18 sütununda başlayan hareket J21 de bitiyor.Ama bu hareketlerin sayısı fazla olabilir.J45'te bitebilir mesela.I sütununda alacak var.Onun gittiği satır kadar J sütunuda gitmeli. Bunun için "Range("J19:J21").Select" bu kod yerine ne yazmalıyım.

Arkadaşlar yardımlarınızı bekliyorum.
 
Veriyi excele atılmış gibi kabul edin.Sütun başlıklarının başladığı yeri yazın.
Bir tane örnek excel dosyası ekleyin.Ben size vba kodunu yazayım.
 
Evren Bey;

Yani nasıl bir sorgu yazmalıyım ?
 
Emin değilim ama aşağıdaki gibi yapın bakalım olacakmı
Kod:
SELECT MAHSUP.HESAP, MAHSUP.BORC,MAHSUP.ALACAK,MAHSUP.BAKİYE (BORC-ALACAK) AS 'BAKİYE'
 
Dosyanız ektedir.:cool:
Kod:
Sub bakiye()
Dim bakiye As Double, sat As Long, i As Long
Sheets("Sayfa1").Select
bakiye = 0
sat = Cells(65536, "A").End(xlUp).Row
For i = 2 To sat
    bakiye = bakiye + (Cells(i, "B").Value - Cells(i, "C").Value)
    Cells(i, "D").Value = bakiye
Next
MsgBox "İşlem tamam"
End Sub
 

Ekli dosyalar

Evren Bey;

Teşekkür ederim.Elinize sağlık.

Yazdığınız kodu inceledim.Ana mantığını anladım.Ama bir kaç yerde tıkandım.Bu seferde sizden bir şey öğrenmek istiyorum.Tabi anlatmak isterseniz ?

1-sat=Cells(65536,"A").End(xlUp).Row

Bu satırda sat isminde bir değişkeni tanımlıyoruz.65536 satır gidecek ve başlangıç yeri A satırı olacak.A'nın önünde ve arkasındaki tırnaklar neyi ifade eder.Birde,"End(xlUp).Row" burada ne demek istiyoruz ?

2-For i=2 To sat

Bu satırda i ismindeki bir değişkene değer atıyoruz.Buradaki "To" kavramı nedir ?
 
Evren Bey;

Teşekkür ederim.Elinize sağlık.

Yazdığınız kodu inceledim.Ana mantığını anladım.Ama bir kaç yerde tıkandım.Bu seferde sizden bir şey öğrenmek istiyorum.Tabi anlatmak isterseniz ?

1-sat=Cells(65536,"A").End(xlUp).Row

Bu satırda sat isminde bir değişkeni tanımlıyoruz.65536 satır gidecek ve başlangıç yeri A satırı olacak.A'nın önünde ve arkasındaki tırnaklar neyi ifade eder.Birde,"End(xlUp).Row" burada ne demek istiyoruz ?

2-For i=2 To sat

Bu satırda i ismindeki bir değişkene değer atıyoruz.Buradaki "To" kavramı nedir ?

1) bu kod satırı A sütunnda en son dolu satırı buluyor."A" string bir değişmezdir.A sütunudur."A" yerine 1 de yazabilirdik.
2)2 den sat kadar dön diyor.
Yani sat değişkeni içersindeki rakam kadar dön.:cool:
 
Evren Bey;

İlginize çok teşekkür ederim.Çok faydalı oldu benim için.Yarın cuma günü sizin içinde dua edicem.
 
Geri
Üst