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

jjafferr

أوفيسنا
  • Posts

    9975
  • تاريخ الانضمام

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

  • Days Won

    406

كل منشورات العضو jjafferr

  1. وعليكم السلام اخوي موسى 🙂 فتحت البرنامج ، ورحبت بي رسالة خطأ . هذا الرابط يوضح لك ما هي المشكلة . جعفر
  2. في الواقع هذه هي طريقة عمل الامر Hyperlink !! ولا يمكن التغلب على الرسالة عن طريق DoCmd.SetWarnings False ، لأنها الوندوز وليست رسالة الاكسس ، فالطريقة الوحيدة التي اعرفها هي استعمال اوامر اخرى مثل الامر Shell لتنفيذ المهمة بدل عن HyperLink 🙂 طبعا يمكنك عن طريق الريجستري ان تلغي ظهور هذه الرسالة ، ولكن هل ستقوم بهذا على كمبيوتر العميل كذلك !! جعفر
  3. وعليكم السلام ورحمة الله وبركاته 🙂 الله يطول في عمرك احوي ابو عبدالله ، هذه رسالة خطأ ، ولا علاقة لها برسائل أمان الاكسس !! الرسالة تقول انها ما تقدر تفتح المسار الموجود في الرسالة ، فاذا ارجت ان تفتح مسار او تفتح ملف ، فتأكد بأن المسار صحيح : . جعفر
  4. في البرنامج الموجود عندك ، افتح التقرير في وضع الثصميم ، وفي اعدادات Order By ، رجاء تحذف الموجود هناك ، وتحفظ التقرير ، ثم تجربه مرة اخرى. انا نادرا ما استعمل On Error Resume Next ، وانت ما شاء الله تستعمله في كل حدث!! لهذا السبب ، لم احصل على خطأ لما شغلت التقرير من الكود ، وانما تحصل على الخطأ لما تفتحه مباشرة. الامر On Error Resume Next لا يجعلك ترى اي خطأ ، بينما في واقع الامر تكون هناك اخطاء ، ولهذا السبب ترى ان البرنامج لا يعمل بطريقة صحيحة ، ولن تعرف السبب. 1492.not in select.accdb.zip
  5. تفضل ، البيانات تم اخذها من النموذج كما اشرت في مشاركتي السابقة (طبعا النموذج لازم يكون مفتوح وتكون فيه البيانات) : . جعفر
  6. وعليكم السلام 🙂 مثل ما قال اخوي موسى ، استعمل جدول 🙂 يعتمد على طبيعة هذه الارقام : 1. فاذا كانت موجودة في جدول ، فاعمل حقل اضافي في الجدول ، فلنسمية Printed ونوعه نعم/لا ، 2. واذا هذه الارقام مو موجودة في جدول ، فاقترح عمل جدول خاص لهذا الغرض ، يكون فيه الرقم التسلسلي ، وحقل Printed ، وعليه : 1. قبل امر الطباعة ، تتاكد بأنه لم يتم طباعة الرقم ، فالمعيار يكون الرقم التسلسلي ، و Printed <> -1 ، 2. وبعد امر الطباعة ، مباشرة تعمل تحديث للجدول ، فالمعيار يكون الرقم التسلسلي ، والتحديث Printed = -1 ، جعفر
  7. مثل ما اخبرتك ، انا لا افهم فرنسي ، فإذا تحب تنتظر ممكن احد الشباب اللي يعرف فرنسي ممكن يساعدك 🙂 ولكن ، ما يضرك ان تجرب ما اقترحته عليك 🙂 وتم تعديل اسم الموضوع ليجذب الشباب 🙂 جعفر
  8. تفضل : الاستعلام: موظفين_القسم2 SELECT mowadfen.الرقمالوظيفي, mowadfen.يعمللان, mowadfen.الاسم, mowadfen.القسم FROM mowadfen LEFT JOIN كشف_رواتب_القسم ON mowadfen.الرقمالوظيفي = كشف_رواتب_القسم.الرقمالوظيفي WHERE (((mowadfen.يعمللان)="يعمل") AND ((mowadfen.القسم)=[Forms]![hodorenseraf1]![درجالقسم]) AND ((IIf([كشف_رواتب_القسم].[الرقمالوظيفي]=[mowadfen].[الرقمالوظيفي],-1,0))=0)); جعفر 1492.not in select.accdb.zip
  9. وعليكم السلام 🙂 بما اني لا افهم فرنسي ، ولكني رأيت كلمة OLE ، فعادة الحل يكون كما في المرفق: جعفر
  10. وعليكم السلام ورحمة الله وبركاته 🙂 لو وضعت العمل اللي عملته انت ، علشان نصلح عليه ، ولكن هي 3 اوامر بالترتيب الذي تريد ، ضعها تحت بعضها البعض ، وسيتم تنفيذها 🙂 جعفر
  11. وعليكم السلام 🙂 في حدث بعد الاختيار من الحقل the_city ، اعمل هذا الكود : Private Sub the_city_AfterUpdate() Me.Requery Me.forme2.Requery End Sub . واما الاستعلام q2 ، فسيصبح : . Not In (Select [الرقم_الوظيفي] from q1) جعفر
  12. وعليكم السلام ورحمة الله وبركاته 🙂 تفضل : 1. =[Forms]![f_1]![txta] 2. =[Forms]![f_1]![txta]-[Forms]![f_1]![txt] . جعفر
  13. وعليكم السلام 🙂 جرب هذا الرابط ، فقد حل لي مشاكل كثيرة ، وخصوصا بين لغات الدول جعفر
  14. من زمان ما عامل الكود على حدث "عند التغيير" OnChange للحقل ، فأخذ مني بعض الوقت 🙂 اضفت حقل جديد txt41 باللون البرتقالي ، وممكن تعمله مخفي . اذا اردنا ان نعمل تغيير في بيانات النموذج عند كل ضغطة زر على لوحة المفاتيح (الكيبورد) ، ممكن لغرض البحث ، او للحصول على مجموع عند ادخال كل رقم ، فلابد من استخدام حدث "عند التغيير" OnChange للحقل. صحيح ان نتائج ضغطة ازرار لوحة المفاتيح تظهر مباشرة في الحقل ، ولكن البرنامج لا يحصل على آخر زر ، فيجب الاستعانة بحقل آخر ، خليني اوضح : 1. في حدث "عند التغيير" OnChange للحقل ، اكتب debug.print me.TXT4 ، ولاحظ النتائج في نافذة immediate في نافذة VBE ، سترى ان آخر الازرار اللي ضغطت عليها لا تظهر قيمتها ، لأن me.TXT4 معناها قيمة الحقل المحفوظة في الجدول ، بينما اذا اردنا ان نأخذ القيمة التي لم يتم حفظها الى الآن ، فيجب ان نستخدم me.TXT4.Text ، لاحظ الفيديو التالي ، القيمة الاصلية المحفوظة في الجدول هي 15 : . 2. على هذا الاساس ، عملت حقل جديد اسميته txt41 (باللون البرتقالي في الصورة اعلاه ، ويمكن عمله مخفي) ، بحيث نعطيه القيمة الغير محفوظة من الحقل TXT4 ، هكذا : Me.txt41 = Me.TXT4.Text 3. وبعدها ممكن عمل المعادلة Me.TXT5 = TXT3 * txt41 ، حيث الحقل TXT5 سيحصل على القيمة الصحيحة من الحقل TXT4 ، 4. ولكي تظهر قيمة مجموع حقل TXT5 ، فيجب حفظ قيمة السجل ، فعليه عندنا مجموعة طرق ، منها : DoCmd.RunCommand acCmdSaveRecord If Me.Dirty Then Me.Dirty = False Me.Refresh (ولكنها ستسبب في نقل المؤشر الى اول سجل ، فيجب التعامل معاها بطرق برمجية اضافية) Me.Requery (ولكنها ستسبب في نقل المؤشر الى اول سجل ، فيجب التعامل معاها بطرق برمجية اضافية) 5. وبسبب اننا تدخلنا في حفظ السجل ، فالمؤشر سيرجع لأول الحقل كلما ضغطنا على زر على الكيبور ، يعني لما تريد تكتب 25 ، سيظهر لك 52 ، لهذا السبب ، فيجب لما نضغط على اي زر ، يجب برمجيا ان نجعل المؤشر يذهب الى نهاية الحقل ، فيمكننا استعمال الامر SelStart ، والذي يجبر مكان المؤشر في الحقل ، فعندنا الطرق التالية لجعل المؤشر يذهب الى آخر الحقل : Me.TXT4.SelStart = Len(Me.TXT4) Me.TXT4.SelStart = vbKeyEnd والكود يصبح: Private Sub TXT4_Change() On Error GoTo err_TXT4_Change Me.txt41 = IIf(Len(Me.TXT4.Text & "") = 0, 0, Me.TXT4.Text) Me.TXT5 = TXT3 * txt41 DoCmd.RunCommand acCmdSaveRecord Me.TXT4.SelStart = Len(Me.TXT4) Exit_TXT4_Change: Exit Sub err_TXT4_Change: If Err.Number = 94 Or Err.Number = 13 Then Me.TXT5 = 0 DoCmd.RunCommand acCmdSaveRecord Else MsgBox Err.Number & vbCrLf & Err.Description End If End Sub جعفر 1491.AZIZ.accdb.zip
  15. وعليكم السلام 🙂 شغلك صح ، والنتيجة تتبدل لما تنتقل من السجل ، بمعنى آخر لما يتم حفظ السجل ، فاذا كنت مستعجل عليه ، وعلى حدث بعد التحديث للحقل تقدر تكتب التالي لحفظ السجل والمفروض تطلع لك النتيجة : if me.dirty then me.dirty=false جعفر
  16. وعليكم السلام اخوي سامي 🙂 اقول لك ، صاني لقيت جني خاش عمره تحت النموذج الفرعي ، للعلم 😁 عملت البحث فقط 🙂 جعفر 1490.‏‏‏‏devicesdb12 -9_00011.accdb.zip
  17. السلام عليكم 🙂 اسمح لي ارد على هذا الاقتراح ، وبالتفصيل ، فنيا ، وبالتجربة : 1. انا اعتبر تصفح ملف pdf الذي به صور ، كأني اتصفح ملف الموظف الورقي ، لا يمكنني البحث فيه ، فأقلبه صورة صورة ، حتى اصل الى الصورة اللي اريدها ، واذا اريد مقارنة/النظر في صورة اخرى ، فأتصفح زيادة الى ان اصل الى الصورة الثانية ، وهنا لا استطيع مقارنة هذه الصورة بالصورة السابقة!! يمكن استعمال ملف pdf في حال: انك لن تبحث عن صورة/رسالة/كتاب/شهادة معينة ، اي انك لا تحتاج الوصول الى صورة معينة من الملف ، وفي حال: انك لن تحتاج الى اضافة صورة جديدة وسط محتواه ، 2. ملف pdf يحتفظ بالصور بصيغة مضغوطة ، وهذه الصيغة تعتمد على نوع بيانات الصورة ، وهذا الضغط هو الذي يقلل من حجم ملف pdf ، مثلا انظر في مواصفات هذا البرنامج الذي يحفظ الصور في ملف pdf : . او حتى لما تريد تصدر التقرير بصيغة pdf ، عندك خيار الضغط (ولكن بطريقة اخرى) : . الضغط على الصورة يجعلها تفقد بعض وضوحها ، وخصوصا اذا كان الضغط كبير (حتى تصبح الصورة صغيرة) ، وتتجه المؤسسات الى الاعتماد على هذه المستندات للارشفة ، مع التخلص من الاوراق الاصليه (بعد مدة من الزمن) ، هناك ISO خاص لأرشفة الصور ، وفيها يجب ان تكون دقة الصور 300 ، 600 (الموصى به) ، او 2100 DPI ، والنقاوة يجب ان تكون اقصاها او اقل بقليل (يعني بدون ضغط او ضغط قليل) ، وصار مع احد المؤسسات التي اتعامل معها ، اشتروا سكانر جديد واستعملوه مباشرة وبدون ضبط اعداداته ، وتم استعماله في ارشفة الوثائق ، وبعد مدة طُلب منهم التحقق في الاسم الرابع لأحد الموظفين , كانت وثيقته بخط اليد ، ولم يتمكنوا من التأكد اذا كان الاسم تامر او ثامر ، بسبب ان دقة الصورة كانت صغيرة والضغط كبير ، فاضطروا لطلب نسخة ورقية اخرى من الموظف (كانت فترة الابقاء على النسخة الورقية للملف قد انتهت وتم تلفها). . 3. نعم اسهل في عمل ملف pdf واحد من السكانر يحتوي على مجموعة وثائق ، ولكن هناك صعوبة للوصول الى الوثيقة المطلوبة ، وبسرعة في ملف pdf (انظر ملاحظتي اعلاه) ، بينما الطريقة التي اتبعتها لبرنامج شؤون الموظفين ، هو نسخ الوثائق وحفظها صورة صورة بصيغة jpg ، برقم مسلسل ، والبرنامج لما يفتح النموذج الخاص بالموظف ، فتلقائيا النموذج يبحث في مجلد الموظف عن جميع الوثائق الموجودة ، وعليه نرى مثل هذه الواجهة : و فمسمى الحقل يتحول لونه الى اللون الازرق الفاتح اذا كانت هناك وثيقة/وثائق تخص هذا الحقل ، وعند النقر على المسمى ، تظهر لنا جميع الوثائق التي تخص هذا الحقل فقط : . (وهنا تجد نسخه من النموذج اعلاه لتصفح الصور : https://www.officena.net/ib/topic/84228-هدية-العيد-استعراض-صورصورة-بأحجام-مختلفة/ ) وهذا لا يمكن عمله مع ملف pdf ، فإذن استخدام ملف pdf ليس اسهل للوضول الى المعلومة مباشرة . 4. وحتى اسهل عليك ، اليك الدالة التي عملتها ، لتعمل اسم الملف بالتسلسل : Public Function Biggest_Value_in_Folder(ByVal Fldr As String, Pttrn As String, Digts As Integer, fle_Type As String) 'usage: 'Call Biggest_Value_in_Folder("D:\Temp", "EM_New_Section_Letter_Number_", 6, "jpg") Dim strFile As String If Len(fle_Type & "") = 0 Then fle_Type = "*" strFile = Dir(Fldr & "\" & Pttrn & "*." & fle_Type) 'Debug.Print strFile Do Until strFile = "" 'NumberOfFiles = NumberOfFiles + 1 If Val(right(strFile, Digts)) > Biggest_Value_in_Folder Then Biggest_Value_in_Folder = Val(right(strFile, Digts)) End If strFile = Dir() Loop End Function . وهكذا استعملها . 'the folder path newpathANDname = BE_Path & "\Scanned_Files\" & Me.Employee_ID 'if the Employee_ID Dir dose not exist, creat it If Dir(newpathANDname, vbDirectory) = "" Then MkDir newpathANDname End If 'get the Biggest Seq io this file type Biggest_Value = Biggest_Value_in_Folder(newpathANDname, "EM_New_Section_Letter_Number_", 6, "jpg") newpathANDname = newpathANDname & "\" & "EM_New_Section_Letter_Number_" x = Split(Me.Selected_Files, vbCrLf) For j = LBound(x) To UBound(x) If Len(x(j)) <> 0 Then 'existing jpg file path and name oldpathANDname = x(j) NumberOfFiles = NumberOfFiles + 1 Biggest_Value = Biggest_Value + 1 'copy the jpg file to the correct directory FileCopy oldpathANDname, newpathANDname & Format(Biggest_Value, "000000") & ".jpg" End If 'Len(x(j)) <> 0 Next j . جعفر
  18. وعليكم السلام اخي وليد 🙂 من تجربتي في المنتدى ، اذا يبقى السؤال بدون جواب لعدة ايام ، معناه ان هناك مشكلة في السؤال !! قرأت الموضوع ، ثم انزلت المرفق ، ثم اصبحت . . . . قلت الحمدلله ، لقينا طرف الخيط ، النموذج Form1 ، واذا به من كثرة الكائنات التي به وكثرة النماذج الفرعية ملاحظاتي على الموضوع: اتمنى انك عرفت الآن سبب وجود قانون في المنتدى: 8. يجب ذكر كافة المعلومات التي من الممكن أن تُسأل عنها، مع الشرح الوافي للمشكلة لأن الشخص الذي تكتب له ليس ملما بالمشكلة مثلك. ويحبذ وضع مثال للنتيجة التي تريدها (سواء كملف مرفق باستخدام البرنامج المطلوب كالاكسيل او الأكسيس مثلا، او صورة توضيحية، أو تفصيل المطلوب بشرح وافي)، ويجب ان تكون بيانات المثال نابعة من نفس بيانات المرفق كي بمكن الربط و الفهم بسهولة. 11. ممنوع طرح أكثر من سؤال في موضوع واحد واليك شرح المشكلة: 1. قرأت جميع مشاركاتك ، قلت الحمدلله ، لقينا طرف الخيط ، النموذج Form1 ، واذا به كم هائل من الكائنات النماذج الفرعية ، وهذا معناه انه يجب عليك اعادة النظر في التصميم ، وخصوصا انك قلت انك ستستخدمه كنموذج فرعي !! 15 زر 5 كمبوبوكس 4 نماذج فرعية ، و النماذج الفرعية فيها: 10 كومبوبوكس 4 نماذج فرعية هذا معناه ان النموذج يأخذ بياناته (يزور الجداول) = 5 + 4 + 10 + 4 = 23 مرة ، فالسؤال الذي يدور في بالي هو: لو كان هذا برنامجك على الشبكة ، فهل هذا النموذج سيفتح اصلا ، او الاكسس سيتوقف عن العمل ويصير له Hang !! 2. بغض النظر عن ما قلته في النقطة 1 اعلاه ، صرت انظر يمين وشمال في النموذج ، طيب اي زر من الـ 15 زر اللي فيه المشكلة؟ 3. وبسبب انه عندك اكثر من سؤال في المشاركة ، فصعب تحصل على العضو الذي يوجد لديه الوقت الكافي للإجابة عليها !! 4. ملاحظاتي اعلاه هي فقط عن النموذج Form1 ، ولم يكن لدي الجرأة النظر في اي نموذج آخر اقتراحي: 1. الحق على نفسك قبل فوات الاوان ، وقم بتبسيط هذا النموذج الى الحد الادنى من الكائنات ، 2. اعمل موضوع جديد ، وضع فيه سؤال واحد فقط ، وتخبرنا فيه اين المشكلة ، في اي نموذج ، واسم الكائن الذي به حدث كود ، وكيف تريد ان تكون النتيجة ، وبالتفصيل . هذا الموضوع مخالف ، فرجاء من الاعضاء عدم اضافة اجابة هنا ، وسأتركه مفتوحا حتى اتناقش فيه مع الاخ وليد ، حتى يتهيأ لعمل موضوع جديد جعفر للذي سيسأل عن هذه الاشكال ، اخذتها من هنا : https://emojis.wiki/telegram/
  19. اخي احمد ، اخر مشاركة قي هذا الموضوع كانت في 2016 ، فالافضل لك عمل موضوع جديد !! جعفر
  20. السلام عليكم 🙂 يتشرف منتدى الاكسس بالنيابة عن موقع اوفسينا وجميع الاعضاء ، ان نزف رتبة خبير الى الاخ موسى @Moosak ، والذي ذاع صيته كخبير من مشاركاته 🙂 اتمنى لك اخوي موسى دوام التقدم ، ولا تمد رجولك قد لحافك ، فلا تقبل بالارتقاء غير النجوم بدلا 🙂 جعفر
  21. وعليكم السلام 🙂 جميل اخوي الخبير موسى 🙂 جعفر
  22. وعليكم السلام 🙂 ما قادر ابلع ريقي من كثرتهم 🙂 جعفر
  23. السلام عليكم 🙂 اذن ، هذا هو الشرط : علشان نقدر نقارن نتائجنا: 1. رجاء تغيير الاختيار الى المواد التالية ، فالمواد السابقة مو كل شخص ماخذها ، فالحصر جزئي . 2. خلينا نستعمل التواريخ التالية في العمل: 15/7/2021 الى 13/3/2022 ، لأن فيها نتائج مناسبة 🙂 طريقتي فيها 3 استعلامات : 1. المواد التي تم اختيارها : . 2. جميع الاشخاص الذين استلموا المواد اعلاه خلال التاريخين اعلاه . ونلاحظ ان بعض الاشخاص مكرر اسمهم ، لأنهم ماخذين اكثر من مادة خلال هذه الفترة : . 3. واخيرا ، نربط بين جميع اسماء المستفيدين ، والاسماء الموجودة بين التالريخين ، ولكن نطلب الاسماء الغير موجودة بين التاريخين (BenId is Null) . والنتيجة ، 759 شخص يستحقون : . للتأكد : عدد جميع الاشخاص tbl_beneficiaries = 982 نزيل الاسماء المتكررة في الاستعلام qry_2_Between_Dates ، فيكون الاشخاص بين الفترتين = 223 . . اذن 982 - 223 = 759 شخص يستحقون 🙂 جعفر 1487.2.NotExists.accdb.zip
×
×
  • اضف...

Important Information