delphi4arab منتديات دلفي للعرب
كيف احسب الفارق الزمني بمشروع متابعة توقيع العمال - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف احسب الفارق الزمني بمشروع متابعة توقيع العمال (/showthread.php?tid=3932)



كيف احسب الفارق الزمني بمشروع متابعة توقيع العمال - adel78 - 28-02-2012

السلام عليكم
لدي مشروع متابعة توقيع العمال
tpointage(id_point,id_empl,id_motif,diftime,entree_sortie,heur_point_entr,heur_point_sort,date_point,on)
employe(id_empl,nom_empl,pren_empl,dat_naiss,id_fonc,etat_empl,sex,on,life (

عندما اضغط على زر من الازرار و اختار عاملا ما ففي حالة دخوله الى العمل سيسجل date_entr و heur_entr و عندما يخرج من العمل سيسجل date_sort و heur_sort
فعند حساب الفارق الزمني لهدا العامل سيكون يحساب الفرق , لكن مشكلتي عندما يقوم بالدخول و الخروج لعدة مرات اي عند قيام العامل بالتوقيع عدة مرات في اليوم , فكيف احسب مجموع الفروق .


كيف احسب الفارق الزمني بمشروع متابعة توقيع العمال - kachwahed - 29-02-2012

وعليكم السلام ورحمة الله وبركاته
لا أخي لا تطرح سؤال في مثل هذه الحالات
بل أرفق في مشروع جديد به الإشكال الذي حصل
استخدم أحد قواعد بيانات أمثلة دلفي DBDemos
بالتوفيق.



كيف احسب الفارق الزمني بمشروع متابعة توقيع العمال - adel78 - 01-03-2012

لم افهم بعد


كيف احسب الفارق الزمني بمشروع متابعة توقيع العمال - kachwahed - 01-03-2012

إقتباس :عندما يقوم بالدخول و الخروج لعدة مرات
أولا: هل تصميمك لقاعدة البيانات يسمح لك بالحصول على هذه المعلومة؟
بعبارة أخرى: هل تسجل كل عملية دخول وخروج؟ وكيف أنشأت الجداول؟



كيف احسب الفارق الزمني بمشروع متابعة توقيع العمال - adel78 - 02-03-2012

عند الصغط مثلا علر زر button1 و الذي يمثل الدخول Entree
كود :
procedure Tfentreesortie.Button1Click(Sender: TObject); begin dmpointage.Query1.Active:=false; dmpointage.Query2.Active:=false; dmpointage.Query1.Active:=true; dmpointage.Query2.Active:=true; dmpointage.tpointage.Active:=false; dmpointage.tpointage.Active:=true; dmpointage.tamploye.Active:=false; dmpointage.tamploye.Active:=true; fpointage.DBLookupComboBox1.DataField:='Id_empl' ; fpointage.DBLookupComboBox1.DataSource:=dmpointage.dspointage; fpointage.DBLookupComboBox1.KeyField:='Id_empl'; fpointage.DBLookupComboBox1.ListField:='id_empl;Nom_empl;Pren_empl;id_fonction'; fpointage.DBLookupComboBox1.ListSource:=dmpointage.DataSource1 ; fpointage.Button5.Tag:=1; fpointage.DBLookupComboBox1.Tag:=1; fpointage.DBGrid1.Color:=clTeal; fentreesortie.Color:=clTeal; fpointage.Color:=clTeal; fpointage.Show; dmpointage.tpointage.Last ; end;
و تظهر الواجهة fpointage

عند الصغط مثلا علر زر button2 و الذي يمثل االخروج Sortie
كود :
dmpointage.Query1.Active:=false; dmpointage.Query2.Active:=false; dmpointage.Query1.Active:=true; dmpointage.Query2.Active:=true; dmpointage.tpointage.Active:=false; dmpointage.tpointage.Active:=true; dmpointage.tamploye.Active:=false; dmpointage.tamploye.Active:=true; fpointage.DBLookupComboBox1.DataField:='Id_empl' ; fpointage.DBLookupComboBox1.DataSource:=dmpointage.dspointage; fpointage.DBLookupComboBox1.KeyField:='Id_empl'; fpointage.DBLookupComboBox1.ListField:='id_empl;Nom_empl;Pren_empl;id_fonction'; fpointage.DBLookupComboBox1.ListSource:=dmpointage.DataSource2 ; fpointage.Button5.Tag:=2; fpointage.DBLookupComboBox1.Tag:=2; fpointage.DBGrid1.Color:=clFuchsia; fentreesortie.Color:=clFuchsia; fpointage.Color:=clFuchsia; fpointage.Show; dmpointage.tpointage.Last ; end;
و تظهر الواجهة fpointage أيضا

فعند الضغط علر الزر button1 من fpointage :
كود :
procedure Tfpointage.Button1Click(Sender: TObject); begin dmpointage.tpointage.Append ; DBLookupComboBox1.ReadOnly:=false; dmpointage.Query1.Active:=false; dmpointage.Query2.Active:=false; dmpointage.Query1.Active:=true; dmpointage.Query2.Active:=true; Button1.Enabled:=false ; dmpointage.tentree.Active:=false; dmpointage.tentree.Active:=true; end;
و للتأكيد و الإغلاق أقوم بالضغط على الزر button5
كود :
procedure Tfpointage.Button5Click(Sender: TObject); var i:Integer; begin TryStrToInt(fpointage.DBEdit1.Text,i); if Button5.Tag = 1 then begin dmpointage.tpointage.Edit; dmpointage.tpointage.FieldByName('Entree_Sortie').Value:='Entree'; dmpointage.tpointage.Post; dmpointage.query3.ParamByName('param9').AsString := 'prese'; dmpointage.query3.ParamByName('param10').AsInteger:=StrToInt(DBLookupComboBox1.Text); dmpointage.query3.ExecSQL; dmpointage.tamploye.Active:=false; dmpointage.tamploye.Active:=true; dmpointage.tentree.Append; dmpointage.tentree.Active:=false; dmpointage.tentree.Active:=true; DBEdit1.DataField:= DBEdit6.DataField ; close; end; close; if Button5.Tag=2 then begin dmpointage.tpointage.Edit; dmpointage.tpointage.FieldByName('Entree_Sortie').Value:='Sortie'; dmpointage.tpointage.Post; dmpointage.query3.ParamByName('param9').AsString := 'off'; dmpointage.query3.ParamByName('param10').AsInteger:=StrToInt(DBLookupComboBox1.Text); dmpointage.query3.ExecSQL; dmpointage.tamploye.Active:=false; dmpointage.tamploye.Active:=true; close ; end; close; end;