Soru BOF yada EOF Doğru Hatasını Düzeltme

ssavas

Site Üyesi
Merhaba arkadaşlar.
Aşağıdaki kod ile ComboBox4 e gerekli veriyi veritabanından yüklüyorum.
CPP:
You must log in to view content
(74 satır)
Bu kod ile de ComboBox4 ile ComboBox5'i ilişkili hale getiriyorum.
CPP:
You must log in to view content
(15 satır)

Kod normalde sorunsuz çalışıyor ancak listview1 listesindeki son satırı çift tıklama ile ilgili nesnelere geri yüklerken "ya BOF yada EOF Doğru veya geçerli kayıt silinmiş" hatası geri dönüyor.
Nasıl çözerim bilemedim.
1589277820575.webp
Ekli dosyayı görüntüle 7700
 

Ekli dosyalar

  • 2.webp
    2.webp
    13.3 KB · Görüntüleme: 37
rs.open'dan hemen sonra aşağıdaki kodlardan birini ekleyiniz. Kodunuzu tam incelemedim. Fakat aşağıdaki satırlardan biri iş görür.

1- If (rs.BOF = True) Or (rs.EOF = True) Then TbNot = "Bilgi Bulunamadı.": ListBox502.Clear: Exit Sub
2- If rs.RecordCount <> 0 Then TbNot = "Bilgi Bulunamadı.": ListBox502.Clear
3- If rs.RecordCount > 0 Then TbNot = "Bilgi Bulunamadı.": ListBox502.Clear
4- Do While Not rs.EOF
.....
Loop
 
Yukarıdaki satırlardan biri işe yaramazsa ve
rs'den veri geldiğine eminseniz On error resume next deyin. (Geçici çözüm tavsiye etmem fakat iş görür.)
Yada dosyanızın son halini yükleyin bakalım.
 
rs.open'dan hemen sonra aşağıdaki kodlardan birini ekleyiniz. Kodunuzu tam incelemedim. Fakat aşağıdaki satırlardan biri iş görür.

1- If (rs.BOF = True) Or (rs.EOF = True) Then TbNot = "Bilgi Bulunamadı.": ListBox502.Clear: Exit Sub
2- If rs.RecordCount <> 0 Then TbNot = "Bilgi Bulunamadı.": ListBox502.Clear
3- If rs.RecordCount > 0 Then TbNot = "Bilgi Bulunamadı.": ListBox502.Clear
4- Do While Not rs.EOF
.....
Loop
Arkadaşım teşekkür ederim. İş yoğunluğundan anca bakabildim.
Sorun maalesef devam ediyor.
Dosyam ektedir.
 

Ekli dosyalar

Aşağıdaki şekilde kod hata vermiyor.

Private Sub ComboBox4_Change() ' Revize olacak kod
On Error Resume Next ' Bu satır eklendi
If ComboBox4.Value = "" Then
ComboBox5.Value = Empty
Else
Rem bof eof
ComboBox5.Column = baglan.Execute("select distinct [arz_firmasi] from abone_turu where abone_adi='" & ComboBox4.Value & "'").getrows
End If
Call listeye_al

If ComboBox4.Value = "ELEKTRIK" Then
TextBox2.Enabled = True
Else
TextBox2.Enabled = False
End If

End Sub
 
Arkadaşım teşekkür ederim. İş yoğunluğundan anca bakabildim.
Sorun maalesef devam ediyor.
Dosyam ektedir.
Toplamda 36 kayıt mevcut.

Bursa seçildiğinde listviewde 36 kayıt kalıyor
Büyükorhan seçildiğinde listviewde 36 kayıt kalıyor
Birim1 seçildiğinde listviewde 36 kayıt kalıyor
Su seçildiğinde listviewde 36 kayıt kalıyor

Su seçildiğinde listviewde 3 kayıt kalması gerekmiyormu? Yani S1000 , S1001 , S1002 nolu aboneler.

Yada kısaca sorayım tam olarak neye ulaşmak istiyorsunuz?
 
Toplamda 36 kayıt mevcut.

Bursa seçildiğinde listviewde 36 kayıt kalıyor
Büyükorhan seçildiğinde listviewde 36 kayıt kalıyor
Birim1 seçildiğinde listviewde 36 kayıt kalıyor
Su seçildiğinde listviewde 36 kayıt kalıyor

Su seçildiğinde listviewde 3 kayıt kalması gerekmiyormu? Yani S1000 , S1001 , S1002 nolu aboneler.

Yada kısaca sorayım tam olarak neye ulaşmak istiyorsunuz?
Haklısınız. :) Bu durumu frmYillik formunda görebilirsiniz. Kod için @Feyzullah beye teşekkür ediyorum.
CPP:
You must log in to view content
(17 satır)
Bu kod ile userformdaki bütün ComboBox'la bir biri ile ilişkili hale geliyor.
Yalnız bu makroda yaşadığım bir sorun nedeniyle bu kodu düzeltme ve silme işlemi yaptığım işlemlerde kullanmadım.
Anladığım kadarıyla iç içe filtre sonucu kayıtların kimlik numaraları değiştiği için veya kimlik numaralarını bulamadığı için düzeltme ve silme işlemlerinde fonksiyon çalışmıyor.
 
Bu konuda sorunu tam anlamış değilim, hatta dosyayı indirip test ettiğimde hata almadım.
İlginize teşekkür ederim üstat.
Dosyayı hata vermeyecek ve stabil çalışacak şekilde yapılandırmıştım.
Çalışmayı hata verir halde tekrar revize ettim.
Örnek hatalar:
frmFatura formunda
1- TextBox1 sorgusunda sorgu sonucunu ilgili nesnelere yüklemiyor. Sadece ComboBox1 ye veri yüklüyor.
CPP:
You must log in to view content
(35 satır)
2- Listview1 de listeli verilerden her hangi birisini güncelleme veya silmeye çalışırsanız işlem, hata vermiyor ancak ne güncelleme ne de silme işlemi gerçekleşmemiş oluyor. Yapılan değişikliği veri tabanından kontrol edince gerçekleşmediği görülüyor.
ComboBoxlardaki pasif hale gelmiş makro ile sorun yaşamadan texbox1 sorgusu, silme, güncelleme vs yapılabilirken iç içe filtre yapan makroya geçince sorunlar başlıyor.
Zamanınız müsait olunca bakarsanız memnun olurum.
CPP:
You must log in to view content
(34 satır)
 

Ekli dosyalar

Ayın 7 sindeki TextBox1_Exit doğru çalışmıyormuş zaten.
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next satırını inaktiv yapınca;
Object variable or with block... hatası veriyor.
frmFatura isimli formdaki comboboxlar resimdeki gibi revize edince textbox1_exit sorunsuz çalışıyor.
sorgu.webp

sorgu1.webp

2.webp

Ancak comboboxlar iç içe filtre edecek şekilde tekrar revize edince textbox1_exit ile beraber düzenle ve sil makroları da sorunlu hale geliyor.
Ekli dosyayı görüntüle fatura_takip.rar
 

Ekli dosyalar

Moderatörün son düzenlenenleri:
frmFatura isimli formdaki comboboxlar resimdeki gibi revize edince textbox1_exit sorunsuz çalışıyor.
sorgu.webp
sorgu1.webp
2.webp
Ancak comboboxlar iç içe filtre edecek şekilde tekrar revize edince textbox1_exit ile beraber düzenle ve sil makroları da sorunlu hale geliyor.
Ekli dosyayı görüntüle 9783
Genel bir açıklamada bulunayım Sayın S.Savaş

Sadece abone no ile sorgulama yaparsanız cb1 cb2 yi cb2 cb3 ü vs.... tetikleyip başka kod çalışmak istiyor ve bir önceki mesajımda yazdığım Object variable... (On error resume next inaktiv iken) hatası meydana geliyor. (Aktif iken doğru sonuç vermiyor)

Sonuç olarak ya iç içe cb'lar ile yapılmış kodu kullanacaksınız yada yeni bir userform daha yapıp onada sadece abone no (tb1 exit) ile çalışan kodları ekleyeceksiniz.

Eğer yeni bir userform yapmak istemiyorsanız;
ComboBox111.Value = rs("IlAdi")
ComboBox222.Value = rs("IlceAdi")
ComboBox333.Value = rs("birim_adi")
ComboBox444.Value = rs("abone_adi")
ComboBox555.Value = rs("arz_firmasi") gibi 5 adet yeni cb oluşturup abone no (tb1 exit) ile çalışan kodlarda bunlar enable/visible true olacak.

İç içe cb'lar ile sorgu yapınca yeni yapılan cb'lar enable/visible false yapılıp eski cb'lar enable/visible true yapılacak. Bu senaryoya göre bir kaç if eklenecek.

Aksi takdirde hem abone no (tb1 exit) hemde iç içe cb'lar beraber çalışmaz.

Saygılar.
İyi çalışmalar.
 
Moderatörün son düzenlenenleri:
frmFatura isimli formdaki comboboxlar resimdeki gibi revize edince textbox1_exit sorunsuz çalışıyor.
Ekli dosyayı görüntüle 7808
Ekli dosyayı görüntüle 7811
Ekli dosyayı görüntüle 7809
Ancak comboboxlar iç içe filtre edecek şekilde tekrar revize edince textbox1_exit ile beraber düzenle ve sil makroları da sorunlu hale geliyor.
Ekli dosyayı görüntüle 7812
Yapılan değişiklikleri ctrl+f yapıp yeni eklendi yazarak görebilirsiniz.
Eklenen kodlar işe yararsa yeni oluşturulan comboboxları eskilerinin tam üstüne yerleştirirsiniz.
 

Ekli dosyalar

Konuyu başlatan
Site Üyesi
Katılım
Konu Bilgi
Durum
Soru 
Forum
Excel Makro Soruları
Başlangıç tarihi
Son yanıt tarihi
Cevaplar
20
Üst