Döngü problemi

mubarzer
31-10-2011, 10:44   |  #1  
OP Taze Üye
Teşekkür Sayısı: 0
6 mesaj
Kayıt Tarihi:Kayıt: May 2011

Merhaba arkadaşlar. Döngü ile ilgili bir sıkıntım var. Şöyle ki;

Veritabanımda haftalı ders saati diye bir bölüm var. Butona basınca haftalık ders saati sıfırdan büyük olan öğrencilerin sırayla formun üzerindeki textbox ta görüntülenmesi lazım. Daha sonra Label1'e rastgele sayi atayıp buna bağlı olarak Label2'de veritabanında Alan1 kontrolü yaptırıyorum. Alan1 boşsa öğrenci ile ilgili işlemler yapılacak veritabanındaki haftalıkderssaatinden bir(1) çıkarılacak ve haftalık ders saati sıfırdan büyük olan bir sonraki öğrenci textbox ta görüntülenecek. Textboxta görüntülenen öğrenci için işlemler yapılamadıysa döngü devam edecek bir sonraki öğrenciye geçecek ama bütün liste bittikten sonra baştan tekrar başlaması lazım. Ben şöyle yapıyorum;

Adodc1.RecordSource = "select ogrenciadi from veritabani1 where haftalıkderssaati>0"

Adodc1.Refresh
Do Until Adodc1.Recordset.RecordCount = 0
Adodc1.Recordset.MoveFirst
Text1(0) = Adodc1.Recordset.Fields(0)


rastgelesayi 'Burada Label1'e rasgele sayi atıyorum (Buraya bağlı Label2 de veritabanındaki alan1'in kontrolünü yapıyorum)


If Label2 = "" Then
Adodc2.RecordSource = "select *from veritabani2 where ogrenciadi='" & Text1 & "'"
Adodc2.Refresh
Adodc2.Recordset.Fields(alan1.Caption).Value = Text1
Adodc2.Recordset.Update

Adodc1.RecordSource = "select *from veritabani1 where ogrenciadi='" & Text1 & "'"
Adodc1.Refresh

Adodc1.Recordset.Fields!haftalikderssaati = Val(Adodc1.Recordset.Fields!haftalikderssaati - 1)
Adodc1.Recordset.Update
Else
Exit Sub
End If

Adodc1.Recordset.MoveNext

Loop

Ama olmuyor. Yardımcı olabilir misiniz?

KuaforPlus
18-01-2012, 09:41   |  #2  
KuaforPlus avatarı
Yıllanmış Üye
Teşekkür Sayısı: 1
223 mesaj
Kayıt Tarihi:Kayıt: Nis 2007

döngüde gözlemlediğim sorun

Do Until Adodc1.Recordset.RecordCount = 0
Adodc1.Recordset.MoveFirst
satırından kaynaklanıyor
satırı şöyle değiştirin

Adodc1.Recordset.MoveFirst
Do Until Adodc1.Recordset.RecordCount = 0


yukarıdaki kod sayesinde ilk önce adodc1 ilk kayda gider sonra döngü başlar.

sizin yazdığınız da kod da ise yazım şekliniz yüzünden her döngü yeniden başladığında adodc1 tekrar ilk kayda gidiyor buda bir sonraki kaydın gösterilmesini engelliyor diye düşünüyorum.


İyi Çalışmalar.