C

Soru İki Tarih Arası Çoklu Veri Süz

  • Konuyu başlatan Konuyu başlatan Cemal67
  • Başlangıç tarihi Başlangıç tarihi

Cemal67

Normal Üye
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Değerli arkadaşlar! Daha önce bu formdan faydalanıp, yararlandığım iki tarih arası veri süzme problemim çözülmüştü. Ekli dosyamdan da anlaşılacağı üzere çözümünü halledemediğim farklı bir sorunum var. Örneğin; İki tarih arası seçilen il veya illere ait yapılan faaliyetlerin Veri_Süz sayfasına aktarılmasını sağlayamıyorum. Formda inceleme yaptım ama 2 gündür uğraşıyorum, başaramadım. Yardımlarınızı bekler, saygılar sunarım.
 

Ekli dosyalar

Sorunuz güzel bir örnek lakin epey uğraştım lakin kafamda kurgusunu canlandıramadım, zorlamak yersiz olacaktı, olduğu kadarını fikir vermek için eklemek istedim.

Dosyanızda sorgulama yapmak için ADO yöntemi ile bir bağlantı ve sorgu oluşturdum.
Örnek olarak 3 şehir kriteri de değişken olarak tanımladım, ekran göreceğiniz sonuç ile deneyebilirsiniz.

Lakin 81 şehrin checkbox seçimleri kısmını dediğim gibi kolay bir yöntemle kurgulayamadım.
Belki o kısma daha basit bir öneri yapan olur.

1615845015287.webp


Bu halini de ekliyorum, indirip mantığını incelersiniz en azından.
 

Ekli dosyalar

Moderatörün son düzenlenenleri:
Merhabalar.

-- Şehir isimleriyle ilgili olarak, şehir isimleri (veriler D sütununda olduğu için); HEPSİ Checbox'unu ise 400 şeklinde, il isimlerine ait Checkboxları da illerin plaka numaralarına göre 401-481 arasında yeniden adlandırdım ve konum/genişlik/yüksekliklerini ayarlayıp DÜZENe soktum.
-- Faaliyet konusu Checkboxlarını da buna benzer olarak (E sütunu, yani 5'inci sütun) HEPSİ CheckBoxuna 500 adını verip, diğerlerini 501'den başlayarak adlandırdım ve konum/yükseklik/genişliklerini ayarlayarak DÜZENe soktum.
Ardından da bu adlandırmalardan yararlanarak döngüleri kurdum. Bu adlandırma düzeni kodlamayı pratik hale getirmek için yapıldı doğal olarak.

Belgeyi kullanırken dikkat edilecek hususlar:
-- Form üzerindeki tarih Textboxlarına anlamlı olmayan veriler yazılmamalıdır (örneğin 30/02/...)
-- Sayfada D ve E sütunundaki verilerle Userformdaki CheckBoxların Caption değerleri (metinleri) birebir eşleşmelidir.
-- Kuandığınız belgelerde, kullanılmayan alanlara biçimlendirmeyer uygulamanız, hem dosya boyutunu büyütür, hem de belgenin işleyişini yavaşatabilir. Bu tür işlemlerden kaçımanızı öneriyorum.

Belgeniz ekte.
Yazdığım kodlar aşağıda gösterildiği gibi.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(112 satır)
 

Ekli dosyalar

Değerli Ömer Hocam ve Admin kardeşim, sorunuma göstermiş olduğunuz hassasiyetten, ziyadesiyle memnun oldum. Gecenin o vaktinde ve sabahın erken saatlerinde problemime çözüm aramak adına yaptığınız çalışmalarınız ve 'Destek'leriniz için sizlere ne kadar teşekkür etsem azdır. Tüm samimiyetimle sizleri can-ı gönülden tebrik ediyorum. Dostlar formun ayakta kalması ve idamesi için VIP üyelik almak istiyorum. Sizden ricam IBAN verirseniz çok iyi olacak. Çünkü kart kullanmıyorum. Saygılarımı arz eder, başarılı çalışmalarınızın devamını dilerim.
 
Ömer Hocam, çok teşekkür ederim. Kodlar harika! Ancak filitreleme yaparken çok ama çok uzun bekliyor. Daha önce de benzer bir kodlama yapmıştınız. Tekli veri seçeneği ile o anında sonucu ListView ve Veri_Süz sayfasına aktarıyordu. Bu kodları yaklaşık 15.000 satırlık verilere uyarladım. Hemen hemen 40 sn. bekledikten sonra sonuca ulaşıyor. Acaba döngülerden mi kaynaklanıyor? Saygılarımla...
 
@CemalTekin
Aslında bu veri yığını ve bu kriter çokluğu olunca işlemin bir miktar yavaşlaması normal.
Yapılan işlem; 15.000 (veri) x 30 (faaliyet konusu) x 81 (il adı) x 2 (tarih) = 72.900.000 adet işlem-kontrol demek.
Seçilen CheckBox adetine bağlı olarak hız değişebilir.
Checkbox'ların tümünü seçmek için, tek tek seçim yerine seçimi TÜMÜ kutucukları üzerinden yapmak da hızı artırabilir.
Veri sayısını 20.000 yapıp, denediğimde, iki tarih kirteri varken, CheckBoxların tümünü tek tek seçince 35 saniye,
TÜMÜ kutucuğundan seçilince ise 4 saniye civarında sonuç aldım.

Bence süreler makul sayılır.
Belki faaliyet konusu ile şehir döngüsü tersine çevrilirse hız artabilir (mevcut yapı tarih >şehir >faaliyet konusu şeklinde)
Uygun olduğumda (hatırlatmanızda sıkıntı yok, atlanabilir) yapıyı, tarih>faaliyet konusu >şehir şeklinde oluştururum.

Bir de kodda ilgili yerlere aşağıda yeşil renklendirdiğim satırları ekleyin, bir nebze de olsa süre azalmasına katkısı olacaktır.
Bu ekleme faaliyet konusu Checkbox'larından, içeriği boş olanların atlanmasını sağlayacak.

Userform kapandığında Veri_Süz sayfasındaki listenin silinmemesi/kalması için UserForm_QueryClose kod blokunu silebilirsiniz.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(12 satır)
 
Ömer hocam saygılar sunarım. Şu anki mevcut kodlarla projemi tamamladıktan sonra başkaca bir sorun çıkarsa, paylaşırım. Destekleriniz ve açıklayıcı bilgileriniz için de ayrıca teşekkür ederim. Sağlıcakla kalın.
 
Üst