[SORGU] Gruplama Işlemi
#1
Merhaba arkadaşlar, 

bir konuda yardım isteyecektim.

Örneğin;
*10 kişilik bir öğrenci gurubu, 7 adet sınıf , sınıfların belirli kontenjanları,  her öğrencinin puanı ve bu sınıflara yerleşmek için tercihi var. 
*Puan sıralaması yapılan öğrenciler tercihine göre sınıflara yerleştirilecektir.
*Öğrenciler sınıf kontenjan bazında en yüksek puan alan öğrenciden başlanarak tercihi olan sınıflara dağıtılacak,  birinci tercihi dolu olan sınıfın dolması halinde ikinci tercihine oda doluysa 3 üncü tercihine ... bu şekilde devam edecek.
*Örneğin herhangi bir öğrencinin tercih ettiği bütün sınıflar doldu ise o öğrenci açıkta kalacak.

Not: öğrenci sayısı, sınıf sayısı, sınıf kontenjanı değişebilir. Yapacakları tercih ise en az bir en fazla sınıf sayısı kadar olabilir.

2 adet tablo oluşturdum. tercih ve siniflar diye. Öğrenci dağıtma sonuçlarını tercih sayfasında sonuc sütünü olarak ayarladım.

örnek access dosyası: https://yadi.sk/d/LCQVsrSje7H09g

ekran görüntülerini de eklenti olarak ekledim. 
teşekkürler ,,,


Eklenti Dosyaları
.png   tercih.PNG (Boyut: 24,87 KB / İndirilme: 72)
.png   sinif.PNG (Boyut: 8,33 KB / İndirilme: 62)



  Alıntı
Bu mesajı beğenenler:
#2
tercih tablosunun yapısını değiştirip alanları sınıf1, sınıf2, sınıf3... yerine tercih1,tercih2, tercih3.... değiştirilse yada
tercihler tamamen farklı 3. bir tabloda yapılsa daha kullanışlı olmaz mı?



  Alıntı
Bu mesajı beğenenler:
#3
forma ekleyeceğiniz bir butonun olayına ekleyerek deneyebilirsiniz
sadece tercihler tablosunun sonuç alanı boş olan kayıtlarda yerleştirme yapıyor
dilerim işinize yarar
Visual Basic
  1. Dim TercihSira() As String
  2. Dim SiraRS As New ADODB.Recordset
  3. Dim SiraSql As String
  4. Dim i, x, xArr As Integer
  5.  
  6. 'REDIM PRESERVE TercihSira(i) As String  'REDIM PRESERVE... eski değerleri koruyarak dizinin boyutunu değiştirir
  7. 'REDIM  TercihSira(i) As String          'REDIM ... eski değerleri silerek  dizinin boyutunu değiştirir
  8.  
  9. SiraSql = "select * from tercih order by [puan] desc" ' öğrencileri puana göre sırala
  10. SiraRS.Open "tercih", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  11. If SiraRS.RecordCount < 1 Then Exit Sub 'tablo boşsa çık
  12. SiraRS.MoveFirst
  13. Do While Not SiraRS.EOF
  14. i=0
  15. For x = 0 To SiraRS.Fields.Count - 1 '
  16.    If SiraRS.Fields(x).Name Like "sinif*" And (Not IsNull(SiraRS.Fields(x))) Then i = i + 1
  17. Next x
  18. ReDim TercihSira(i)
  19.  
  20. For x = 0 To SiraRS.Fields.Count - 1 '
  21.     If SiraRS.Fields(x).Name Like "sinif*" And (Not IsNull(SiraRS.Fields(x))) Then
  22.        TercihSira(SiraRS.Fields(x)) = SiraRS.Fields(x).Name
  23.    End If
  24. Next x
  25.  
  26. For xArr = 1 To i
  27. If SiraRS.Fields(2) <> "" Then Exit For
  28. If DCount("*", "tercih", "sonuc='" & TercihSira(xArr) & "'") >= DLookup("kontenjan", "sinif", "sinif='" & TercihSira(xArr) & "'") Then GoTo 10
  29. CurrentDb.Execute "update tercih set sonuc='" & TercihSira(xArr) & "' where AdayTC=" & SiraRS.Fields(0)
  30. 10
  31. Next xArr
  32.  
  33. SiraRS.MoveNext
  34. Loop
  35.  
  36. SiraRS.Close: Set SiraRS = Nothing





  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Veri Aktarma Işlemi halil.tefci 4 169 28-11-2023, 07:56
Son Mesaj: halil.tefci
  [SORGU] Sorgu icinde gruplama MuazTurkyilmaz 6 2.386 23-11-2023, 00:53
Son Mesaj: dsezgin
  Listede çıkarma Işlemi m_demir 6 185 14-09-2023, 18:42
Son Mesaj: m_demir
  [VBA] Kayıt Iptali: Kayıt Iptal Tablosuna Ekle, Kayıdı Sil Işlemi programmer67 6 311 21-07-2023, 10:40
Son Mesaj: onur_can
  Sorgu Işlemi Sonunda Veri Yoksa Bulunduğu Hücreye 0 Olarak Otomatik Değer Verme ofbayoglu61 12 406 21-07-2023, 10:09
Son Mesaj: onur_can
  Kısayol atama işlemi nasıl yapılır? algoritma 24 14.868 21-06-2023, 09:14
Son Mesaj: ates2014
  [VBA] Alan Kontrollü Kaydetme Işlemi Ahmet51 2 208 25-05-2023, 14:07
Son Mesaj: Ahmet51
  Rapor çıktısındaki Sonuçları Gruplama Hakkında OGUZTURKYILMAZ 4 244 04-04-2023, 11:20
Son Mesaj: OGUZTURKYILMAZ

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi