Personel Devam Takip Mantığı Nasıl?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
mehmetcan
Üye
Mesajlar: 63
Kayıt: 14 Tem 2008 05:19

Re: Personel Devam Takip Mantığı Nasıl?

Mesaj gönderen mehmetcan »

Bu kayıtların seçilmesi işlemi için listview kullanman bence daha mantıklı, pencere açılırken dataları süzüp, listview da listelersin. Listview daki checked özelligini kullanarak, seçilmiş personelin sicilno su seçilmişse bir stringe atarsın, daha sonra sql ile veritabaninda gerekli degisikligi yaparsın.

Listview in avantajı, görsel olarak seçimin checkbox ları işaretleyerek olmasından dolayı hata yapma riski azalır.

Doldurma procedure şu şekilde olur;

Kod: Tümünü seç

      alst.items.clear; 
      qrSorgu3.sql.text:=s;  // personel dosyasindan sicilno ve adlari getirmek için gerekli sql
      qrSorgu3.Active:=True;
      while not qrSorgu3.EOF do
      begin
        with alst.Items.Add do
        begin
          Caption:=qrSorgu3.Fields[0].AsString;  //  sicilno olabilir
          Subitems.Add(qrSorgu3.Fields[1].Asstring); // adı soyadı
        end;
        qrSorgu3.Next;
      end;
      qrSorgu3.Active:=false;
 
Listview da viewstyle = vsreport ve Checkboxes true olmalı ve Columns özelliginden istedigin kolon sayısını, genişligini, adını ayarlayabilirsin.

Daha sonra şu sql i çalıştırman yeterli olacaktır.

'update personel set vardiya = ' +strToint(Edit1.Text) where sicilno in ( '+secililiste+ '); ';

Secili listeyi de aşagıdaki procedurele doldurabilirsin.

Kod: Tümünü seç

    with alst do
      if Items.Count > 0  then
      begin
        secililiste:='';
        for i:= 0 to items.Count - 1 do
          if items[i].Checked then
          begin
            if secililiste <>''  then secililiste:=secililiste+',';
            secililiste:=secililiste+' '''+items[i].Caption+''' ';  // siciilno rakam ise fazlalık tırnaklara gerek yok
          end; 
      end;
Cevapla