Skip to main content

AccessTr.neT


Veritabanından Kelime Karşılıklarından 1 Doğru 3 Yanlış Cevabı Rasgele Seçmek

Oğuz Türkyılmaz
Oğuz Türkyılmaz
13
1365

Veritabanından Kelime Karşılıklarından 1 Doğru 3 Yanlış Cevabı Rasgele Seçmek

#7
aşağıdaki kodları modüle ekler misiniz?
dikdörtgenin kodu
Sub DikdörtgenKöşeleriYuvarlatılmış1_Tıkla()
rastgeleTestCol
End Sub
ana fonksiyon kodu
Sub rastgeleTestCol()
't1 = Now
Dim SonStr As Long
Dim Secim(0 To 3)

Set Sht = ThisWorkbook.Sheets(Sayfa4.ComboBox1.Value)
SonStr = Sht.Cells(Sht.Rows.Count, "A").End(xlUp).Row
If SonStr < 2 Then Exit Sub
HdfSyf = IIf(Sayfa4.OptionButton1 = True, Sayfa4.OptionButton1.Caption, Sayfa4.OptionButton2.Caption)
Hdf = IIf(Sayfa4.OptionButton1 = True, True, False)
Set HdfSht = ThisWorkbook.Sheets(HdfSyf)
HdfSht.Cells.Clear
SoruSay = Int(Sayfa4.ComboBox2)

Set SozlukColl = New Collection
'hy____________________________Sözcükler için satır seçme
For x = 2 To SonStr
SozlukColl.Add x 'Collectiona değer atama
Next x
AltSnr = 1
For Soru = 1 To SoruSay '
UstSnr = SozlukColl.Count
SonStr = HdfSht.Cells(HdfSht.Rows.Count, "A").End(xlUp).Row + 1
For x = 0 To 3 'Rasgele 4 kelime için satır seçme
UstSnr = SozlukColl.Count
Randomize
KelimSira = Int((UstSnr - AltSnr + 1) * Rnd + AltSnr)
Secim(x) = KelimSira
SozlukColl.Remove (KelimSira) 'seçilen satırı silme
Next x
Randomize
Dogru = Int((3 - 0 + 1) * Rnd + 0) 'Esas kelimeyi seçme
HdfSht.Cells(SonStr, 1) = Soru
For x = 0 To 3
HdfSht.Cells(SonStr, x + 3) = Sht.Cells(SozlukColl(Secim(x)), -1 - Hdf + 2) 'Şıklar
Next x
HdfSht.Cells(SonStr, 2) = Sht.Cells(SozlukColl(Secim(Dogru)), Hdf + 2) 'Esas kelime
Next Soru
'Debug.Print Sht.Name, HdfSht.Name, SoruSay
't2 = Now
'Debug.Print t1, t2, DateDiff("s", t1, t2)
End Sub

hata kontrolleri eklenmedi mesela olmayan sayfayı seçerseniz hata verir yada combolar boş ise...
Cevapla
#8
bu kadar sayfaya gerek var mı? daha kafamda tam oturtamadım ama 2 sayfa yetmez mi?
1 tane kelime sayfası bir tane de test sayfası olsa verileri filtreleyerek alsak olmaz mı?
Cevapla
#9
(22/05/2021, 15:29)berduş yazdı: bu kadar sayfaya gerek var mı? daha kafamda tam oturtamadım ama 2 sayfa yetmez mi?
1 tane kelime sayfası bir tane de test sayfası olsa verileri filtreleyerek alsak olmaz mı?

@berduş hocam database sayfasında 60.000 satırlık sözlükteki her kelimenin hangi kritere uyduğunu belirlemek gerekiyor. Ayrı ayrı sayfalarda yaptım çünkü deyimler, fiiller günlük yaşamdan cümle örnekleri bunlar farklı bunları ben tek tek ilgili sayfaya gireceğim. Bu şekilde daha kolay olur database sayfası zaten 60000 satır daha da şişirmeyelim diye düşündüm. ( Sayfalardan birine eklenecek bir kelime eğer DATABASE sayfasında da varsa o kelimeyi DATABASE sayfasından ayrıca sileceğim.)
Access Çekirgesi 
[Resim: img-cray.gif]


Cevapla
#10
@berduş hocam makroyu modülden çalıştırdığımda rastgeleTestCol bulunamadı hatası aldım. Anlam veremedim ama bende bu bölümü iptal edip direk resimdeki gibi çalıştırdım. KOD gayet hızlı 100 soruyu hazırladı.

Kod:
'Sub DikdörtgenKöşeleriYuvarlatılmış1_Tıkla()
'rastgeleTestCol
'End Sub

[Resim: do.php?img=11057]
.zip ING_TUR TEST.zip (Dosya Boyutu: 1,53 MB | İndirme Sayısı: 9)
Access Çekirgesi 
[Resim: img-cray.gif]


Son Düzenleme: 22/05/2021, 19:36, Düzenleyen: Oğuz Türkyılmaz.
Cevapla
#11
kodu modüle ekleyip butona yeniden makroyu atar mısınız?
Cevapla
#12
(22/05/2021, 21:09)berduş yazdı: kodu modüle ekleyip butona yeniden makroyu atar mısınız?

Hata veriyor neyi yanlış yapıyorum anlamadım.

[Resim: do.php?img=11058]
Access Çekirgesi 
[Resim: img-cray.gif]


Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task