def go_ara():
go_tree.delete(*go_tree.get_children())
for go_veri in go_db.go_veriarama(tarih=ent_tarih.get(), firma=ent_firma.get(), aciklama=ent_aciklama.get()):
go_tree.insert(parent="", index=END, values=go_veri)
database kısmındaki arama fonksiyonum
def go_veriarama(self, tarih, firma, aciklama):
self.cur.execute("SELECT * FROM gunlukolaylar WHERE tarih=? or firma=? or aciklama=?", (tarih, firma, aciklama))
sonuc = self.cur.fetchall()
print(sonuc)
return sonuc
sorgularım doğru çalışıyor, ama örnek vermek gerekirse firma aratmak istediğimde “Seç Market” tam yazmazsam Seç olarak Seç Marketlerin kayıtlarını bulmuyor. Açıklama kısmında mesela “aidat” yazdığımda açıklamanın neresinde olursa olsun bulup listelemenin bir yolu var mı?.
SQL sorgunda joker karakter kullanabilirsin. % joker karakterini değişkenlerin başına ve sonuna ekle örneğin.
Yani şunu bir dene.
def go_veriarama(self, tarih, firma, aciklama):
firma = '%' + firma + '%'
aciklama = '%' + aciklama + '%'
self.cur.execute("SELECT * FROM gunlukolaylar WHERE tarih=? or firma=? or aciklama=?", (tarih, firma, aciklama))
sonuc = self.cur.fetchall()
print(sonuc)
return sonuc
Bunun da şöyle dezavantajları var ama, or kullandığın için ve joker karakter olduğundan bütün durumları listeler. Bu yüzden dolu olanda joker karakter kullanırsın. (Boş olanları jokersiz gönderirsin sorguya)
Edit: @aib in uyarması iyi olmuş benim yazdığım kod yanlış LIKE ifadesi olmalı evet.
LIKE ifadesi kullanabilirsin. …WHERE firma LIKE '%Seç%'… Ozellikle % ile baslayan aramalarda yavas olur ama en azindan calisir. Bu isin dogrusu full-text search (linkteki MATCH) ama orada da yazdigi gibi extension’lar, ekstra kurulumlar istiyor.
konuma cevap verdiğiniz için teşekkürler. Verdiğiniz çözümleri kullanmak benim için ilerleyen zamanlarda öğrenme seviyemi ilerletmem ile mümkün olacak.