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
256

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

Çözüldü #1
60000 satırlık sözlükten rasgele bir ingilizce kelimeyi
B hücresine ve türkçe karşılığınıda yine rasgele C D E F hücrelerinden birine yazdırarak kalan 3 boş hücreye de yine rasgele türkçe kelime karşılıklarından 3 tanesinin eklenmesini sağlamak ve Bu şekilde ingilizce kelime bilgisi testi oluşturmak ve başka özelliklerle geliştirmek istiyorum. Normalde internette izlediğim Sözlük testi uygulaması adlı dersde bu işlemi manuel olarak yapmışlar fakat bu şekilde testin hazırlanması için çok uzun zaman harcamak gerekiyor. Yardımlarınız için teşekkür ederim.

[Resim: do.php?img=11049]

[Resim: do.php?img=11050]
.rar ING_TUR TEST.rar (Dosya Boyutu: 1,45 MB | İndirme Sayısı: 6)
Access Çekirgesi 
[Resim: img-cray.gif]


Cevapla
#2
her defasında sadece 1 İngilizce kelime mi seçilecek, test gibi bir şeyse seçilecek kelime sayısının daha fazla olması gerekmez mi
Cevapla
#3
aşağıdaki kodu dener misiniz?
eğer değer girmezseniz sadece bir kelime bulur, ama diyelim ki 20 soruluk bir test için :
rastgeleTestCol 20 yazmanız yeterli
Visual Basic Code
Sub rastgeleTestCol(Optional SoruSay As Long = 1)
Dim SonStr As Long
Dim Secim(0 To 3)

Set SozlukColl = New Collection
Set sht = ThisWorkbook.Sheets("VeriTabanı")
SonStr = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
'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 = Sayfa2.Cells(Sayfa2.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
        Sayfa2.Cells(SonStr, 1) = Soru
    For x = 0 To 3
        Sayfa2.Cells(SonStr, x + 3) = sht.Range("B" & SozlukColl(Secim(x))) 'Şıklar
    Next x
        Sayfa2.Cells(SonStr, 2) = sht.Range("A" & SozlukColl(Secim(Dogru))) 'Esas kelime
Next Soru

End Sub
Cevapla
#4
@berduş Hocam aslında kafamda  60000 satırdaki  her ingilizce ve türkçe kelime karşıklıkları için bir soruyu bir defa da hazırlayıp bir daha uğraşmamak vardı ama aklıma başka şeylerde geldi daha sonra ve fikrimi değiştirdim. Bu soruları sizin de belirttiğiniz gibi sorulacak soru adedini kullanıcdan input box ile alsak ve o adede göre soruyu veritabanından rasgele hazırlatsak daha pratik ve çok daha hızlı olacak. Ben aklıma gelen diğer ayrıntıyıda paylaşayım. Eğer mümkün olursa tasarımı o şekilde yapalım. Şöyle ki
VeriTabanı sayfasınıda ben 4-5 sayfaya bölerek kriterlere ayırsam sayfalara da

İş
Tatil
Günlük yaşam
Hayvanlar _ Renkler
Deyimler

vs. gibi isimler verip kullanıcıya bir seçim ekranından sanırım combobax dan seçtirmek en uygunu olur. Önce hangi kriterde ( yani hangi sayfadaki verilerden soru listesinin oluşturulacağını ) soru istediğinin cevabını diyelim ki comboboxdan aldıktan sonra input box ile de hazırlanmasını istediği testin kaç soruluk oluşturulacağının bilgisi alınarak toplamda 2 farklı duruma göre test hazırlanması çok daha güzel olur diye düşünüyorum. Ben kodlarınızı denedikten sonra bir userform düzenleyip onun üzerinden kullanıcının işlemleri seçmesi için arayüz hazırlayıp dönüş yaparım teşekkür ederim.
Access Çekirgesi 
[Resim: img-cray.gif]


Son Düzenleme: 22/05/2021, 08:39, Düzenleyen: Oğuz Türkyılmaz.
Cevapla
#5
@berduş hocam arayüzü hazırladım. Çalışma şekli olarak kullanıcı önce soru kriterini seçecek (Şu an sadece DATABASE sayfasında veri var) seçtiği kriterin sayfa sekmesindeki sorulardan istediği kadar adedi seçecek. Eğer butonlardan

Soru_Cevap ENG_TUR olanı tıkladıysa  rasgele seçilerek hazırlanan sorular bu addaki sayfada 1 ingilizce kelime karşılığında 4 ü yanlış 1 tanesi doğru seçenekten oluşan 5 türkçe karşılıktan oluşacak

Soru_Cevap TUR_ENG olanı tıkladıysa  rasgele seçilerek hazırlanan sorular bu addaki sayfada 1 türkçe kelime karşılığında 4 ü yanlış 1 tanesi doğru seçenekten oluşan 5 ingilizce karşılıktan oluşacak şekilde ilgili sayfadaki hücrelere aktarılacak.

Ben daha sonra bu doğru yanlış cevaplar  karşılığında puan verme kelimenin sesli telaffuzu gibi ayrıntıları ekleyeceğim.(Bu kısımları nasıl yapacağımı öğrendim ama asıl iş programın bu bölümünü doğru tasarlamak )

Umarım tam anlamıyla anlatabilmişimdir. Son Olarak sormak istediğim bir şey var bu MENU sayfasında yaptığım arayüzü USERFORM üzerinde yapsam Excel ilk açıldığında direk o userform açılabilir mi. Yani Accessdeki gibi açılış formu olarak bu user form tanımlanabilirmi.

[Resim: do.php?img=11052]
.rar ING_TUR TEST.rar (Dosya Boyutu: 1,47 MB | İndirme Sayısı: 4)
Access Çekirgesi 
[Resim: img-cray.gif]


Son Düzenleme: 22/05/2021, 11:56, Düzenleyen: Oğuz Türkyılmaz.
Cevapla
#6
Yalniz bunları zaten siz de yapabilirsiniz fonksiyon belli, gerisi parametre değeri olarak sayfa adını veya belirleyeceğiniz diğer parametreleri fonksiyona tanıtmak ve bu parametrelerle fonksiyonu çağırmak
Userform açılma meselesine gelince form açmayı zaten biliyorsunuz bunu workbook open
benzeri bir yordama ekleyeceksiniz.
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da