iyi günler arkadaşlar
do while loop döngüsü ile ilgili ders anlatımı veya örnek varmı acaba
mesala şöylemi olmalı
-----------------------
onay1.value=false
Do while onay1.value=true
metin1= rnd()
onay1.value=true
loop
-----------------------
teşekkürler
do while loop kullanılışı
Selamlar
Örnekte görüldüğü gibi
Koşul gerçekleştiği sürece bir eylemin
tekrar etmesi
3 bölümden oluşur
___________________________________
1.
Do While öncesi bildirimler
Do While + Koşulunuz ( bu koşul sağlandığı sürece eylem tekrar edilir )
2.
Tekrar edilecek eylemlerin bütünü
3.
Loop
Koşul sağlanmadığı duruma gelince yapılacak bildirimler
_____________________________________
Örnek :
Dim SAYAC AS Integer
SAYAC = 20
Do While SAYAC > 0
MsgBox " Sayaç henüz sıfırlanmadı"
SAYAC=SAYAC-1
Loop
MsgBox " Sayaç sıfırlandı"
Selamlar
Örnekte görüldüğü gibi
Koşul gerçekleştiği sürece bir eylemin
tekrar etmesi
3 bölümden oluşur
___________________________________
1.
Do While öncesi bildirimler
Do While + Koşulunuz ( bu koşul sağlandığı sürece eylem tekrar edilir )
2.
Tekrar edilecek eylemlerin bütünü
3.
Loop
Koşul sağlanmadığı duruma gelince yapılacak bildirimler
_____________________________________
Örnek :
Dim SAYAC AS Integer
SAYAC = 20
Do While SAYAC > 0
MsgBox " Sayaç henüz sıfırlanmadı"
SAYAC=SAYAC-1
Loop
MsgBox " Sayaç sıfırlandı"
Selamlar
okileturc, 18-03-2009 tarihinden beri AccessTr.neT üyesidir.
Son Düzenleme: 22/03/2009, 16:30, Düzenleyen: okileturc.
teşekkürler
yaptığım veritabanında yıl sonunda izin birleştirmesi için kullandım bu kodları.
Kod:
'Kayıt Aktarılacak Personel Sicillerini Alacağız
Dim dbsizinaktar As DAO.Database
Dim rstizinaktar As DAO.Recordset
Dim dbpathizinaktar As String
dbpathizinaktar = DLookup("yol", "yol")
Set dbsizinaktar = DBEngine.OpenDatabase(dbpathizinaktar)
Set rstizinaktar = dbsizinaktar.OpenRecordset("SELECT * FROM anatablo WHERE ((anatablo.GörevDurumu)='" & "GÖREVE BAŞLADI')")
With rstizinaktar
.MoveLast
.MoveFirst
Do While Not .EOF
'siciller sıralanıyor
Dim rstizinaktar1 As DAO.Recordset
Dim izin As Integer
izin = 0
' Kullandığı İzinler Hesaplanıyor
Set rstizinaktar1 = dbsizinaktar.OpenRecordset("SELECT * FROM Izin WHERE (Izin.Sicili)=" & !Sicili)
If rstizinaktar1.RecordCount <> 0 Then
With rstizinaktar1
.MoveLast
.MoveFirst
Do While Not .EOF
izin = izin + !KullandigiIzin
.MoveNext
Loop
.Close
End With
End If
'Hakettiği İzinler Hesaplanıyor
Dim rstizinaktar2 As DAO.Recordset
Dim izinhak As Integer
izinhak = 0
Set rstizinaktar2 = dbsizinaktar.OpenRecordset("SELECT * FROM Izin WHERE (Izin.Sicili)=" & !Sicili)
If rstizinaktar2.RecordCount <> 0 Then
With rstizinaktar2
.MoveLast
.MoveFirst
Do While Not .EOF
izinhak = izinhak + !HakettigiIzin
.MoveNext
Loop
.Close
End With
End If
'Yıllık İzin Girişi Yapılıyor
Dim rstizinaktar3 As DAO.Recordset
Set rstizinaktar3 = dbsizinaktar.OpenRecordset("SELECT * FROM Izin ")
rstizinaktar3.AddNew
rstizinaktar3!Sicili = !Sicili
rstizinaktar3!Adi = !Adi
rstizinaktar3!Soyadi = !Soyadi
rstizinaktar3!GörevYeri = !GörevYeri
rstizinaktar3!SubeBüro = !SubeBüro
rstizinaktar3!IzinYili = Year(Date)
rstizinaktar3!IzinTürü = "YILLIK İZİN GİRİŞİ"
rstizinaktar3!BaslamaTarihi = Date
'Toplam İzin hakkı - kullandığı izin hakkı yıllık izin hakkından büyükse
If (izinhak - izin) > !YillikIzinGunu Then
'yıllık izin hakkı olarak kalan izninden yıllık izin hakkını çıkarıyoruz
rstizinaktar3!HakettigiIzin = (!YillikIzinGunu * 2) - (izinhak - izin)
rstizinaktar3!Açiklama = "Yıllık İzin Hakkından Geçen Yılın Fazlalık İzni Düşülmüştür"
Else
'değilse normal izin hakkını giriyoruz
rstizinaktar3!HakettigiIzin = !YillikIzinGunu
End If
rstizinaktar3!Onay = -1
rstizinaktar3.Update
rstizinaktar3.Close
.MoveNext
Next I
Loop
.Close
End With
dbsizinaktar.Close
İyiki Varsın Access
Ben daha sitede yeniyim fakat bir şey yazmak istiyorum.
Mod olan bir arkadaşı uyarmak gibi algılamazsanız sevinirim. Sonuçta burası bir paylaşım platformu. Herkes paylaşacak ki gelişeceğiz.
Hata olarak gördüklerim
1. While döngüsü içinde bir dim yapılıyor. Her döngüde tekrar tekrar tanımlanıyor. Tanımlananı da sonuna kadar giderek tarıyor. Sanki orada bir Dsum kurtarıcakmış gibi.
2. Hatta veri tabanını görsem büyük ihtimalle tek bir Sql ile çözülebilir sanırım. Ben olmasam da değerli arkadaşlar yapabilirler.
Nacizane fikrime göre bu kod inanılmaz yavaş çalışlan bir kod gibi geldi bana.
Mod olan bir arkadaşı uyarmak gibi algılamazsanız sevinirim. Sonuçta burası bir paylaşım platformu. Herkes paylaşacak ki gelişeceğiz.
Alıntı:With rstizinaktar
.MoveLast
.MoveFirst
Do While Not .EOF
'siciller sıralanıyor
Dim rstizinaktar1 As DAO.Recordset
Dim izin As Integer
izin = 0
' Kullandığı İzinler Hesaplanıyor
Set rstizinaktar1 = dbsizinaktar.OpenRecordset("SELECT * FROM Izin WHERE (Izin.Sicili)=" & !Sicili)
If rstizinaktar1.RecordCount <> 0 Then
With rstizinaktar1
.MoveLast
.MoveFirst
Do While Not .EOF
izin = izin + !KullandigiIzin
.MoveNext
Loop
.Close
End With
Hata olarak gördüklerim
1. While döngüsü içinde bir dim yapılıyor. Her döngüde tekrar tekrar tanımlanıyor. Tanımlananı da sonuna kadar giderek tarıyor. Sanki orada bir Dsum kurtarıcakmış gibi.
2. Hatta veri tabanını görsem büyük ihtimalle tek bir Sql ile çözülebilir sanırım. Ben olmasam da değerli arkadaşlar yapabilirler.
Nacizane fikrime göre bu kod inanılmaz yavaş çalışlan bir kod gibi geldi bana.
dsum etki alanı topluluğu . bir tablo veya sorgudan kullanabilirsin. benim veritabanım kodlarımın bulunduğu veritabanında değil. dao ile bağlantı kullanıyorum. dim için dediğin belki doğru olabilir ama kodlardaki tanımlamarı kullanacağım yere yakın yazıyorum. bir sorun çıktığı zaman gözümün önünde olsun diye. farklı birsürü fikir çıkabilir. ama herkesin bir çalışma prensibi var. yavaş demişsin hiçte öyle bir problemi yok. altı üstü bir tanımlama.
İyiki Varsın Access
Konuyu Okuyanlar: 1 Ziyaretçi