• DİKKAT

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

mdb dosyasıdan toplam alma

Katılım
6 Temmuz 2008
Mesajlar
1,875
Excel Vers. ve Dili
OFFİCE 2010- TÜRKÇE
Arkadaşlar kolay gelsin,

Bir sorunumda muallakda kaldım;

bir klasorde cari kayıtlarını oluşturduğum mdb dosyları mevcut.
Bu dosyalara excel ile kayıtlar gönderiyorum.
Dosyaları yine excel üzerinde hazırladığım bir formda listeleyebiliyorum.
İhtiyacım olan.
Bu dosyaların içerisinde 1-2 ve 3 sütununlarının toplamlarını alacak bir kod.

liste görünümü;
cariadı alacak borç bakiye

cari1 100 150 50
cari1 150 150 0
cari1 200 150 50
 
Küçük bir örnek eklerseniz bakabilirim.
Kendiniz yapmak isterseniz ado konusunu araştırın.
Sorgu olarak basit bir sorgu işinizi görebilir.

Kod:
sorgu = "select sum(sütun1),sum(sütun2),sum(sütun3) from [data]"
 
Kod:
sorgu = "SELECT SUM([Satış Toplamı:]) FROM  [caribilgileri]  WHERE [Satış Toplamı:] > 0"
        Rs.Open sorgu, Con, 1, 3
       
        cb.Range("P" & c) = Rs(0).Value


Ben de aynı yöntem ile çözmüştüm :)
Teşekkürler.

Bir soru kafama takıldı.
kapalı mdb dosyasına toplam satırı alınıyor.
Bu satır exceldeki gibi farklı tablolara taşınabiliyor mu?

Başka deyişle;
bir tablodaki 2.sutundaki verilerin toplamını
farklı bir tablonun bir satırına alabiliyormuyuz?

Eğer alınabilirse sorumun devamı da olacak :)
 
Access'te mi yapmak istiyorsunuz,excel'de mi ?
Sorunuzu tam anlayamadım.
 
Veriler accesde
Formlar excelde.
Excele Acces dosyasındaki aylardan toplam almam lazım fakat döngü ile biraz yavaşlıyor.

Ekten yola cıkabiliriz.
Borçlaralacaklar tablosunda tüm ayların sırayla toplamlarını alabilirsek işin bir kısmı tamamdır.
 

Ekli dosyalar

Aşağıdaki metot ile excel sayfasına hızlı bir şekilde listeleyebilirsiniz.

Kod:
[a1].copyfromrecordset rs
 
Aşağıdaki metot ile excel sayfasına hızlı bir şekilde listeleyebilirsiniz.

Kod:
[a1].copyfromrecordset rs

Benzer bşr şekilde toplamları alıyorum .

Şöyle düşünebiliriz.
100-150 adet cari var diyelim ki.
bu şekilde olduğunda kodlar döngü içerisinde tek tek dosyaları açıp toplam alıp sırayla hücrelere getirecek.

farklı bir yöntemle daha kısa hale getirebilirsem daha iyiolur
 
Kod:
Sub carialcakborçtoplam()
ZAMAN = Timer


 Application.ScreenUpdating = False
tanimlamalar
     
Set Con = CreateObject("Adodb.Connection")
    Set Rs = CreateObject("Adodb.RecordSet")
   
For c = 2 To cb.Cells(Rows.Count, 2).End(3).Row
For sayfalar = 1 To 12
Con.Open "provider=microsoft.ace.oledb.12.0;data source=" & ThisWorkbook.Path & "\CariKayıtlar\" & cb.Cells(c, 2) & ".mdb"

 sorgu = "SELECT SUM([Satış Toplamı:]) FROM  " & sayfalar & " WHERE [Satış Toplamı:] > 0"
        Rs.Open sorgu, Con, 1, 3
       
        cb.Range("P" & c) = Rs(0).Value + cb.Range("P" & c)
 
      
    Rs.Close: Con.Close
    Next sayfalar
      Next c
    
    For c = 2 To cb.Cells(Rows.Count, 2).End(3).Row

Con.Open "provider=microsoft.ace.oledb.12.0;data source=" & ThisWorkbook.Path & "\CariKayıtlar\" & cb.Cells(c, 2) & ".mdb"
    
   sorgu = "SELECT SUM([Tutar]) FROM  [tahsilatlar] WHERE [Tutar] > 0"
    Rs.Open sorgu, Con, 1, 3
        cb.Range("O" & c) = Rs(0).Value  '.CopyFromRecordset Rs
          
        Rs.Close: Con.Close
        cb.Range("Q" & c) = cb.Range("P" & c) - cb.Range("O" & c)
        cb.Range("P" & c) = cb.Range("P" & c) * 1
          Next c
        
Set Con = Nothing: Set Rs = Nothing: sorgu = ""

MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & _
          "İşlem süresi ; " & Format(Timer - ZAMAN, "0.00") & " Saniye"

End Sub


3 Cari için 2 sn işlem yapıyor. Tabii ki de cok kısa fakat ileriki zamanda 150 cariçin bu süre baya bir artacak .
Alternatif bir önerisi olan var mı?
 
Selam,
Access veritabanınızda ki 1-2..12 şeklinde tablo isimleri aylaramı karşılık geliyor
Eğer öyleyse veritabanınızı yanlış tasarlıyorsunuz bu tasarımla işin içinden çıkamazsınız, bu sorununuzu halletseniz bile başka bir konuda yine tıkanırsınız
Örneğin 1 yıl içinde 5 barkod nolu üründen kaç tane sattığınızı bulmak isterseniz ne yapacaksınız 12 tablo üzerinde tek tek işlem yapmanız lazım

ÖNERİ:Bu işlem için tek bir tablo kullanın, tablonuza islem_tarihi diye bir alan ekleyin ve işlemin yapıldığı tarihi bu alana yazdırın ve böylece ay bazında toplam almak, ürün bazında toplam almak vb. için yardımcı bir tablo kullanmanıza gerek kalmaz
 
Selam,
Access veritabanınızda ki 1-2..12 şeklinde tablo isimleri aylaramı karşılık geliyor
Eğer öyleyse veritabanınızı yanlış tasarlıyorsunuz bu tasarımla işin içinden çıkamazsınız, bu sorununuzu halletseniz bile başka bir konuda yine tıkanırsınız
Örneğin 1 yıl içinde 5 barkod nolu üründen kaç tane sattığınızı bulmak isterseniz ne yapacaksınız 12 tablo üzerinde tek tek işlem yapmanız lazım

ÖNERİ:Bu işlem için tek bir tablo kullanın, tablonuza islem_tarihi diye bir alan ekleyin ve işlemin yapıldığı tarihi bu alana yazdırın ve böylece ay bazında toplam almak, ürün bazında toplam almak vb. için yardımcı bir tablo kullanmanıza gerek kalmaz

Acces tablosu bir yıl içerisindeki yapılan işlemlere yetmeyebilir diye düşündüm.

Diğer konuları aştım sayılır.
Bir ürünün cariler hariç ne kadar satış yaptığını tarih aralığı girerek yine döngü içerisinde alıyorum.
Tek bir tabloya bir yılın satışlarını sığdırabilirmiyim bilemiyorum .
Biraz araştırdım bu konuyu bazıları 1 milyon kayıt girdiğini söylemiş ama ne kadar doğrudur bilemedim
 
tabiki siz bilirsiniz ama böyle bir veritabanı tasarımı olmaz

1 yıl içerisinde kaç işlem yapabileceğinizi tahmin ediyorsunuz
 
Şöyle düşünelim en az olarak,
Günde 150 kişi ortalama 20 satırlık bir fiş alsa yılda
1 095 000 satır yapıyor.
 
O konu beni baya aşıyor.
Şimdilik bunun üzerinden devam edeyim :)

Aslında Accesde de Excel gibi sayfalardan toplam alma özelliği olsa biraz daha kolay olu işim.
 
SQL Server veritabanı zorunlu görünüyor.
 
Bu konuyla ilgili bir örneği olan var mı?
 
Geri
Üst