PyQT5 Kategori bulunamadı hatasını nasıl verdirebilirim?

Arkadaşlar merhaba.

Öncelikle sistemi anlatayım. Bir ürün bilgileri düzenleme sistemi var. Ürünün barkodunu yazınca, bilgiler lineEdit ve comboBox’lara giriliyor. Burası okey, bir problem yok.

Fakat daha önceden bir ürün eklenince ve seçilen kategori silinince, ürünü düzenlemek isterken çağırdığımızda kategorinin silindiğini söylemek istiyorum.

Mesela:

Diyelim ki bir T-shirt ekliyoruz. Kategorisini t-shirtler seçtik. Sonra ise bunu düzenlemek istedim. Barkodunu lineEdit’e girdim. Ama ben t-shirtler kategorisini silmiştim. İşte ben bu ürünü düzenlemek için çağırdığımda, beni uyarmasını istiyorum. Kategori silinsin falan demek istiyorum. Bu kategoriler bir listWidget’ta bu arada. listWidget, veri tabanı ile birlikte çalışıyor ve kategori eklenince, silince listeden de ekleniyor veya siliniyor.

Ben şu kodu denedim:

dbcur.execute("SELECT * FROM urunYonetimi WHERE urunBarkodu = ?", (bilgi,))

        for row in dbcur:

            self.arayuz.stokVeUrunYonetimi_urunDuzenle_barkodTextBox.setText(row[0])

            self.arayuz.stokVeUrunYonetimi_urunDuzenle_urunAdiTextBox.setText(row[1])

            self.arayuz.stokVeUrunYonetimi_urunDuzenle_markaComboBox.setCurrentText(row[2])

            self.arayuz.stokVeUrunYonetimi_urunDuzenle_kategoriComboBox.setCurrentText(row[3])

            self.arayuz.stokVeUrunYonetimi_urunDuzenle_birimComboBox.setCurrentText(row[4])

            self.arayuz.stokVeUrunYonetimi_urunDuzenle_stokTextBox.setText(str(row[5]))

            self.arayuz.stokVeUrunYonetimi_urunDuzenle_fiyatTextBox.setText(str(row[6]))

        dbcur.execute("SELECT * FROM kategoriYonetimi")

        for icerik in range(self.arayuz.kategoriYonetimi_tumKategoriler_kategorilerListesiListBox.count()):

            for row in dbcur:

                if self.arayuz.kategoriYonetimi_tumKategoriler_kategorilerListesiListBox.item(icerik).text() != row[0]:

                    QMessageBox.about(self, "Hata", "Kategori silinmiş!")

Koddaki sorun, kategori silinmiş hatasını birkaç kere vermesi. Ve kategori olmasına rağmen veriyor. Sanırım listWidget’teki tüm itemleri değerlendiriyor ve ona göre diyor. Doğru kategori gelene kadar da hata veriyor galiba.

Yukarıdaki kodda, listWidget’teki itemlerin textleriyle, ürün bilgilerinin kayıt edildiği veri tabanındaki kategori column’un içeriklerini karşılaştırıyorum.

Şimdiden teşekkür ederim yardım için.

Arkadaşlar tekrardan merhaba.

Listedeki verilerle, veri tabanındaki kategori column’undaki verileri karşılaştırabildim…

        for row in dbcur:
            for i in range(self.arayuz.kategoriYonetimi_tumKategoriler_kategorilerListesiListBox.count()):
                if row[3] == self.arayuz.kategoriYonetimi_tumKategoriler_kategorilerListesiListBox.item(i).text():
                    QMessageBox.about(self, "Hata", "bulundu!")
                else:
                    QMessageBox.about(self, "Hata", "Kategori bulunamadı!")

Fakat burada ben sadece kategoriyi bulamadığında uyarı versin istiyorum. Kategoriler zaten eşitse, bir şey yapmasın istiyorum. == olan if, kategoriyi buldu demek oluyor.

Fakat şöyle bir sorun, for döngüsünde, listedeki tüm itemleri denediği için, her denediğinde kategori bulunamadı diyor.

Arkadaşlar baştan beri findItem metodu aklıma hiç gelmedi :smiley: Buyrun çözümü bırakayım:

        dbcur.execute("SELECT * FROM urunYonetimi WHERE urunBarkodu = ?", (bilgi,))

        for row in dbcur:
            itemBulma = self.arayuz.kategoriYonetimi_tumKategoriler_kategorilerListesiListBox.findItems(row[3], Qt.MatchExactly)
            if itemBulma:
                print("item bulundu")
                
            else:
                QMessageBox.about(self, "Hata", "Kategori bulunamadı!")
2 Beğeni