• Foruma hoş geldin 👋 Ziyaretçi

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Çözüldü sql de tarihe göre arama yapmak

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

mesut42

Bronz Üye
Kullanıcı Bilgileri
Aktiflik
Çevrimdışı
Katılım
26 Nis 2024
Mesajlar
83
Aldığı beğeni
5
Excel Versiyonu
Office 2016 TR
Konuyu Başlatan
textbox a tarih girip arama yapmak istiyorum fakat kod çalışmıyor

Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
Eğer excel formunda olsa idi aşağıdaki kod işe yarardı, sonradan fark ettim visual basic de çalışıyorsunuz. Eğer textbox ın özelliği tarih değise aşağıdaki gibi dönüşüm yapmanız gerekebilir.
"Select * from suttable Where suttarih = CDbl(CDate(txt_tariharama.Text ))
 
Eğer excel formunda olsa idi aşağıdaki kod işe yarardı, sonradan fark ettim visual basic de çalışıyorsunuz. Eğer textbox ın özelliği tarih değise aşağıdaki gibi dönüşüm yapmanız gerekebilir.
"Select * from suttable Where suttarih = CDbl(CDate(txt_tariharama.Text ))
bugun hiçbir sorunu halledemedik :)) yanlış mı yazdık?

Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.

Ekran görüntüsü 2024-06-22 165418.png
 
verileriniz nerede?
SQL server, access, excel?
 
Deneme fırsatım olmadı kodları
Sql Server da
Datepicker kullanmıyorum
 
Sql serverda tarih genel olarak yyyy-aa-gg formatındadır
Tarih alanının formatını kontrol eder misiniz?
 
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
Yukarıdaki kod satırı sql servera aşağıdakine benzer bir sorgu gönderiyor.
Sass:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.

CDbl(CDate(txt_tariharama.text)) kısmı hatalı anlayacağınız.

Ayrıca suttarih= kullanıp tarih aldıktan sonra ardıdan like kullanamazsınız. and veya or kullanacaksınız ve ardından tekrar hangi alanda where sartı uygulamak istiyorsanız o alanın adını yazıp devam etmelisiniz.
 
Ayrıca tarih alanı üzerinde sorgu yaparken LIKE operatörü kullanamazsın, tarih alanını stringe cast etmek gerekir (ki bunu da where alanında yapamazsın).

Kısacası yapacağınız arama kabaca şuna benzemeli;
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.

SELECT ten sonra neyi select edecekseniz hepsini yazın. Ardından tarih alanınızı stringe çeviren bir alan daha ekleyin.
1. where şartında tam eşleşen tarih için doğrudan suttarih= kullanın.
2. where şartında yaklaşık eşleşme için oluşturduğumuz stringe çevrilmiş alanı kullanın metintarih LIKE olarak yaptığım gibi.
 
üstadım tşk ederim tarih formatını değiştirdik orasını anladım
fakat arama kısmına textbox sı nasıl entegre edeceğimi anlamadım

Ekran görüntüsü 2024-06-24 105450.png
 
hangi dili kullanıyorsunuz?
 
tarih formatını değiştirmeye gerek yok aslında
metin kutusuna girilen değer kod ile sql serverdaki yapıya çevrilebilir büyük bir ihtimalle
kullandığınız dile göre metin kutusundaki tarih yyyy-aa-gg formatına çevrilebilir.
hiç VB.Net kullanmadım o nedenle format nasıl değiştirilir emin değilim ama kullandığınız kodda metin kutusu her değiştiğinde sorguyu çalıştırıyor
çıkıldığında çalışması daha doğru olmaz mı?
 
Textbox'ın özelliğini tarih yapın, Sql metnini düzenlerken Textbox'ın değerini sayıya çevirin.
 
Burada işler karışacak gibi duruyor. Bizim yazdıklarımızda geldiğin nokta aşağıdaki gibi sorunlu olacak.

1-)İlk olarak # içine alarak arattığımız alan görüldüğü üzere aralarında - (tire) işareti olacak şekilde geliyor ve sırasıyla yıl, ay, gün olarak karşımıza çıkıyor.

2-)' işareti ile arattığımız alan ise / (Slash) işareti olacak şekilde geliyor ve sırasıyla gün, ay, yıl olarak karşımıza çıkıyor.

Karşılaşılacak hata: Tek textbox ile her iki koşulu da aramaya çalıştığımızda ya her ikisi de patlayacak ya da en azından bir tanesi kesinlikle patlayacak.

Daha efektif bir sonuç için öncelikle yapılması gerekenler

halily hocam uyardı, datetime türünde string arama yapılamazken date türünde string arama yapılabiliyormuş. Öncelikle yapmanız gereken şey alanınızın veri türü datetime mı? yoksa date mi? onu kontrol etmek.

Alan türü datetime ise stringe çevirme operasyonu üzerinde epey çalışacağız.
Alan türü date ise stringe çevirmeden aşağıdaki gibi bir sorgu sonuca ulaştıracaktır.

Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
Buradaki olması gereken şey textbox'a tarihi 2024-06-24 gibi aralarında tire koyarak ve yıldan başlayarak girmek.

Bizim alıştığımız format 24.06.2024 gibi bir tarih olduğu için farklı bir çözüm geliştirmek gerekecek. Fakat bununla ilgili çözüm üretmek oldukça zor. Şuan bununla ilgili herhangi bir fikrim yok ama olunca paylaşacağım.
 
Textbox yerine DateTimePicker kontrolü kullanın
Burada like ile yapmak istediği senaryo sıkıntıya giriyor.

Anladığım kadarıyla textbox'a yazdıkça aşağıdaki filtrelensin istiyor, bu sebeple change olayında bu işi yürütmeye çalışıyor. Textbox'a yazmaya başladığı anda LIKE operatörü sayesinde koşula uyan veriler süzülmeye başlasın istiyor.
 
VB.Netten pek anlamam ama denme amaçlı olarak aşağıdakine benzer bir kod ile tarih formatı sql serverın anlayacağı şekle çevrilebilir
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
evet hocam dediğiniz gibi çünkü her gün veri girişi var o yüzden tarih ile arama yapmak zorunluluğu var
Ekran görüntüsü 2024-06-24 130117.png
 
DataView içinde arama yapmayı deneseniz?

Önce form açılırken bir datatable içine verileri alıp gridin datasource özelliğine de bu datatable ile veri gönderilir.
daha sonra textbox change olayı içine aşağıdaki gibi bir kod yazılır.
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.

Burada LIKE ile arama yine çalışmayacak tabi.
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst