الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

قراءة مقطع من نص و نسخه الى حقل اخر في استعلام احتساب الوقت الزمني

بدأه أبو منتظر في 21 نوفمبر 2013 · 8 رد · 538 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

      بعد التحية والسلام على جميع أعضاء المنتدى

 

احتاج الى مساعدة في كيفية نسخ اول وقت وآخر وقت من حقل يدرج في اوقات الدخول والخروج بصيغة نص , وذلك في قاعدة بيانات جهاز البصمة الأداري

 

بعد الحصول على عمود اوقات دخول وخروج الموظفين (من خلال ملف اكسل يصدره برنامج جهاز البصمة) والتي تدرج في الحقل كالتالي ( 08:30 08:30 08:30 16:01 16:01 16:02 ) او (09:30 09:30 09:30 17:01 17:01 17:02) أو مايشابهها من الأوقات

 

ونلاحظ بداخله وقت الدخول وقد يتكرر نتيجة ضغط البصمة المتتالي في نفس الدقيقة من قبل المستخدم وينتهي بوقت الخروج والذي قد يكرره المستخدم أيضاً . 

 

   الخطوة التي اريدها وبعد نسخ عمود الأوقات من الأكسل الى العمود (InOut) في الجدول whours  تصميم كود ,  يتم عن طريقه نسخ الوقت الأول الى حقل (TimeStart) والذي يمثل وقت الدخول , ونسخ الوقت الأخير الى حقل (TimeFinish) الذي يمثل دور الخروج ,

 

وبعدها يقوم الأستعلام بأحتساب ساعات العمل .,وتتم العملية لكل السجلات بالتتالي .

 

وأوجه شكري وامتناني هنا الى استاذتي الفاضلة زهرة , حيث انني استفدت من برنامج سابق لها في احتساب الفرق الزمني .

 

المثال مرفق...مشكورين

 

InOut Times.rar

تم تعديل هذه المشاركة بواسطة أبو منتظر في 21 نوفمبر 2013 في 17:08

#2

تفضل طويل العمر :)

 

هذا كود الزر الذي يقوم بالعمل (وفي الكود تفصيل لعمل كل سطر :) ) :

Private Sub cmd_split_Click()

    Dim x() As String
    
    'we will use the Form Navigation
    
    'take the Form Record Source as a Recordset
    Set rst = Me.RecordsetClone
    'move to the 1st Record
    rst.MoveFirst
    'move the Record in the Form to the 1st Record
    DoCmd.GoToRecord , , acFirst
    
    'loop through the Form's Records
    For i = 1 To rst.RecordCount
         
        'split InOut values, which is saperated by a SPACE, into an array
        x = Split(Me.InOut, " ")
        
        'give Time Start the 1st value, which is Lower Bound of the x array
        Me.TimeStart = x(LBound(x))
        'give Time Finish the LAST value, which is Upper Bound of the x array
        Me.TimeFinish = x(UBound(x))
        
        'next Recordset
        rst.MoveNext
        'move to the next Record
        DoCmd.GoToRecord , , acNext
        
    Next i
    
End Sub

جعفر

 

شكر خاص لأخي القحم على تنبيهي لخاصية اظهار الكود بهذه الطريقة :)

97.InOut Times.mdb.zip

تم تعديل هذه المشاركة بواسطة jjafferr في 21 نوفمبر 2013 في 18:46

1
#3

ممتاز جعفر+1

 

دائما أكتب الحل بهذه الطريقة

حاول استخدام خاصية إدراج (كود) 

#4

حياك الله اخي القحم :)

 

بس ما فهمت قصدك :(

 

جعفر

#5

يعني في محرر المنتدى استخدم  الوسم (<>)  حتى تظهر الشفرة منسقة وتصبح قراتها سهل.. يعني تصبح الشفرة مثل التالي

Dim x() As String

'we will use the Form Navigation

'take the Form Record Source as a Recordset
Set rst = Me.RecordsetClone
'move to the 1st Record
rst.MoveFirst
'move the Record in the Form to the 1st Record
DoCmd.GoToRecord , , acFirst

'loop through the Form's Records
For i = 1 To rst.RecordCount

'split InOut values, which is saperated by a SPACE, into an array
x = Split(Me.InOut, " ")

'give Time Start the 1st value, which is Lower Bound of the x array
Me.TimeStart = x(LBound(x))
'give Time Finish the LAST value, which is Upper Bound of the x array
Me.TimeFinish = x(UBound(x))

'next Recordset
rst.MoveNext
'move to the next Record
DoCmd.GoToRecord , , acNext

Next i

End Sub
#6

شكر خاص لأخي القحم على تنبيهي لخاصية اظهار الكود بهذه الطريقة  :)

#7

حيّاك أبا صادق .. نعم الرّد وبارك الله فيك

#8

حياك الله :)

 

جعفر

#9

أخي ابومنتظر ، رجاء استخدام هذا الكود المعدل :)

Private Sub cmd_split_Click()

    Dim x() As String
    
    'move the Record in the Form to the 1st Record
    DoCmd.GoToRecord , , acFirst
    
    'loop through the Form's Records
    For i = 1 To Me.RecordsetClone.RecordCount
         
        'split InOut values, which is saperated by a SPACE, into an array
        x = Split(Me.InOut, " ")
        
        'give Time Start the 1st value, which is Lower Bound of the x array
        Me.TimeStart = x(LBound(x))
        'give Time Finish the LAST value, which is Upper Bound of the x array
        Me.TimeFinish = x(UBound(x))
        
        'move to the next Record
        DoCmd.GoToRecord , , acNext
        
    Next i
    
    DoCmd.GoToRecord , , acFirst
    
End Sub

جعفر

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…