Tüm Platformlar için Hızlı Uygulama Geliştirme Kitabı... Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Toplam işleminde not found hatası
#1
Selamlar;

Aylık raporlama için, personelin çalışma saat toplamını için Count yöntemini kullanmak istiyorum, anlayamadığım bir hata ile karşılaştım, databasede var olan bir alana not found hatası veriyor acaba bunun nedeni ne olabilir?

Açıklama: Personelin listesini listview'e listeliyorum, her personelin kendi numarası var. Günlük olarak her personelin kaç saat çalıştığını ayrı db'de tutuyorum daha sonra da ay sonunda
hangi personel ne kadar çalıştıysa toplamını listview'e update yöntemiyle entegre edilecek, yukarıda belirtiğim gibi var olan bir alana not found hatası almamın sebebi ne olabilir?


    if Items.Count > 0 then
    begin
      TSaat := 0;
      Timesaniye := 0;
      Items.BeginUpdate;
      try
        for I := 0 to Items.Count - 1 do
        begin
          Connection := PLConnection;
          Close;
          SQL.Clear;
          SQL.Add('Select Count(*) As SURE From PERSONELSAAT Where PERNO=: PRN'); ///////
          ParamByName('PRN').AsString := Items[I].Subitems[1];
          Prepared := True;
          Open;
          if (Pos(FieldByName('PERNO').AsString, Items[I].Subitems[1]) > 0) then //listviewdeki personel numarası ve dbdeki numra eşitse listview'e updata yap
          begin
            Dbtime := FieldByName('SURE').Value;
            Timesaniye := SecondsBetween(0, Dbtime);
            Items[I].SubItems[5] := ToplamSaat(Timesaniye);
          end;
        end;
      finally
        Items.EndUpdate;
      end;
Hayat bazen güzel olabiliyor.
Cevapla
#2
Select yaparken sadece  Count(*) As SURE yani tek sütun getiriyorsun, ama okurken PERNO alanı arıyorsun,


 SQL.Add('Select Count(*) As SURE,PERNO  From PERSONELSAAT Where PERNO=: PRN'); ///////

böyle dener misin
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#3
Çalışılanlerın toplam saat süresini Sum ile hesaplamak istediğimde değer hep sıfır "0" olarak dönüyor, acaba sum ile saat toplamı yapılamıyor mu, sum ile ilgili saat toplamı ile ilgili kaynak da bulamadım.

  
        Close;
          SQL.Clear;
          SQL.Add('Select Sum(SURE) AS TIMETOTAL From PERSONELSAAT Where PERNO=: PRN');
          ParamByName('PRN').AsString :=Items[I].Subitems[1];
          Prepared := True;
          Open;
          First;
          if Not EOF then
          begin
            Items[I].SubItems[5] := FieldByName('TIMETOTAL').AsString;
             Next;
          end;
Hayat bazen güzel olabiliyor.
Cevapla
#4
(13-02-2017, Saat: 18:55)Dostk Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlÇalışılanlerın toplam saat süresini Sum ile hesaplamak istediğimde değer hep sıfır "0" olarak dönüyor, acaba sum ile saat toplamı yapılamıyor mu, sum ile ilgili saat toplamı ile ilgili kaynak da bulamadım.

  
        Close;
          SQL.Clear;
          SQL.Add('Select Sum(SURE) AS TIMETOTAL From PERSONELSAAT Where PERNO=: PRN');
          ParamByName('PRN').AsString :=Items[I].Subitems[1];
          Prepared := True;
          Open;
          First;
          if Not EOF then
          begin
            Items[I].SubItems[5] := FieldByName('TIMETOTAL').AsString;
             Next;
          end;

Merhaba,
Test etmedim, sanırım DateDiff fonksiyonu ile yapılabilir.
Select Sum(datediff (hour,TIME, SURE)) AS TOPLAM_SAAT  From PERSONELSAAT Where PERNO=: PRN
Yukarıdaki yöntem olmaz ise; 
Fonksiyon kısmını şöyle değiştirin.
datediff (hour,TIME, Select sure from PERSONELSAAT Where PERNO=: PRN)
WWW
Cevapla
#5
Teşekkür ederim, olmadı sanırım databasede saat işlemi yapılamıyor, bir çok araştırma yaptım doğru düzgün kaynak bulamadım...
Hayat bazen güzel olabiliyor.
Cevapla
#6
Merhaba,
Database ile saat işlemi yapılamasa bu kadar personel takip programı sizce kendiliğindenmi oluştu? Şöyle düşünün olayı, siz SUM(SURE) demişsiniz, 2 farklı saati toplamanın size ne faydası olur? (yada toplamak mantıklımıdır?) saat 03:00 ile saat 05:00 i toplarsanız sonuç saat 08:00 mi olur ? Bu şekilde düşünmek yerine şöyle düşünmelisiniz, Personel saat kaçta mesaiye başladı, saat kaçta mesaiden çıktı, arada kaç saat fark var, kaç saat çalıştı ? sonra çalıştığı saatleri toplayıp toplam mesai süresini hesaplayabilirsiniz. Bunlara dayanarak Fesih bey'in yazdıpı datediff fonksiyonu işinizi fazlası ile görecektir. Bu fonksiyon ile 2 tarih arasındaki farkı, yıl, ay,gün,saat,dakika,saniye, salise cinsinden hesaplayabilirsiniz. Örnek için ; Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Şimdi baktım yazdığım bir stored proc. ta şöyle bir kod yazmışım örnek için sizede yazıyorum.

GECENSURE = datediff(minute, :cikissaati, :donussaati); // dakika cinsinden personelin giriş ve çıkış saatleri arasındaki farkı alıyoruz.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#7
Yazdığınızı tekrar okudum, nladığım kadarı ile SURE sizdeki saat farkı zaten, fakat bunu data da ne olarak tutuyorsunuz? integer alan olarak tutarsanız SUM() işlemi çalışır, eğer TIME olarak tutuyorsanız çalışırmı bilmiyorum ki çalışmasınında bi anlamı olmaz.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#8
Selam, benzer bir durum bende yaşamıştım, size tavsiyem çalışma saatlerini 01:00:00 değilde 3600 olarak db'ye kaydedin ve bunu göstereceğiniz zaman ise 3600'ü inttotimeconvert yaparak göstere bilirsiniz emin olun sorun yaşamayacaksınız.

Not kodlama kısmında sorun yaşarsanız bu konuda da yardımcı olurum size iyi çalışmalar...
Cevapla
#9
(14-02-2017, Saat: 20:16)brs Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlSelam, benzer bir durum bende yaşamıştım, size tavsiyem çalışma saatlerini 01:00:00 değilde 3600 olarak db'ye kaydedin ve bunu göstereceğiniz zaman ise 3600'ü inttotimeconvert yaparak göstere bilirsiniz emin olun sorun yaşamayacaksınız.

Not kodlama kısmında sorun yaşarsanız bu konuda da yardımcı olurum size iyi çalışmalar...


Haklısınız dediğiniz gibi deneyeceğim...
Hayat bazen güzel olabiliyor.
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Sunucu hatasi donma arsl01 17 250 16-10-2018, Saat: 17:02
Son Yorum: arsl01
  XPrinter -printer is not currently printing hatası Bay_Y 4 112 04-10-2018, Saat: 16:53
Son Yorum: Bay_Y
Exclamation Socket Error # 11001 Host Not Found Abdullah ILGAZ 3 133 17-09-2018, Saat: 13:05
Son Yorum: SimaWB
  webden json okuma hatası arsl01 3 211 25-06-2018, Saat: 15:17
Son Yorum: arsl01
  webbrowser nesnesi sayfa bulunamadı hatası klavye 2 334 01-06-2018, Saat: 16:55
Son Yorum: klavye



Konuyu Okuyanlar: 1 Ziyaretçi