• 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ü Listboxta Filtreleme Sıralama Kodları Silme Ve Düzenleme İşlevlerinde hatalı sonuca yol açıyor.

Bu sorun verilen destek sayesinde çözüme ulaştırılmıştır.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

OğuzTürkyılmaz

Yeni Üye
Kullanıcı Bilgileri
Katılım
12 Eyl 2021
Mesajlar
263
Çözümler
1
Aldığı beğeni
30
Excel Versiyonu
Office 365 TR
Konuyu Başlatan
İmdaaaaat
Projemde Poliçe Listesi formunda yapılan iki tarih arası filtreleme ve sonuçların büyükten küçüğe sıralanması ile ilgili forumdan aldığım destekle çözümlenen bu konular sonucunda Yine Poliçeler Listesi formu üzerinden yaptığım silme ve düzenleme işlemlerinde düzenlemek yada silmek istediğim satırda işlemi gerçekleştiriyorum fakat sonuçta başka satıdaki veri siliniyor yada düzenle butonuna basarak yada satır üzerinde çift tıklayarak forma çektiğim bilgiler başka bir satırdaki veriler oluyor. Bu sorunların ortaya çıkışı kesinlikle son çözümlenen listboxta filtreleme ve sıralama kodlarının yazılması sonrasında meydana geldi. ( Önceki foruma yüklediğim dosyalarda bu kodların çalışmasında sıkıntı yaşamıyordum.) Bu konu beni çok aşıyor bu sorunu düzeltmemde yardımcı olmanızı rica ederim.
Screenshot_1.png
 

Ekli dosyalar

  • Poliçe Takip - Kopya.xlsm
    738.2 KB · Gösterim: 7
Çözüm
aşağıdaki dosyayı dener misiniz?
Not: metin/combo değerlerinin ilgili hücrelere atanmasını yapabilirsiniz diye o kısımlara dokunmadım
Böyle hataların önüne geçmek için sayfada bir benzersiz alan olması gerek yani SIRA NO gibi.
Sizin zaten silme kodu yanlış abey.
 
Böyle hataların önüne geçmek için sayfada bir benzersiz alan olması gerek yani SIRA NO gibi.
Sizin zaten silme kodu yanlış abey.
Refaz hocam silme kodu işlevi doğru çalışıyordu görmek isterseniz eski dosyayı yükleyebilirim. Bir ID alanı var zaten 1.sütun da saklıyorum sadece, fakat orda söyle bir durum var taksitlendirme yapıldığında aynı işlem de aynı ID'yi atıyor. Yani 5 taksid yaptınız taksidleri tarih sırasıyla yarattı ama ID numarasıda 5 taksid için aynı oluyor. Dolayısıyla benzersiz alan işlevini yitiriyor.
 
Refaz hocam silme kodu işlevi doğru çalışıyordu görmek isterseniz eski dosyayı yükleyebilirim. Bir ID alanı var zaten 1.sütun da saklıyorum sadece, fakat orda söyle bir durum var taksitlendirme yapıldığında aynı işlem de aynı ID'yi atıyor. Yani 5 taksid yaptınız taksidleri tarih sırasıyla yarattı ama ID numarasıda 5 taksid için aynı oluyor. Dolayısıyla benzersiz alan işlevini yitiriyor.
ID alanı var lakin benzersiz değil.Tam çalışırmı bilmiyorum ama alttaki kodu bir deneyin ama tam çözüm değil.
Dediğim gibi bir benzersiz alan olması gerek.Yani SIRA NO olsaydı alta alta 1,2,3.... diye devam eden çok kolaydı ve mantıklısıda buydu.Belki de sayfanın en sonuna eklenip listboxada eklenip gizlenebilinir.


Rich (BB code):
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
ID alanı var lakin benzersiz değil.Tam çalışırmı bilmiyorum ama alttaki kodu bir deneyin ama tam çözüm değil.
Dediğim gibi bir benzersiz alan olması gerek.Yani SIRA NO olsaydı alta alta 1,2,3.... diye devam eden çok kolaydı ve mantıklısıda buydu.Belki de sayfanın en sonuna eklenip listboxada eklenip gizlenebilinir.


Rich (BB code):
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
Refaz hocam silmeden ziyade düzenleme kodu önemli silme işlemini bir şekilde baktım olmuyor sayfadan manuel yapsın derim ama düzenleme kodu önemli. Bu kodu da deneyeceğim. Sıkıntıyı yaratan duruma dair çözüm için halily hocamın yazdığı kodlar la taksitlendirme işlemi yapılıyordu. O kodlarda her taksid satırı için ayrı bir ID numarası verilebilirmi onu halily hocam bilir. Yada sayfada bir sütun daha eklenecek en başa sıra no diye o alan benzersiz yapılacak ve ekleme sırasında o alan değeri bir arttırılacak. Bende çözüm varda yapacak zeka yok. :)
 
Refaz hocam silmeden ziyade düzenleme kodu önemli silme işlemini bir şekilde baktım olmuyor sayfadan manuel yapsın derim ama düzenleme kodu önemli. Bu kodu da deneyeceğim. Sıkıntıyı yaratan duruma dair çözüm için halily hocamın yazdığı kodlar la taksitlendirme işlemi yapılıyordu. O kodlarda her taksid satırı için ayrı bir ID numarası verilebilirmi onu halily hocam bilir. Yada sayfada bir sütun daha eklenecek en başa sıra no diye o alan benzersiz yapılacak ve ekleme sırasında o alan değeri bir arttırılacak. Bende çözüm varda yapacak zeka yok. :)
Düzenleme içinde bu koddaki mantık kullanılabilinir eğer dediğin sütun eklenemeyecekse.
Bir bakayım onada.
 
Public Sub WriteDataToSheet() Kodunu alttaki gibi değiştirin ve end sub altınada Private Function WriteDataToSheetGuncelle(ByVal row As Long) As Long olan kodları ekleyin.

888.png


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

JavaScript:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
ayrıntılı inceleyemedim ve açıkçası sorunu tam anlayamadım:
amaç listboxta seçili verinin olduğu satırı tam olarak bulmaksa
veriler ID ve taksit No'ya göreyse aşağıdaki kod doğru satırı bulabilir
Not: ID + Taksit NO benzersiz ise
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
Son düzenleme:
Halil abey hiç benzersiz alan yok :(
 
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
zafer hocam ID alanı her yani poliçede otomatik olarak ekleniyor yani her poliçenin benzersiz bir ID alanı oluyor
ve her poliçe için benzersiz bir taksit alanı oluşturuluyor diye hatırlıyorum dolayısıyla ID - Taksit bileşik alanı benzersiz bir değere sahip oluyordu
not Yukardaki kodu tekrar düzenledim
 
Son düzenleme:
Mesala filtreleyip listbox genişiliklerini 0 yapılmış onları görünür yapıncada resimdeki gibi sonuç.
7777.png
 
denemelerimde gözümden kaçan bir şey olmadıysa doğru satırdaki veriyi getiriyor -kast ettiğim form değil debug ile ekrana yazdırdığımda -ama güncelleme formu açıldığında tüm taksitleri değiştirebiliyoruz belli bir taksit değiştirilecekse sadece onunla ilgili taksit gelmeli
güncelleme ve silme işleminin mantığını biraz daha açıklar mısınız sayın OğuzTürkyılmaz
 
denemelerimde gözümden kaçan bir şey olmadıysa doğru satırdaki veriyi getiriyor -kast ettiğim form değil debug ile ekrana yazdırdığımda -ama güncelleme formu açıldığında tüm taksitleri değiştirebiliyoruz belli bir taksit değiştirilecekse sadece onunla ilgili taksit gelmeli
güncelleme ve silme işleminin mantığını biraz daha açıklar mısınız sayın OğuzTürkyılmaz
halily hocam silme işleminde diyelim ki kullanıcı yanlışlıkla Poliçeyi 5 taksit yerine 6 taksit yaptı ve poliçe tutarı da bu yüzden yanlışlıkla 5 yerine 6 takside bölünmüş oldu. Bu durumda kullanıcının son taksit olan 6.taksiti silmesi durumu düzetmeyecek çünkü taksit tutarlarını da değiştirmesi gerekiyor. Bu yüzden tek tek tüm taksitleri silip poliçenin girişini 5 taksit olarak tekrar düzenleyip kaydetmesini istiyorum. Diğer türlü yanlış olan 6.taksidi sildiğinde diğer 5 taksitin tutarlarının otomatik değiştirilmesi vs uzun iş gerek de yok. Yani silme işlemi yapılacaksa o poliçeye ait tüm taksitler tek tek silinecek belki daha sonra satırların başına checkbox koyup toplu seçim gibi bir şey yapılabilir ama şu an için fanteziye kaçar şimdilik gerek yok. Önemli olan düzenleme kodu. İlgili satırda düzenleme butonuna basıldığında sadece ve sadece o vadeye ait tutarın ödemesi ile ilgili textboxlara bilgi girilmesi gerekiyor bilgi girilebilecek değiştirilebilecek alanları sınırladım zaten sadece ödeme açıklama ve muayene tarihi textboxlarına bilgi girilebilir yada değiştirilebilir bunun dışında diğer textboxlardaki bilgiler kullanıcı tarafından değiştirilemez. Umarım yeterince açıklayıcı olabilmişimdir.
 
halily hocam silme işleminde diyelim ki kullanıcı yanlışlıkla Poliçeyi 5 taksit yerine 6 taksit yaptı ve poliçe tutarı da bu yüzden yanlışlıkla 5 yerine 6 takside bölünmüş oldu. Bu durumda kullanıcının son taksit olan 6.taksiti silmesi durumu düzetmeyecek çünkü taksit tutarlarını da değiştirmesi gerekiyor. Bu yüzden tek tek tüm taksitleri silip poliçenin girişini 5 taksit olarak tekrar düzenleyip kaydetmesini istiyorum. Diğer türlü yanlış olan 6.taksidi sildiğinde diğer 5 taksitin tutarlarının otomatik değiştirilmesi vs uzun iş gerek de yok. Yani silme işlemi yapılacaksa o poliçeye ait tüm taksitler tek tek silinecek belki daha sonra satırların başına checkbox koyup toplu seçim gibi bir şey yapılabilir ama şu an için fanteziye kaçar şimdilik gerek yok. Önemli olan düzenleme kodu. İlgili satırda düzenleme butonuna basıldığında sadece ve sadece o vadeye ait tutarın ödemesi ile ilgili textboxlara bilgi girilmesi gerekiyor bilgi girilebilecek değiştirilebilecek alanları sınırladım zaten sadece ödeme açıklama ve muayene tarihi textboxlarına bilgi girilebilir yada değiştirilebilir bunun dışında diğer textboxlardaki bilgiler kullanıcı tarafından değiştirilemez. Umarım yeterince açıklayıcı olabilmişimdir.
Poliçe vadesi geldiğinde o vadeye ait satırın üstünde tıklayacak ödeme durumu nu ödenecekten ödendiye çevirecek ödeme tipi banka vs diğer combolardanda istediklerini seçip o vadedeki tutarın ödemesinin yapıldığını programa girmiş olacak.
 
adım adım anlatır mısınız düzenleme işini?
poliçeler formunda listboxtan değeri seçtik,
poliçe düzenle düğmesine bastık ondan sonra ne olacak
hangi veriler metin kutularına gelip hangileri gelmeyecek
anladığım kadarıyla yapmaya çalıştım
izlenen adımlar
poliçeler formunda listboxtan değeri seçtik,
poliçe düzenle düğmesine bastık
sadece ilgili satırın verileri geldi
-burada sadece ilgili taksit alanına veri girilip değiştirilebiliyor -
veriler gelir gelmez imleç ilgili ayın taksitine odaklanıyor veriler değiştiğinde güncelle butonuna basılıyor
Not: tekrar tekrar veri girmemek için tarih alanlarına sabit değerler atadım
şimdilik sadece ilgili satır güncellendi
çok önemli not2 : kullandığım VrStr tanımı verinin olduğu satırın numarasıdır ve güncelleme formuna gider yani m_currentRow=VrStr
aa.gif
 

Ekli dosyalar

  • Poliçe Takip_hy.xlsm
    710 KB · Gösterim: 5
bu arada ilgili veriyi bulma kodu aşağıdadır
karmaşa olma ihtimaline karşı kod çalışmadan önce sayfayı ID ve taksite göre sıralıyor
aslında sadece ID'e göre sıralama da yeterli olabilirdi
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
tekrar vurguluyorum bu kod sadece ve sadece Belli bir poliçe ID'ine sadece benzersiz taksit no girilmişse geçerlidir
yanı
ID:4, Taksit:1 ,Taksit:2, Taksit:3, .... Taksit:12
ID:5, Taksit:1 ,Taksit:2, Taksit:3, .... Taksit:12 olabilir ama
ID:4, Taksit:1 ,Taksit:1 , Taksit:2, .... Taksit:12 gibi aynı ID'e aynı taksit no 1'den fazla yazılamaz
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

Konuyu okuyanlar

Geri
Üst