(19/05/2017, 03:26)ozanakkaya yazdı: Kodu aşağıdaki ile değiştir
Dim EnBuyukKimlik As Integer
EnBuyukKimlik = DMax("Kimlik", "Calisanlar")
Do Until Len(Vardiya_1_Adi) > 1 And Len(Vardiya_2_Adi) > 1 And Len(Bakim_1_isim) > 1 And Len(isci_isim_1) > 1 And Len(isci_isim_2) > 1 And Len(yaz_isim) > 1 And Len(ciz_isim) > 1
Do Until Len(Vardiya_1_Adi) > 1
GRandom1 = Int((EnBuyukKimlik - 1 + 1) * Rnd + 1)
Vardiya_1_Adi = Dlookup ("Calisan_Adi", "Calisanlar", "[Kimlik] = " & GRandom1 & " And [Teknik]= -1")
Loop
Do Until Len(Vardiya_2_Adi) > 1
Vardiya_2_Adi = Nz(DLookup("Calisan_Adi", "Calisanlar", "[Teknik]= -1 And ([Calisan_Adi] not in('" & Vardiya_1_Adi & "'))"), "1")
If Vardiya_2_Adi = "1" Then Exit Do
Loop
Do Until Len(Bakim_1_isim) > 1
Bakim_1_isim = Nz(DLookup("Calisan_Adi", "Calisanlar", "[Bakim] = -1 And ([Calisan_Adi] not in('" & Vardiya_1_Adi & "','" & Vardiya_2_Adi & "'))"), "1")
If Bakim_1_isim = "1" Then Exit Do
Loop
Do Until Len(isci_isim_1) > 1
isci_isim_1 = Nz(DLookup("Calisan_Adi", "Calisanlar", "[isci] = -1 And ([Calisan_Adi] not in('" & Vardiya_1_Adi & "','" & Vardiya_2_Adi & "', '" & Bakim_1_isim & "'))"), "1")
If isci_isim_1 = "1" Then Exit Do
Loop
Do Until Len(isci_isim_2) > 1
isci_isim_2 = Nz(DLookup("Calisan_Adi", "Calisanlar", "[isci] = -1 And ([Calisan_Adi] not in('" & Vardiya_1_Adi & "','" & Vardiya_2_Adi & "', '" & Bakim_1_isim & "', '" & isci_isim_1 & "'))"), "1")
If isci_isim_2 = "1" Then Exit Do
Loop
Do Until Len(yaz_isim) > 1
yaz_isim = Nz(DLookup("Calisan_Adi", "Calisanlar", "[yazici] = -1 And ([Calisan_Adi] not in('" & Vardiya_1_Adi & "','" & Vardiya_2_Adi & "', '" & Bakim_1_isim & "', '" & isci_isim_1 & "', '" & isci_isim_2 & "'))"), "1")
If yaz_isim = "1" Then Exit Do
Loop
Do Until Len(ciz_isim) > 1
ciz_isim = Nz(DLookup("Calisan_Adi", "Calisanlar", "[cizici] = -1 And ([Calisan_Adi] not in('" & Vardiya_1_Adi & "','" & Vardiya_2_Adi & "', '" & Bakim_1_isim & "', '" & isci_isim_1 & "', '" & isci_isim_2 & "', '" & yaz_isim & "'))"), "1")
If ciz_isim = "1" Then Exit Do
Loop
Loop
Hocam öncelikle süper bir iş çıkarmışsın çok teşekkür ederim.Yalnız ben bu örenk üzerinden çalıştırdım ama başka bir örnekte anca "nz" fonksiyonunu kullanmadan yapabildim.Diğer örneğimde 33 masa var.
Ama hallettim.
Çok teşekkür ederim.Eline sağlık.
Öğrenğim tamamlandığında boş halini siteye atacağım.Hem başkalarınada faydası olur çünkü hiçbir sitede buna benzer bir örnek veya açıklama yok.
tekrar çok teşekkür ederim.
Not: NZ değişkeni hakkında bilgi verebilirsen sevinirim.
Giren arkadaşların anlaması için kodun kelime anlamını yazıyorum.Eğer hatalı anladıysam düzeltirsen sevinirim.
Enbüyükkimlik tamsayıdır.
Enbüyükkimlik formülü = en büyük çalışanların en büyük kimliği ile başlar.
Vardiya_1 - vardiya_2 ..... tümü 1 den büyüktür.
vardiya_1 1 den büyük olabilmesi için
grandom1 tam sayısı enbüyükkimlik +1 eklenerek random bir rakam üretilmesi ile oluşur.
vardiya_1_adi kısmına calisan_adi nı calisanlar tablosundaki kimlik numaralarından grandom1 uygulayarak çıkan sonuçlardan teknik kısmı evet olanlardan birini getir.
........
diğerleride aynı..
sanırım dimi?