Access Formda Rastgele (random) Resimlerin Aynı Olmamasını Nasıl Sağlarız?

14/04/2017, 00:35

mehami

Merhaba değerli forum üyeleri;
Ekte bulunan uygulama örneğinde frm_katagori çalıştırılıp - katagori olarak KILIK KIYAFET seçildiğinde açılan frm_dort ( 4 resim olan) formunda YENİLE butonuna bastığımızda her defasında random olarak gelen resimlerden bazen 2 tanesinin aynı resim olduğu gözüküyor.

Random olarak gelen bu resimler asla aynı olmayacak şekilde kod yapısında nasıl  bir değişiklik yapmam gerekmektedir?Kod yapısında her türlü oynadım ama bir türlü aynı resim olma ihtimalini yok edemedim.


Bu konuda öneri ve yardımlarınızı bekliyor saygılar sunuyorum.
Kod yapısı aşağıda

Kod:
On Error GoTo Hata

   rsm_1 = CInt(Int((GKayitSayisi * Rnd()) + 1))
   rsm_2 = CInt(Int((GKayitSayisi * Rnd()) + 1))
   rsm_3 = CInt(Int((GKayitSayisi * Rnd()) + 1))
   rsm_4 = CInt(Int((GKayitSayisi * Rnd()) + 1))

       If rsm_4 = rsm_3 Then
           Do Until rsm_2 <> rsm_3
               rsm_4 = CInt(Int((GKayitSayisi * Rnd()) + 1))
           Loop
       End If

   rsm_4 = CInt(Int((6 * Rnd()) + 1))

       If rsm_4 = rsm_1 Or rsm_3 = rsm_2 Then
           Do Until rsm_4 <> rsm_2 And rsm_3 <> rsm_1
               rsm_4 = CInt(Int((GKayitSayisi * Rnd()) + 1))
           Loop
       End If


Hata:
If Err.Number <> 0 Then
MsgBox (Err.Number)
Exit Sub
End If
14/04/2017, 08:29

ozanakkaya

Merhaba, 

form_kategori isimli formdaki 3'lü random resim için kod

    rsm_1 = CInt(Int((GKayitSayisi * Rnd()) + 1))
   rsm_2 = CInt(Int((GKayitSayisi * Rnd()) + 1))

       If rsm_2 = rsm_1 Then
           Do Until rsm_1 <> rsm_2
               rsm_2 = CInt(Int((GKayitSayisi * Rnd()) + 1))
           Loop
       End If

   rsm_3 = CInt(Int((6 * Rnd()) + 1))

       If rsm_3 = rsm_1 Or rsm_3 = rsm_2 Then
           Do Until rsm_3 <> rsm_2 And rsm_3 <> rsm_1
               rsm_3 = CInt(Int((GKayitSayisi * Rnd()) + 1))
           Loop
       End If


Bunu 4' resimde kullanmak için kodun aşağıdaki gibi olması gerekli,

Sub SayiUret()

On Error GoTo Hata

rsm_1 = CInt(Int((GKayitSayisi * Rnd()) + 1))
rsm_2 = CInt(Int((GKayitSayisi * Rnd()) + 1))

   If rsm_2 = rsm_1 Then

       Do Until rsm_1 <> rsm_2

           rsm_2 = CInt(Int((GKayitSayisi * Rnd()) + 1))

       Loop

   End If

rsm_3 = CInt(Int((GKayitSayisi * Rnd()) + 1))

   If rsm_3 = rsm_1 Or rsm_3 = rsm_2 Then

       Do Until rsm_3 <> rsm_2 And rsm_3 <> rsm_1

           rsm_3 = CInt(Int((GKayitSayisi * Rnd()) + 1))

       Loop

   End If

rsm_4 = CInt(Int((GKayitSayisi * Rnd()) + 1))

   If rsm_4 = rsm_1 Or rsm_4 = rsm_2 Or rsm_4 = rsm_3 Then

       Do Until rsm_4 <> rsm_1 And rsm_4 <> rsm_2 And rsm_4 <> rsm_3

           rsm_4 = CInt(Int((GKayitSayisi * Rnd()) + 1))

       Loop

End If


Hata:
If Err.Number <> 0 Then
MsgBox (Err.Number)
Exit Sub
End If
End Sub

Siz mi değiştirdiniz, ben mi yanlış kod ekledim bilmiyorum ama frm_sor isimli formdaki


rsm_3 = CInt(Int((6 * Rnd()) + 1))


kodunun 


rsm_3 = CInt(Int((GKayitSayisi * Rnd()) + 1))


şeklinde olması gerekli, kodda 6 yazarsa ilk 6 sayı arasında rastgele sayı üretir.


Ayrıca, random resimlerin aynı olmaması için aynı resmi iki kere eklememeniz gerekli. 7. ve 9. kayıtta köpek ile ilgili veri girişi yapılmış.

Üstteki kodları inceleyin, ne eklenmiş, neden eklenmiş çözmeye çalışın.
14/04/2017, 14:54

mehami

Değerli Ozan Hocam ve Forum Üyeleri;
İlginize çok tşk ederim.Ozan hocam vermiş olduğunuz kodları uygulamadakiler ile değiştirdim,nerede nasıl bir hata yapıyorum bulamadım hata resimlerde gözüktüğü gibidir.

Hata 1 :


Hata 2:


Katagori seçip ilgili form açılıyor-istenilen resimler random olarak ekrana geliyor YENİLE butonu ile resimler random olarak yenileniyor,sanırım  en sona gelince  hata mesajı veriyor.

Bu hataları gidermek için kodda nasıl bir düzenleme yapmalıyım?
Öneri ve yardımlarınızı bekliyor saygılar sunuyorum.
14/04/2017, 23:05

ozanakkaya

Sorunuzun yine konu başlığı ile alakası yok. Olmayan resmi resim denetimine eklemeye çalışırsanız bu hatayı alırsınız.

Ucundan başlayıp uygulamayı yine bize yaptırıyorsunuz.

Runtime error 2220 konu başlığı ile yeni konu açınız.
14/04/2017, 23:15

mehami

Değerli Ozan Hocam;
Uygulamada takıldığım yerleri siteye sorarak uygulamada ilerlemeye çalışıyorum.Vermiş olduğunuz kodları uygulamama uyarladım ve bir önceki mesajımda da belirttiğim hataları alınca yeniden sormak zorunda kaldım.

Şimdi de "Olmayan resimleri resim denetimine eklemeye çalışıyorsunuz" cümleniz için tam olarak ne demek istediğinizi anlayamadım doğrusu.

Neyse bu konu burada çözüldü olarak işlem görsün,Runtime error 2220 ile ilgili yeni konu açıyorum.

Yardımlarınız için Allah razı olsun.
15/04/2017, 09:25

ozanakkaya

(14/04/2017, 23:15)mehami yazdı: Olmayan resimleri resim denetimine eklemeye çalışıyorsunuz

Uygulamanızda

Controls("Resim" & GSayi1).Picture = CurrentProject.Path & "\resimler\" & Dlookup ("resim", "tbl_resim", "[resim_sno]=" & "rsm_" & GSayi1)

Şeklinde kod bulunmakta. 
CurrentProject.Path & "\resimler\" & Dlookup ("resim", "tbl_resim", "[resim_sno]=" & "rsm_" & GSayi1)

Kodu resim içermiyorsa resim yükleyemediği için hata veriyor.
Açtığınız https://accesstr.net/konu-access-runtime...lmali.html bağlantısındaki konuya bu sorun ile ilgili çözüm içeren cevap yazılmıştır.
Konu taşınmıştır.