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

jjafferr

أوفيسنا
  • Posts

    9,760
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    396

مشاركات المكتوبه بواسطه jjafferr

  1. وعليكم السلام اخي مصطفى

     

    ياريت تعطينا مثال او مثالين علشان نحاول نوصل لنفس نتائجهم ، وصورة لتصورك النهائي ، طبعا مع اعطانا بيانات نستعملهم في البرمجة ،

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

     

     

    جعفر

  2. وعليكم السلام اخي عبدالرحمن

     

    قرأت موضوعك ، وانزلت المرفق ، ولم افهم المطلوب  :eek2:

     

    رجاء اعطني مثال او مثالين ، باسماء الحقول ، وان شاء الله ما يصير خاطرك إلا طيب  :smile:

     

    جعفر

  3. وعليكم السلام  :smile:

     

    لأني انا اثرت الموضوع ، فراح ادلو بدلوي بإختصار  :smile:

     

    1. الخطأ A problem occured while MyDB was communicating with the OLE server or Active X Control

    احد اسبابه هو لغة الكمبيوتر ، وهذا رابط ماكروسوفت يشرح الموضوع http://support.microsoft.com/kb/907337/ar

    وببساطة ، اذا عملت برنامجك وفي VBA حروف عربية (UniCode) او اسم احد الكائنات او اسم الحقول او اسم المسميات في النماذج و.... ، 

    الآن اذا اراد شخص لا يملك اللغة العربية في كمبيوتره (يعني لا دعم للعربية او Fonts) ، فكيف سيتعامل مع حروف برنامجك؟

    لذلك ، يظهر لك الخطأ ، وعلشان تصلحه:

    أ. يا انك تنصب اللغة ،

    ب. تحذف اي مسميات غير انجليزية من برنامجك ، وهذه الطريقة الافضل ، لأن الحروف العربية تقلب الكود سواء في VBA او فالاستعلام او في اي مكان تكتب فيه كود.

     

    2. صيغة التاريخ:

    معظم العرب يستخدمون صيغة dd/mm/yyyy ، لهذا السبب نستخدم هذه الصيغة في عرض التاريخ في النماذج والتقارير و... ،

    ولكن عندما يريد ان نستخدم صيغة التاريخ في كود ، ستلاحظ ان الاكسس لا يحترم صيغتك ، وانما يستخدم صيغة التاريخ في الوندوز ،

    وما دمنا على موضوع التاريخ ، فالحقيقة ان صيغة التاريخ في الاكسس هو بضيغة امريكية mm/dd/yyyy ، بغض النظر عن الصيغ الاخرى ، وبعد معاناة طويلة معه في الكود (لا تنسى ، ان برنامجك الاكسس سيعمل على كمبيوترات مختلفة ، والكثير منها لم يتم تغيير صيغة التاريخ فيه ، فالكود لن يعمل بطريقة صحيحة  :eek2:

    الى ان رأيت الوحدة النمطية في المادة رقم 2 في الرابط http://allenbrowne.com/ser-36.html للمبرمج Allen Browne ، وبها والحمدلله ما عندي مشاكل  :smile:

     

     

    جعفر

    • Like 3
  4. *- بخصوص عدم ظهور رتبة الحارس او رتب أخرى بصفة التعاقد "متعاقد بالتوقيت الكامل" فقد تمت إضافة رقم الى المعيار كما يلي :

    1 Or 2 Or 4 Or 3
    

    وتمت ظهور رتبة الحارس

    *- وأما بخصوص عدم ظهور موظفين تابعين لإدارة اخرى مثلا " الوضعية : موظف بالولاية " فقد تمت إضافة هذا المعيار في الوضعية

    "موظف" Or "متعاقد بالتوقيت الكامل" Or "متعاقد بالتوقيت الجزئي"

     

    وتم الحل بتوفيق من الله عز وجل وبمساعدتك

     

    ومثل ما كان يقول الدكتور عمر الخطيب https://i.ytimg.com/vi/Ieln4RykBzY/hqdefault.jpg (في برنامج بنك المعلومات)

    يا سلام عليك :clapping:

    ولك مني إعجاب لتكملتك بقية الشروط بنفسك  :smile:

     

     

    أخي ابو محمد عباس ، شاكرا لك جميل كلماتك  :smile:

     

     

    جعفر

  5. أخي كريمو  :smile:

     

    الله يخليك ، المرة الجاية خلي لي سؤال سهل ، اتهنى بالاجابه عليه ، بدون ما احك راسي وآخر شعرتين إللي عليه يسقطو  :eek2:

     

    في الواقع المسألة كانت جدا عويصه  :eek2:  ، بس لأن الشباب أصروا على تسميتي "خبير" ، فخجلت ان اخذلهم  :yes:

     

    التقرير لدينا يعتمد على الاستعلام ، وكان لازم اعمل استعلام يكون فيه التوقيت الكامل والجزئي ،

    فاسهل طريقة خطرت على بالي ان اعمل جدول مؤقت نعبئ بياناته عن طريق الكود ، ثم بقية البيانات عن طريق الاستعلام ، ولكني احاول جهدي دائما في تلافي الجداول المؤقته داخل البرنامج!!

     

    اضطررت الى عمل استعلام فرعي ، وبه نحصل على جميع Grade_ar المطلوبة ، مأخوذا في الاعتبار التوقيت الكامل والجزئي ،

    وعلى اساس هذا الاستعلام ، نرجع لأستعلامنا السابق ، ومع بعض التغييرات في الوحدة النمطية ، ونكون حققنا المطلوب إن شاء الله  :smile:

     

    وهذه النتيجة:

    post-142414-0-71254700-1425499724_thumb.

     

     

    رجاء ملاحظة ان السجل الذي به Grade_ar = حارس ، متعاقد بالتوقيت الكامل ، لا يظهر في التقرير، لأنك قلت في آخر مشاركة لك:

     

     

    لديا مشكل أخر وهو بخصوص رتبة عامل مهني من المستوى الأول هذه منقسمة الى قسمين "متعاقد بالتوقيت الكامل" و"متعاقد بالتوقيت الجزئي"

     

    ففي اعتقادي انه في خطأ في ادخال السجل بالنسبة للحارس ، فعند تعديله ، سيظهر اسمه ان شاء الله  :smile:

    هذا معناه:  التوقيت الكامل والجزئي يكونان فقط لرتبة عامل مهني من المستوى الاول  :smile:

     

     

    جعفر

    2.2.mdb.zip

  6. انا اعتذر ، ما انتبهت اني اشير الى وحدات نمطية غير موجودة ، فاليك الكود بدونهم:

    ونعم هي للـ Backup

    Private Sub Form_Close()
    On Error GoTo err_Form_Close
     
        'make a backup of BE
           
        BE_Address = application.currentproject.path & "\Personnel_Images\Personnel_BE.accdb"
        BK_Address = application.currentproject.path & "\Program\Personnel_BE_" & Format(Now(), "yyyy-mm-dd_-hh-mm-ss") & ".accdb*"
        
        Call Shell("xcopy " & BE_Address & " " & BK_Address, vbHide)
     
     
    Exit Sub
    err_Form_Close:
     
        If Err.Number = 2450 Then
            'ignor
            Resume Next
        Else
            MsgBox Err.Number & vbCrLf & Err.Description
        End If
     
    End Sub
    

    جعفر

    • Like 1
  7. أخي علي ، خلينا نمشي على النقاط  التالية:

     

    1. اذا كان عندك الاكسس 2007 في اول اصداراته (يعني بدون تحديثات ، وللأسف هذه النسخة موجودة ورأيت الكثير منها ، والكثير من الناس يأخذوها من CD او DVD غير مشروع) ، ففي هذه النسخة ، اذا كنت طلبت من البرنامج: Compact on close ، فالفرصة كبيرة بأن يعمل Corruption لقاعدة البيانات في بعض الكمبيوترات.

     

    2. لهذا السبب يجب عمل التحديثات (Service pack او SP) على الاكسس (لجميع الاصدارات ، لهذا السبب ولأسباب اخرى) ،

    وهذا الموقع يحتوي على رابط لآخر تحديثات الاوفيس: http://pcsupport.about.com/od/keepingupwithupdates/a/office-service-pack.htm

    وهناك العديد من الاشخاص الذين للاسف الشديد لا يقومون بتحديث الـ Windows ولا الاكسس ، لهذا السبب اسمح لي اخبرك ، بأن اول تحديث للاكسس 2000 تم فيه تصليح 200 عيب وثغرة من البرنامج الاصل  :eek2: 

     

    3. عند حذف السجلات في الاكسس ، فان الاكسس لا يقوم بحذفها نهائيا من البرنامج ، إلا عندما تقوم بعملية Compact and Repair.

    مثال: قم بعمل قاعدة بيانات بجدول واحد مثلا ، وادخل فيه آلآف السجلات ،

    اغلق البرنامج ، لاحظ حجم الملف ، افتح البرنامج ، احذف كم هائل من السجلات ، اغلق البرنامج ، لاحظ حجم الملف ، سترى انه تقريبا نفس الحجم الاصلي ،

    الآن افتح البرنامج ، اعمل Compact and Repair ، واغلق البرنامج ، لاحظ حجم الملف  :smile:

     

    4. بالنسبة لي انا ، فمعظم برامجي تحتوي على FE و BE الذي يحتوي على الجداول (في البداية ، البرنامج يكون غير مقسم ، الى ان يأخذ البرنامج شكله وعمله الصحيح ، فعندها اقسمه) ،

    في FE ، في النموذج الرئيسي ، فاستخدم مثل الكود التالي ، والذي يعمل لي نسخة من BE في مجلد خاص للـ Backup ، كلما يغلق المستخدم برنامجه ، ويكون اسم الملف مختوما باليوم والساعة والدقيقة والثانية ، وطبعا السؤال الذي يسأله الكثيرين هو ، سيصبح لدينا الكم الهائل من هذه الملفات ، وجوابي هو:

    أ. حجم الهارد ديسك هذه الايام مهول ، فلا مشكلة ،

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

    Private Sub Form_Close()
    On Error GoTo err_Form_Close
    
        'make a backup of BE
        Call BE_or_FE
        Call Backup_Folder
        
        BE_Address = Replace(BE_Path, "\Personnel_Images", "") & "\Personnel_BE.accdb"
        BK_Address = Backup_Folder & "\Program\Personnel_BE_" & Format(Now(), "yyyy-mm-dd_-hh-mm-ss") & ".accdb*"
        
        Call Shell("xcopy " & BE_Address & " " & BK_Address, vbHide)
    
    
    Exit Sub
    err_Form_Close:
    
        If Err.Number = 2450 Then
            'ignor
            Resume Next
        Else
            MsgBox Err.Number & vbCrLf & Err.Description
        End If
    
    End Sub
    
    

    :smile:

     

    جعفر

    • Like 1
  8. السلام عليكم

     

    الاخ علي

     

    الاكسس 2007 في اول اصداراته ، كان يعمل Corruption لقاعدة البيانات في بعض الكمبيوترات ، وتحدث هذه الحالة اذا كنت طلبت من البرنامج: Compact on close.

    لهذا السبب يجب عمل التحديثات على الاكسس ، لهذا السبب ولأسباب اخرى.

     

    طريقة عمل Compact ، هو ان الاكسس يعمل قاعدة بيانات مؤقته باسم Database ، وينقل اليها جميع كائنات قاعدة البيانات التي نريد عمل Compact عليها ، وبعد اتمام العملية ، يحذف قاعدة البيانات الاصلية ويغير اسم الملف Database الى اسم قاعدة البيانات الاصلية.

     

    فربما تكون محظوظا وتكون بياناتك موجودة في الملف الذي ارفقته سابقا  :smile:

     

     

    جعفر

  9. استاذي العزيز جعفر

     

     

    1. لقد تم الحل وفقا لما تفضلت به

     

    2. - عامل مهني من المستوى الأول ------ توقيت كامل

    - عامل مهني من المستوى الأول ----- توقيت جزئي

     

     

    هلا والله بكريمو  :smile:

     

    أ. قلت لك انك تريد طرف الخيط ، وبعدين تحلق في مقدمة السرب  :smile:

    ب. لازم نرجع لإتفاقنا السابق ، بأنك تخبرنا عن كل الاشياء اللي تريدها من البداية  :smile:

    ج. انا فهمي ضعيف  :smile:  لهذا ، رجاء انت ترفق قاعدة بياناتك المعدلة ، وتخبرنا بالتفصيل مع بعض الصور عن الشئ اللي تريد ان تعمله  :smile:

     

     

    جعفر

  10.  

    بارك الله فيك

    :fff:  :fff:  :fff:

    طيب الطمع فى الكرام واجب 

    :biggrin2:

    لحضرتك موضوع عن تصدير الجداول والتقارير 

    الموضوع ده استفدت منه بصوره كبيره جداا

    هل بالامكان دمج الملفات فى ملف واحد وتنفيذ فكره ان يتم نقلهما الى اى ملف  بطريقه اوتوماتيكيه 

    :yes:  :yes:  :yes:

     

     

    ان شاء الله خير  :smile:

     

     

    جعفر

  11. الحمدلله تم اصلاح الملف Database ، اما الآخر فما استطعت عليه سبيل  :eek2:

     

    رجاء تغيير صيغة البرنامج المرفق الى 7z بدلا عن zip ، حيث الظاهر ان المنتدى لا يحب صيغة 7z  :eek2:

     

     

    سؤال ، هل الملف الثاني بصيغة accdb ، او بصيغة اخرى؟

     

     

    جعفر

    Database_fixed.zip

  12. وعليكم السلام اخي علي

     

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

    واذا البيانات كانت حساسه ، ارفع البرنامج على اي موقع للرفع ، وارسل لي رساله على الخاص مع الرابط.

     

    انا افضل الطريقة الاولى ، لاعطاء المجال لكل من يريد المساعدة  :smile:

     

     

    جعفر

  13.  

    بعد اذن استاذ اخر الارض والاستاذ جعفر 

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

     

    If Pas = 815 Then

    DoCmd.Close
    DoCmd.OpenForm "Main2"
    ElseIf Pas <> 815 Then
    DoCmd.Quit
    End If
     

     

     

    مادام البرنامج شغال تمام ، فلا تهتم في التفاصيل البسيطة  :smile:

     

     

    جعفر

  14. السلام عليكم أخي الوئام 

     

    ينبغي أولا أن تختار عنوان مناسب للموضوع , ماهو البرنامج حتى نقوم بتعديل العنوان ؟

    ثانيا : اشرح ماتريده بالضبط من البرنامج و ابدأ بما يسمى تحليل النظام على ورقة و قلم قبل البدء باي شي

    و من ثم نتناقش في قضية اختيار الجداول المطلوبة للعمل

     

    هذه هي الطريقة الصحيحة لعمل البرنامج الصحيح  :smile:

    بالاضافة الى تسمية الجداول وبقية الكائنات بمسميات لها معنى لكل من يقرأها  :smile:

     

     

    جعفر

  15. ماشاء الله عليك اخ جعفر , خبير

    انا اجبت من منظور روية الملف فقط و لم اجرب النتائج كما فعلت انت

     

    حيا الله أخي رضوان  :smile:

     

    انا مستخدم عنيد ، لا يقبل الـ لا من البرنامج ، واخلى راسي وراسه  :smile:

     

    اشكرك على لطف حديثك  :smile:

     

    جعفر

  16. السلام عليكم شباب  :smile:

     

    انا اتبعت خطوات الاخ رضوان ، وكل شئ كان تمام  :smile:

    ولكن لما اضفت حارسين زيادة الى الجدول ، صار عندن 3 حراس:

    post-142414-0-98415300-1425403775_thumb.

     

     

    وللاسف ، التقرير فرز 3 سجلات للحراس  :eek2:

    post-142414-0-77609700-1425403777_thumb.

     

     

    فعليه ، فكان لازم نعمل مجاميع للاستعلام ، علشان تكون عندنا قيمة واحدة للحراس:

    post-142414-0-59428900-1425403778_thumb.

     

     

    الآن الاستعلام تمام  :smile:

    post-142414-0-63809400-1425403779_thumb.

     

     

     

    ولكن للاسف ، التقرير ما اعطاني النتائج الصحيحة  :eek2:

     

    لهذا شفت ان افضل طريقة للتعامل مع هذه المشكلة ، هي استعمال استعلام المجاميع ، وعمل وحدة نمطية تحلل وتفرز البيانات ، فهذا صار الكود:

    post-142414-0-01251000-1425403786_thumb.

     

     

    وهو محتاج 4 بيانات من الاستعلام

    post-142414-0-87827700-1425403780_thumb.

     

     

    فاصبح التقرير هكذا:

    post-142414-0-73044300-1425403782_thumb.

     

     

    والنتيجة:

    post-142414-0-45797900-1425403784_thumb.

     

     

    الوحدة النمطية:

    
    Function Count_MF(MinA As Integer, MaxA As Integer, MF As String, GR As String)
    
    
        'MF = Male, Female
        'GR = Grade_ar
        'MinA = Age From
        'MaxA = Age To
        'Year_F = Year From
        'Year_T = Year To
    
        Dim Year_F, Year_T As Integer
        Dim myCondition As String
    
        Year_F = Year(Date) - MinA
        Year_T = Year(Date) - MaxA
    
        myCondition = "val([txt4]) Between " & Year_F & " and " & Year_T
        myCondition = myCondition & " And [الجنس] ='" & MF & "'"
        myCondition = myCondition & " And [تاريخ نهاية العمل]='يومنا هذا'"
        myCondition = myCondition & " And [Grade_ar]='" & GR & "'"
        'Debug.Print myCondition
        
        Count_MF = DCount("*", "EmpTB", myCondition)
    
    End Function
    
    

    :smile:

    جعفر

    2..mdb.zip

  17. السلام عليكم أخي آخر الارض  :smile:

     

    تفضل اخي الكريم 

     

    في نموذج pass1   مثلا

     

    Private Sub ÃãÑ2_Click()
    If Pas = 815 Then
    DoCmd.OpenForm "Main2"
    DoCmd.Close
    End If
     

     

    بالتوفيق ان شاء الله.

     

    اذا تسمح لي اعدل في الكود ، وابين وين المشكلة في كودك:

    لما فتحت نموذج Main2 ، فاصبح هو الذي عليه التركيز ، فلما اصدرت الامر Docmd.close ، فانه يغلق النموذج الذي عليه التركيز وهو Main2  :eek2:

    فالحل هو:

    Private Sub ÃãÑ2_Click()
    If Pas = 815 Then
    myForm= Me.Name
    DoCmd.OpenForm "Main2"
    docmd.Close acForm, myForm
    End If
    

    جعفر

×
×
  • اضف...

Important Information