Listede Döngüyü nasıl kurabilirim...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Listede Döngüyü nasıl kurabilirim...

Mesaj gönderen Biltes »

arkadaşlar işlerinizde öncelikle kolay gelsin,

Sorunum şu bir tane gruplandırma yaptığım vardiya çalışanlarım var. Tabloda şu şekilde kayıtlar var,
Grup çalışanlar
----- ---------------
1 Deneme1-Deneme2
2 Deneme3-Deneme4
3 Deneme5-Deneme6

die devam eden çalışan grupları var amacım sırayla bu kişileri oluşturulan grup sayısı kadar sonra sırayla vardiyaya sokmak.
Yani sonucun şu olmaı gerekiyor
1. gün deneme1-deneme2
2. gün deneme3-deneme4
3. gün deneme5-deneme6
4. gün deneme1-deneme2
5. gün deneme3-deneme4

gibi devam etmsi gerekiyor ama bir türlü bunu başaramadım belki gülceksiniz ama inanın kafam artık durma noktasına geldi o yüzden sizlerin yardımını bekliyorum arkadaşlar.

şimiden herkese çok tşk ederim...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Re: Listede Döngüyü nasıl kurabilirim...

Mesaj gönderen Biltes »

arkadaşlar halen daha cevabını bulamadım sorumun ama eğer bir gelişme kaydedersem bire bir kodu buraya vericem en azından yarın öbür gün aynı konuda araştırma yapan dostlarımız faydalanabilsin. Sanırım bu konu daha önce sitede geçmemiş :(
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Listede Döngüyü nasıl kurabilirim...

Mesaj gönderen Battosai »

Burda deneme yerine grup1 gibi bir ifade kullansan daha iyi olurdu neyse... zor olan nedir pek anlamadım, iç içe bir döngü ile yapabilirsin istediğini gün sayısı kadar for döngüsü onun içine de tablondaki grup sayısı kadar da while eof döngüsü yerleştirdinmiydi oldu da bitti maşallah yani... :) ayrıca sıraya SQL ile mi sokmaya çalışıyon yoksa bir listbox'a veya stringgrid'e manuel yerleştirmeyi istiyorsun bu detaylarıda belirtmen lazımdı...
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Re: Listede Döngüyü nasıl kurabilirim...

Mesaj gönderen Biltes »

hocam for döngüsünde istediğim gün sayısı kadar vardiya günü oluşturabildim ama oluşturduğum gün saysına sırayla 3 yada daha fazla oluşturulan gruptan sırayla kayıtları oluşturduğum günlere aktarmak istiyorum. Yani vt'deki tabloma kayıt ettirmeye çalışıyorum. Münkünse bu olaya ufak bir örnek verebilirmisin kod olarak hocam. İlginize çok tşk ederim.
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
mehmetcan
Üye
Mesajlar: 63
Kayıt: 14 Tem 2008 05:19

Re: Listede Döngüyü nasıl kurabilirim...

Mesaj gönderen mehmetcan »

Açagıdaki genel kod işini görür.

Grup grup tablon, vardiyaekle ise gruptaki kaydı vardiya olarak ekler.
Gun e 100 verdim, sen istedigini verirsin. Buradaki tek püf noktası next ten sonra tablo sonuysa first yapıp, tekrar grup başına dönmek.

Kod: Tümünü seç

grup.first;
for gun:=1 to 100 do
begin
  vardiyaEkle;
  grup.Next;
  if grup.EOF then grup.First;
end;

Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Re: Listede Döngüyü nasıl kurabilirim...

Mesaj gönderen Biltes »

Evet hocam aynen dediğiniz gibi kod tam olarak işimi gördü allah razı olsun yhaa şimdi dönüp takıldığım konuya bakınca kendime kendime gülüyorum :lol: bumuydu takıldığım konu die.
Gerçekten çok saolun allah razı olsun...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
NeverFear
Üye
Mesajlar: 69
Kayıt: 20 Tem 2004 09:41
Konum: İzmir

Re: Listede Döngüyü nasıl kurabilirim...

Mesaj gönderen NeverFear »

mehmetcan hocamın verdiği kodlara ek olarak, aşağıdaki döngüyü de herzaman kullanabilirsin. işine yarayacaktır ve kendi programlama tekniğe göre geliştirebilirsin.

Kod: Tümünü seç

     if Table2.RecordCount <> Table1.RecordCount then
     begin
        if MessageDlg('Dijital Arşiv Dosyası''nda değişiklik var ...!'+#10+'Güncelleştirmek ister misiniz ?'+#10+#10+
           'Bu işlem 15-30 dakika sürebilir ..'+#10+#10+'Tüm kullanıcıları programdan çıkarınız ve ''&Evet'' düğmesini tıklatınız ..',
           mtInformation, [mbYes, mbNo], 0) = mrYes then
        begin
           Table1.First;
           DBGrid1.Fields[3].EditMask:= '!##\/##\/####;0; ';
           Table1.IndexFieldNames:= 'SiraNo';
           repeat
              if Table2.FindKey([DBGrid1.Fields[0].Value]) then
              begin
                 Table2.Edit;
                 DBGrid2.Refresh;
              end
              else Table2.Append;
              DBGrid1.Fields[3].EditMask:= '!##\/##\/####;0; ';
              with Table2 do
              begin
                 FieldByName('SiraNo').AsInteger:= DBGrid1.Fields[0].Value;
                 FieldByName('MusAd').AsString:= DBGrid1.Fields[1].Value;
                 FieldByName('MusSoyad').AsString:= DBGrid1.Fields[2].Value;
                 FieldByName('Tarih').AsString:= DBGrid1.Fields[3].Value;
                 Post;
              end;
              Table1.Next;
           until Table1.EOF;
        end;
        Table2.First;
     end;
konu ile alakalı değilmiş gibi gözükse de işini görecektir. repeat ... until döngüsüne bir örnek.
Cevapla