اذهب الي المحتوي
أوفيسنا

(تمت الاجابة) تلوين الحقل بعد أجراء تغيير عليه / تعقب التعديلات


رعد داود

الردود الموصى بها

بسم الله الرحمن الرحيم

السلام  عليكم

عندي  نموذج   في  حال أجراء اي  تعديل  على  اي  حقل  منه  يتم  تلوين  الحقل  الى  لون أحمر  وياحبذا  عمل  نموذج أخر  يجمع  السجلات  التي  تم  التغيير  عليها

أرفق  ملف  بذلبك

الصندوق العام.rar

رابط هذا التعليق
شارك

التعديل ، ومراقبة التعديلات ... فيما اعرف

مسألة لا تتعلق بالنموذج أخي العزيز

تحتاج لجدول متابعة للتعديلات ، تقوم من خلاله بمراقبة وتوثيق التعديلات و اجراء الإحصاءات اللازمة

 

.............

رابط هذا التعليق
شارك

الشكر وكل  الشكر  للأستاذ أبو  ادم  هي  مسأله  مهمه بالنسبه  لي  لكي  اراقب  عملية  التغيير  اذا  قام  بها  مدخل  البيانات  في  هذا النموذج

الشكر  مره  اخرى  للأهتمام  بالموضوع

رابط هذا التعليق
شارك

أخي العزيز

قمت منذ زمن في تطبيقاتي بتفعيل المتابع tracker

وكل تطبيق يتميز بطريقة مختلفة تبعاً لتحليلي لمراحل ادخال المعلومات و حركة المستخدمين وصلاحيات التعديل و الاجهزة المستخدمة وأهمية المتابعة وجدواها

وقد قمت بتعديلات محدودة على تطبيقك المرفق اعلاه في مشاركتك رقم 1

و أرى ان ترفق بتطبيقك - كما اسلفت لك تلميحاً - جدولاً لمتابعة التعديلات ، ثم تقوم بمراقبة النماذج التي تسمح للمستخدم من خلالها باجراء التعديلات

والمتغيرات التي تحكم شكل المتابعة هي - على سبيل المثال لا الحصر :

تحليل النظام

مستوى تعقيد المتابعة

حجم التعديلات المتوقع

حجم الرقابة المرغوب بها

عدد المستخدمين

عدد الاجهزة

وجود نظام مستخدمين من عدمه

 

وللحديث بقية ...

 

........

رابط هذا التعليق
شارك

نظام المتعقب متفرع ومعقد ومتعدد الغايات ، ونذكر بعض الافكار و الوجوه ، لعموم الفائدة.

نظام المتعقب قد يكون بسيطاً أو متعدد درجات التعقيد

نظام المتعقب معني باظهار نتائج الرقابة لمسئول النظام System administrator ، أو مراقب الجودة Quality control officer ، وليس للمستخدمين Users

نظام المتعقب ومن خلال المعنيين يوفر معلومات تفيد في :

أمن النظام وصحة المعلومات

دعم تطوير مراحل التحليل لغايات تطوير النظام

مراقبة الجودة ودقة معلومات المستخدمين

مراقبة مستوى تدفق المعلومات ومراحلها وفاعليتها

تأثير التعديلات على صحة التقارير الاحصائية

 

وللحديث بقية ...

 

.....

رابط هذا التعليق
شارك

سجلات التعقب غالباً ما تكون كبيرة ومتشعبة

لا بد من احسان إنشاء الجدول الخاص بها ، واحسان ربطه بالجداول المعنية ، للحصول على نتائج صحيحة ودقيقة

يفضل إنشاء نماذج خاصة لإظهار نتائج التعقب للتعديلات ، لإطلاع مسئول النظام ومراقب الجودة ... كل حسب ما يعنيه ، ولغايات محددة مدروسة بعناية عند تحليل النظام

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

 

قد يكون منها ما طلبت أخي الحبيب ، بتغيير لون الحقل الذي تعرض للتعديل

ولكن عيب هذا الخيار - وحسب واقع التجربة - ، إحتمال تعدد الحقول المعدلة ، وتعدد حالات التعديل لنفس الحقل

 

وللحديث بقية ...

 

..........

رابط هذا التعليق
شارك

شرح  استاذ  كبير  لتلميذ صغير ,,,,  رائع  جدا"

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

المعلومات  tab1   أعتقد  يجب  ان  نظيف  حقل  الى  الجدول  tab1  مثلا"  بعنوان  changed

ونسند  له  قيمه   ثابته  ففي  كل  تغيير  بأحد  الحقول  يرجع  القيمه  الثابته  للحقل  changed

مجرد  رأي

رابط هذا التعليق
شارك

أخي العزيز

ليس بينكم تلاميذ صغار ... فطلاب العلم عمالقة كبار

 

دائما الامور تبدأ بسيطة ، وحين تتطور ونتطور معها ، تصبح معالجة الامور أصعب وأكثر إيلاماً

أفضل أن نبقى على مستوى الحد الأدني الذي تحدثنا عنه ، ففي اقتراحك ( كما أرى ) بعض المحاذير 

سارفق لك مساءاً بعض الافكار ، حيث أن التعديلات على تطبيقك بجهازي الشخصي ( ليس معي حالياً)

 

والله من وراء القصد

 

........

رابط هذا التعليق
شارك

عذراً على التأخير

الروتين الذي سنتبعه يتلخص بما يلي:

سننشئ وحدة نمطية جديدة ضمن تطبيقنا

تقوم الوحدة النمطية بتفقد وجود جدول تعقب التعديلات

في حال عدم وجوده ستقوم بانشاء الجدول من خلال الكود ...

ثم يحدد من خلال الكود عمليات حفظ المعلومات في الجدول مستقاة من الجهاز و الشبكة ومصدر معلومات اي نموذج مستهدف بالرقابة

نضع كود تشغيل الوحدة النمطية في حدث قبل التحديث لأي نموذج نرى ضرورة اخضاعه للرقابة

 

وللحديث بقية ...

.............

رابط هذا التعليق
شارك

في وحدة نمطية جديدة إنسخ

 

Option Compare Database
Option Explicit

Dim dbs As DAO.Database
Dim sAuditTable As String
Dim sSQL As String

Dim sTable As String        'Table where the record is being edited
Dim CTL As Control          'The control in the form being edited
Dim sFrom As String         'Original Data in the control
Dim sTo As String           'What the original data was changed to

Dim sPCName As String       'Name of the PC that is being used
Dim sPCUser As String       'Name of the User on the Networked PC
Dim sDBUser As String       'Name of the Database User
Dim sDateTime As String     'Date and Time of the change

'===========================================================================================
'
'   Submitted by Nart ebzo For www.officena.net
'   This Audit Trail will track changes to existing records.
'   In the "Before Update" event of the FORM enter the following:
'
'       Call AuditTrail(Me.Form, [ID])
'
'   Make sure to create a table called "tbl_AuditLog" and have the following fields:
'   (A table will be created automatically if it does not exist)
'
'       1. RecordID (This is a unique number)
'       2. txt_Table (This is the table where the record was changed)
'       3. lng_TblRecord (This is the RecordID number from the record being changed)
'       4. txt_Form (This is the form being used to edit the record)
'       5. txt_Control (This is the data entry control (field) that was edited
'       6. mem_From (This is the original data in the control (field)
'       7. mem_To (This is what the original data was changed to)
'       8. txt_PCName (This is the name of the PC used to edit the record)
'       9. txt_PCUser (This is the name of the user logged onto the PC)
'       10. txt_DBUser (This is the name of the person looged on to the databse if used)
'       11. dat_DateTime (This is the date and time the record was edited.)
'
'
'   Be sure to enable the "Microsoft DAO 3.6 Object Library" Reference
'
'============================================================================================
    


Public Function AuditTrail(frm As Form, lngRecord As Long)
On Error GoTo Error_Handler
    
    '----------------------------------------------------------------------
    '   Skips this procedure if a new record is being entered in the form
    '----------------------------------------------------------------------
    If frm.NewRecord = True Then
        Exit Function
    End If
        
    '----------------------------------------------------------------------
    '   Checks to see if the tbl_AuditLog Exists
    '   Creates the table if it does not exist
    '----------------------------------------------------------------------
    Set dbs = CurrentDb
    dbs.TableDefs.Refresh
    
    sAuditTable = "tbl_AuditLog"
    On Error Resume Next
    If IsNull(dbs.TableDefs(sAuditTable)) Then
        'Table does not exist
        On Error GoTo Error_Handler
        sSQL = "CREATE TABLE tbl_AuditLog([RecordID] COUNTER PRIMARY KEY, [txt_Table] TEXT(50), [lng_TblRecord] LONG, " & _
                "[txt_Form] TEXT(50), [txt_Control] TEXT(50), [mem_From] MEMO, [mem_To] MEMO, [txt_PCName] TEXT(50), " & _
                "[txt_PCUser] Text(50), [txt_DBUser] Text(50), [dat_DateTime] DATETIME);"
        DoCmd.SetWarnings False
        DoCmd.RunSQL sSQL
        DoCmd.SetWarnings True
    Else
        'Table Exists. Do Nothing
        On Error GoTo Error_Handler
        
    End If

    Set dbs = Nothing
       
     
       
    '----------------------------------------------------------------------
    '   Runs through each control on the form and checks for edits/changes
    '----------------------------------------------------------------------
    For Each CTL In frm
    
        Select Case CTL.ControlType     'Only checks data entry type controls.
            Case acTextBox, acComboBox, acListBox, acOptionGroup
                
                sFrom = Nz(CTL.OldValue, "Null")
                sTo = Nz(CTL.Value, "Null")
                
                If sFrom <> sTo Then
                
                    '-----------------------------------
                    '   Gets the required Info
                    '-----------------------------------
                    sTable = frm.RecordSource
                    sPCName = Environ("COMPUTERNAME")
                    sPCUser = Environ("Username")
                    sDBUser = "Me"      'Get Username from the database login
                    sDateTime = Now()

                    sSQL = "INSERT INTO tbl_AuditLog ([txt_Table], [lng_TblRecord], [txt_Form], [txt_Control], " & _
                           "[mem_From], [mem_To], [txt_PCName], [txt_PCUser], [txt_DBUser], [dat_DateTime]) " & _
                           "VALUES ('" & sTable & "', '" & lngRecord & "', '" & frm.Name & "', " & _
                           "'" & CTL.Name & "', '" & sFrom & "', '" & sTo & "', '" & sPCName & "', " & _
                           "'" & sPCUser & "', '" & sDBUser & "', '" & sDateTime & "')"
                    DoCmd.SetWarnings False
                    DoCmd.RunSQL sSQL
                    DoCmd.SetWarnings True
    
                End If
        End Select
    Next CTL
    
Error_Handler_Exit:
   Exit Function

Error_Handler:
    MsgBox ("Error No: " & Err.Number & vbCrLf & vbCrLf & "Error Description: " & Err.Description)
    Err.Clear
    Resume Error_Handler_Exit

End Function

الشروحات والتوضيحات داخل الكود للدلالة و الإرشاد

 

ونتابع

 

.....

رابط هذا التعليق
شارك

فائدة:

الهدف من إنشاء الجدول عبر الكود هو:

ضمان إنشاء الجدول حسب تحليلنا ورغبتنا

منع الأخطاء في إنشاء الجدول

توفيراً للوقت و الجهد في إنشاء الجدول في كل قاعدة جديدة ، حيث نكتفي باستخدام الوحدة النمطية

 

...........

رابط هذا التعليق
شارك

في حدث قبل التعديل Before Update للنموذج الذي نختار تعقب التعديلات الطارئة على سجلات و حقول مصدر معلوماته ، نضع الكود التالي :

 

Call AuditTrail(Me.Form, [ID])

وهو لدينا هنا النموذج tab1

حيث يتم تشغيل الكود عند الشروع في أي عملية تعديل على أي حقل للنموذج بدلالة الرقم التعريفي للسجل

 

ونتابع

......

رابط هذا التعليق
شارك

تلميحات :

 

يفضل إستخدام أسماء ذات دلالات واضحة ، سواء للجداول أو الاستعلامات أو النماذج أو التقارير

.......

 

ويمكن تمييزها أحرف استهلالية مميزة مثل tbl للجدول و frm للنموذج وهكذا

.......

 

تسهيلاً علينا عند التعامل مع الاسماء من خلال الكودات

 

 

........

رابط هذا التعليق
شارك

صور التطبيق لعملية التعامل مع مخرجات عملية التعقب لا حدود لها و الخيال فيها سقفه السماء

 

فمثلاً :

يمكننا وفي نموذجنا tab1 أن نستحدث مربعاً للنص Text Box في منطقة ذيل النموذج Form Footer نسميه مثلاً lblTr

 

ثم وفي حدث عند التركيز لمربع النص notes نضع الكود التالي :

 

Private Sub notes_GotFocus()
Dim strMsg As String
Dim lngRed As Long, lngYellow As Long

    lngBlack = RGB(0, 0, 0)
    lngYellow = RGB(255, 255, 0)
 
 If Not IsNull(DLookup("lng_TblRecord", "tbl_AuditLog", "lng_TblRecord= " & notes.Value)) Then
   strMsg = "Record Amended"
   Me.lblTr = (strMsg)
   Me.lblTr.ForeColor = lngYellow
   
   
Else
    strMsg = "Record has not been modified"
   Me.lblTr = (strMsg)
   Me.lblTr.ForeColor = lngBlack
End If

End Sub

حيث يقوم الكود بالبحث في جدول التعقب وفي حقل الرقم التعريفي للحقل المعدل ويطابقه مع الرقم التعريفي للسجل الذي نقف عنده في نموذجنا ، وفي حال التطابق يظهر لنا تلميحاً في مربع النص الجديد ، مفاده ان النص خضع للتعديل (بدون تفاصيل) وباللون الأصفر ، وخلافاً لذلك يظهر تلميح بأن السجل لم يخضع لأي تعديل وباللون الأسود.

ونستخدم هنا التأثير البصري للون تميزاً بين النتائج ، ولغايات لف نظر مراقب الجودة العامل على النموذج.

 

مجرد فكرة مناسبة لتطبيقك ....

..........

 

رابط هذا التعليق
شارك

تنبيه :

 

أفضل إرفاق الكودات الداعمة للتحليل و الفكرة ، مساعدة للسائل على تحقيق أكبر فائدة ممكنة ، وحثه على التطبيق بنفسه

 

حال الضرورة لا مانع لدي من إرفاق تطبيق معدل

 

وللحديث بقية ...

 

بإنتظار ردودكم و تعليقاتكم

 

............

  • Like 1
رابط هذا التعليق
شارك

الشكر  وكل  الود  والأحترام  لك  ياأخي 

حل  رائع  وتم  التطبيق  لكن  تظهر  لي  رسالة  خطأ 3075  عند اجراء  تغيير  او  تعديل  وعند  حقل  الملاحظات notes

أرفق  لكم  البرنامج  بعد  التعديل

الصندوق العام.rar

رابط هذا التعليق
شارك

زائر
هذا الموضوع مغلق.
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information