كيف احسب الفارق الزمني بمشروع متابعة توقيع العمال
#1
السلام عليكم
لدي مشروع متابعة توقيع العمال
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
فعند حساب الفارق الزمني لهدا العامل سيكون يحساب الفرق , لكن مشكلتي عندما يقوم بالدخول و الخروج لعدة مرات اي عند قيام العامل بالتوقيع عدة مرات في اليوم , فكيف احسب مجموع الفروق .
الرد
#2
وعليكم السلام ورحمة الله وبركاته
لا أخي لا تطرح سؤال في مثل هذه الحالات
بل أرفق في مشروع جديد به الإشكال الذي حصل
استخدم أحد قواعد بيانات أمثلة دلفي DBDemos
بالتوفيق.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد
#3
لم افهم بعد
الرد
#4
إقتباس :عندما يقوم بالدخول و الخروج لعدة مرات
أولا: هل تصميمك لقاعدة البيانات يسمح لك بالحصول على هذه المعلومة؟
بعبارة أخرى: هل تسجل كل عملية دخول وخروج؟ وكيف أنشأت الجداول؟
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد
#5
عند الصغط مثلا علر زر 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;
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم