Listboxta çoklu seçimin textbox1'de ve sonra da hücrede görünmesi

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,596
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Yusuf bey merhaba,

Binlik ayraç sorunundan dolayı hata alıyorsunuz.


sorgu = "select f2,f3,f4,f5,f6,f7,f8,f9 from[Ana Sayfa$] where f10 = " & yıl & " and f11 = '" & ay & "' and f8 > " & Replace(5 / 24, ",", ".") & " "

 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Teşekkürler. Düzelttim.

Ancak şöyle bir sorun var: Süre tam 05:00 olduğunda listelemiyor. Bu düzeltmeden önce başka bir sütuna saatin 5/24'e büyük eşit olması halinde "Evet" değilse "Hayır" yazdırarak sorguyu bu sütun üzerinden yaptığımda da aynı şekilde 05:00 olanları aktarmamıştı.

5/24 ile 05:00 aynı şey olmalı diye biliyorum ama sayfada formül olarak girersem bunu kabul ediyor, VBA kısmında bunu kabul etmiyor.

Neden acaba?
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,596
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Sorgu'da F8 > işareti var sadece >= yaparsanız 05:00 'da gelir.
Süreyi'de sayfa'da bir alana yazarsanız sorgu dinamik yapılabilir.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Aslında >= yaptığımda da olmamıştı. Farklı bir şekilde hallettim. Anladığım kadarıyla 5/24 eşit değildir 05:00, ondalık basamaklarda farklılık var muhtemelen.

Teşekkürler ilginize.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
İlginç bir sorunla daha karşılaştım. Eğer Ana sayfada sadece tek satır veri varsa ve bu istenilen yıl ve aya aitse sorgu, "ölçüt ifadesinde veri türü uyuşmazlığı" hatası veriyor. Listede birden fazla satır (istenen yıl ve aya ait tek satır olsa bile) varsa bu hatayı vermiyor. Bu sorun da şartlara uymayan bir satır veri girilerek düzeltilebilir ama acaba neden oluyor?

Tek satır var ve şartlara uyuyorsa hata veriyor
Tek satır var ve şartlara uymuyorsa hata vermiyor
Birden fazla satır var ve en az biri şartlara uyuyorsa hata vermiyor.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Dosyanın son hali ektedir. Şu anda sadece 1 satır veri var ve şarta uyuyor ama kod hata veriyor:
 

Ekli dosyalar

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,596
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Yusuf bey,

Hatanın sebebi ADO'nun sorgu yapılan alandaki sütunları kendi içinde metin,sayı,tarih olarak sınıflandırırken sorun yaşaması. Tek satır sonuç döndüğü için değil, tek satır veriniz olduğu için bu hatayı veriyor. Ana Sayfa'da ki datayı çoğaltın ama tek sonuç döndürün hata vermeyecektir.

Tek satırlı bir veride hata almamak içinde hdr=no demiştik o kısmı hdr=yes diyebiliriz. Bunun anlamı veritabanımda başlıklar var demek.Bu sefer kodda f1,f2 diye yazamayacağız. Başlıkların adını yazmak gerekecek. Başlıkları olduğu gibi yazabilirsiniz. Arasında boşluk olanları [ ] parantez içinde yazmanız gerek.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Teşekkür ederim. Belirttiğiniz gibi birden fazla kayıt girmek gerekecek. Olmazsa ilk satıra farazi bir veri yazıp o satırı gizleyebilirim.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,596
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Teşekkür ederim. Belirttiğiniz gibi birden fazla kayıt girmek gerekecek. Olmazsa ilk satıra farazi bir veri yazıp o satırı gizleyebilirim.
Yarın yeni bir sorgu göndereceğim.Değişiklik yapmaya gerek yok.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,596
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Yusuf bey günaydın,

Kodun aşağıdaki kısımlarını değiştirin.
Tek satır veride gelen hata ile karşılaşmayacaksınız.

Kod:
con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.FullName & ";extended properties=""Excel 12.0;hdr=yes"""

sorgu = "select Tarih,[Görev Yeri],[Hukuki Dayanağı],[Görev Konusu/Yapılan İşlem],[Başlama Saati],[Bitiş Saati],[Süre],[Araç Plakası/Yaya/Daire]" & _
  "from[Ana Sayfa$] where [yıl] = " & yıl & " and [ay] = '" & ay & "' and [Ödeme] = '" & sure & "' "
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Teşekkürler. Bu sefer de sonraki satırda (s2.Range("B7").CopyFromRecordset rs) hata verdi. Yanlış hatırlamıyorsam işlem bulunamadı gibi bir hataydı.

Ben sorunu ilk satıra farazi veri girerek hallettim.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,596
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Yusuf bey,

Sorgudan önce sizin eklediğiniz kod prosedürden çıkılmasını sağlıyor.
Hata almamanız lazımdı. İlk satıra farazi kayıt girmenize gerek yok.
Kodu değiştirdiniz sanırım.

Kod:
If WorksheetFunction.CountIfs(s1.Range("J2:J" & veri), yıl, s1.Range("K2:K" & veri), ay) = 0 Then
    MsgBox s2.[G4] & " yılı " & s2.[I4] & " ayına ait veri bulunamadı!" & Chr(10) & "İyi çalışmalar"
    s2.Range("A7:I" & Eski).Clear
    Exit Sub
End If
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Prosedürden çıkıldığında sorgu aşamasına hiç geçmemesi gerekmez mi? Sorgu aşamasına geldiğine göre demek ki önceki kodlar sorunsuz çalışmıştır.

Dediğim gibi ben sorunumu sayenizde çözdüm ve değerli bilgiler öğrendim, Allah razı olsun. Çalışmalarınızda başarılar dilerim.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,596
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Eklediğiniz farazi satırdan dolayı prosedürden çıkamıyor olabilir.
Dosyanızın son halini paylaşırsanız bakabilirim.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Dosyada farazi satır da yok. isterseniz sayfa1'deki satırı ana sayfada başlıkların altına ekleyebilirsiniz. Zaten hatayı farazi satır yokken veriyor.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,596
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Merhaba,

Son verdiğim düzeltmeyi eklerseniz hata almazsınız.
Size önerim bütün çalışmayı Userform ile yapmanız.
Ana sayfa alanında elle giriş yapmanıza gerek olmadan tüm süreçleri Userform'a taşımanız performans ve kullanış açısından daha iyi olur.
Data yokken prosedürden çıkma seçeneğinin çalışmasını kontrol edebilirsiniz. Hatalı şekliyle yüklerseniz bakabilirim.
 
Son düzenleme:

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Son verdiğiniz düzeltmeyi yapınca "object required" hatası verip sorgudan sonraki satırı hata olarak gösteriyor.
 

Ekli dosyalar

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,596
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Kopyalama yaparken Set rs = con.Execute(sorgu) kısmını silmişsiniz.

Sorgunun altına Set rs = con.Execute(sorgu) alanını ekleyin.
 
Üst