اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

نجوم المشاركات

  1. jjafferr

    jjafferr

    أوفيسنا


    • نقاط

      9

    • Posts

      9,814


  2. Ali Mohamed Ali

    Ali Mohamed Ali

    المشرفين السابقين


    • نقاط

      6

    • Posts

      11,630


  3. ناقل

    ناقل

    الخبراء


    • نقاط

      3

    • Posts

      558


  4. عبدالله بشير عبدالله

Popular Content

Showing content with the highest reputation on 07 فبر, 2021 in all areas

  1. مبروك الأستاذ محي الدين ابو البشر إنضمامك لعائلة الخبراء ,أسأل الله لك التوفيق والنجاح دائما ..وأعانك الله على هذه المسئولية الجديدة وسدد الله خطاك عن حق وجدارة بارك الله فيك وزادك الله من فضله
    3 points
  2. السلام عليكم 🙂 اذا عملنا برنامج على الاكسس 32بت ، وفيه مكتبات الوندوز الـ 32بت (لاحظ الرقم 32 في اسم المكتبة: comdlg32.dll) ، ثم شغلنا البرنامج على اكسس 64بت ، فنحصل على هذا الخطأ : . يوجد ملف في موقع مايكروسوف (مرفق نسخة Win32API_PtrSafe.zip) ، وفيه طريقة عمل مناداة النواتين : https://www.microsoft.com/en-us/download/details.aspx?id=9970 وتوجد مواقع مجهزة الكود للنواتين ، مثل (فقط ابحث عن الدالة ، واعمل نسخ/لصق للكود) : http://www.jkp-ads.com/articles/apideclarations.asp ------------------------------------------------------------------------------------------------------------------ ولكني هنا سأناقش كيف يمكننا تعديل المكتبة بدون الرجوع لهذه الروابط (للأسف ، سنضطر للرجوع لهذه الروابط لبعض المكتبات) !! والدوال التي استعملها هنا ، هي كأمثلة فقط ، والطريقة التي سنعمل بها هي ، ان نضع برنامج 32بت فيه الدالة ، ثم نفتح البرنامج بالاكسس 64بت ، ونبدأ نلاحق الاخطاء ونصلحها. وهناك 3 احتمالات فقط ، وسنناقشها جميعا ان شاء الله 🙂 الخطوة الاولى والاهم هي اضافة كلمة PtrSafe بعد كلمة Declare ، للنواتين 32بت و 64بت. أ. الدالة : Sleep نناديها بنواة 32بت هكذا : Private Declare Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long) وهنا مثال لعملها : 1.Sleep.32bits.accdb.zip عندنا الطرق التالية (وجميعها تعمل وصحيحة) لنبدا العمل لجعل المكتبة تعمل على النواتين 32بت و64بت (وستكون طريقة عملنا بأحد هذه الطرق لجميع المكتبات) : نلاحظ ان الفرق بين كود 32بت (اعلاه) ، واول كود 64بت (ادناه) هو اضافة كلمة PtrSafe بعد كلمة Declare ، والتي يقبلها نظام 32بت كذلك ، وفي الطرق الثلاثة التالية ، نستخدم نفس الكود رقم 1 ، ولكننا نغلفه بالامر IF# ، ولهذا المثال ، سوف استخدم الطريقة رقم 3 : '1 'Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long) '2 '#If VBA7 Then ' Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long) '#Else ' Public Declare Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long) '#End If '3 #If VBA7 And Win64 Then Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long) #Else Public Declare Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long) #End If '4 '#If Win64 Then ' Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long) '#Else ' Public Declare Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long) '#End If . ولكن ، لما نفتح الكود في الاكسس 64بت ، نلاحظ انه جعل كود 32بت باللون الاحمر : . على الرغم من البرنامج عمل لنا هذا السطر باللون الاحمر ، إلا ان الكود يعمل بطريقة صحيحة ، فلا تهتم به ، وبعد كل خطوة نعملها ، يجب ان نعمل Compile : حتى نعرف الخطأ التالي ، ونعدل عليه 🙂 ولما ما نحصل على خطأ ، فهنا نبدأ بتجربة البرنامج (على والاكسس 64بت ، والاكسس 32بت) ، حتى نتأكد بأنه يعمل بالطريقة الصحيحة ، والحمدلله ، هذه الدالة اصبحت جاهزة للعمل بالنواتين بهذا التغيير ، وتم تجربة الملف المرفق على النواتين🙂 وهذه النسخة بعد تحديثها للعمل على النواتين 32بت و64بت : 1.Sleep.64bits.accdb.zip ------------------------------------------------------------------------------------------------------ ب. الدوال: GetSystemDirectory ، GetWindowsDirectory ، GetTempDir نواة 32بت : Private Declare Function apiGetSystemDirectory& Lib "kernel32" _ Alias "GetSystemDirectoryA" _ (ByVal lpBuffer As String, ByVal nSize As Long) Private Declare Function apiGetWindowsDirectory& Lib "kernel32" _ Alias "GetWindowsDirectoryA" _ (ByVal lpBuffer As String, ByVal nSize As Long) Private Declare Function apiGetTempDir Lib "kernel32" _ Alias "GetTempPathA" (ByVal nBufferLength As Long, _ ByVal lpBuffer As String) As Long والبرنامج : 2.System_Directories.32bits.accdb.zip 64بت، خطوات التعديل ، بإضافة PtrSafe فقط: Private Declare PtrSafe Function apiGetSystemDirectory& Lib "kernel32" _ Alias "GetSystemDirectoryA" _ (ByVal lpBuffer As String, ByVal nSize As Long) Private Declare PtrSafe Function apiGetWindowsDirectory& Lib "kernel32" _ Alias "GetWindowsDirectoryA" _ (ByVal lpBuffer As String, ByVal nSize As Long) Private Declare PtrSafe Function apiGetTempDir Lib "kernel32" _ Alias "GetTempPathA" (ByVal nBufferLength As Long, _ ByVal lpBuffer As String) As Long وعمل البرنامج بشكل صحيح للنواتين : 2.System_Directories.64bits.accdb.zip ------------------------------------------------------------------------------------------------------ ج. الدالة: EnumFontFamilies عرض الخطوط fornts في مربع تحرير وسرد في الاكسس - قسم الأكسيس Access - أوفيسنا (officena.net) لأخونا @kanory 🙂 32بت : Private Declare Function EnumFontFamilies Lib "gdi32" Alias "EnumFontFamiliesA" (ByVal hdc As Long, ByVal lpszFamily As String, ByVal lpEnumFontFamProc As Long, lParam As Any) As Long Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long Private Declare Function GetFocus Lib "user32" () As Long والبرنامج: 4.Kan_Fonts.32bits.accdb.zip 64بت، خطوات التعديل ، بإضافة PtrSafe فقط: Private Declare PtrSafe Function EnumFontFamilies Lib "gdi32" Alias "EnumFontFamiliesA" (ByVal hdc As Long, ByVal lpszFamily As String, ByVal lpEnumFontFamProc As Long, lParam As Any) As Long Private Declare PtrSafe Function GetDC Lib "user32" (ByVal hwnd As Long) As Long Private Declare PtrSafe Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long Private Declare PtrSafe Function GetFocus Lib "user32" () As Long - لما نعمل Compile نحصل على الخطأ في السطر التالي: . اذن الخطأ في المتغير الثالث من الدالة EnumFontFamilies ، والذي نوعه Long ، فيجب تغييره في الدالة الى LongPtr ، الخطوة الثانية تغيير النوع Long الى LongPtr في الدالة وطبعا اذا عملنا التغيير على السطر اعلاه، فالنواة 32بت ستعطيك خطأ هنا ، لذا يجب تغليف الدالة بالامر IF# ، هكذا : . وعند عمل Compile مرة اخرى ، لا نحصل على خطأ ، والبرنامج يعمل بطريقة صحيحة ، البرنامج يعمل بطريقة صحيحة : 4.Kan_Fonts.64bits.accdb.zip ------------------------------------------------------------------------------------------------------ د. دعوة لتجربة الاصدار الثالث من برنامج القران الكريم - صفحه 2 - قسم الأكسيس Access - أوفيسنا (officena.net) برنامج الذكر الحكيم لأخونا @ابا جودى 🙂 برنامج 32بت: 5.الذكر الحكيم V. 3.0.2.32bits.mdb.zip وقبل تشغيله على 64بت ، نضيف الامر PtrSafe الى جميع الدوال ، سواء لنواة 32بت او 64بت (ومنها تم عمله) ، ومنهم : Private Declare Sub ChooseColor Lib "msaccess.exe" Alias "#53" (ByVal hwnd As Long, clr As Long) '---color Picer الى Private Declare PtrSafe Sub ChooseColor Lib "msaccess.exe" Alias "#53" (ByVal hwnd As Long, clr As Long) '---color Picer والنتيجة تمام : 5.الذكر الحكيم V. 3.0.2.64bits.mdb.zip ------------------------------------------------------------------------------------------------------ هـ. عندما يعطي برنامج الاكسس اخطاء - النسخة رقم 3 - قسم الأكسيس Access - أوفيسنا (officena.net) مع ان الوحدة النمطية Shell_n_Wait تم اخذها من هذا الموقع : https://github.com/xxdoc/vb6-Shell-Wait/blob/master/Shell %26 Wait v2/modShellWait.bas والتي تم عملها للنواتين 32بت و64بت ، ولكن لايزال البرنامج يعطي اخطاء في بيئة 64بت ، فنفتحة في برنامج 64بت ، نضيف الامر PtrSafe الى جميع الدوال ، ونعمل Compile ، وجدنا خطأ ، ونلاحظ اننا ننادي الدالة MoveWindow والتي تعطي قيمتها الى المتغير retval : . والآن لنرى الدالة نفسها ، ولكن الدالة جاهزة من الاصل للنواة 64بت ، ولا تحتاج الى تعديل : . وبعد التمعن ، نرى ان الخطأ موجود في نوع المتغير retval ، حيث اننا اعلنا انه Long ، بينما في بيئة 64بت نلاحظ انه LongPtr ، فالحل يكون ، اما ان نعمل IF# في الكود الاول ، واما ان نوقف الاعلان في الكود الاول ، ونضيفه في الكود الثاني ، كل حسب نوعه ، وانا سأعمل المقترح الثاني: #If VBA7 Then Declare PtrSafe Function MoveWindow Lib "User32.dll" (ByVal HWnd As LongPtr, ByVal X As LongPtr, ByVal Y As LongPtr, ByVal nWidth As LongPtr, _ ByVal nHeight As LongPtr, ByVal bRepaint As LongPtr) As LongPtr Public retval As LongPtr #Else Declare Function MoveWindow Lib "User32.dll" (ByVal HWnd As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, _ ByVal nHeight As Long, ByVal bRepaint As Long) As Long Public retval As Long #End If . نعمل Compile مرة اخرى ، لنحصل على الخطأ التالي: . والدوال: . فالحل هو ان نغلف الدوال بالامر IF# ، ونجعل بيئة 64بت ان يكون LongPtr ، فقط للمتغير الاول لهذه الدالة ، . نعمل Compile مرة اخرى ، لنحصل على الخطأ التالي: . والتعديل : . وهكذا الى بقية الاخطاء المشابهة ..... الخطأ التالي ، والغير عن الاخطاء اعلاه : . بالبحث ، لا نجد له دالة ، وانما نجد انه تم الاعلان عنه: . فيجب حذفه من هذا الاعلان ، وإضافته الى التغليف IF# ، فيكون اعلاه للبيئة 32بت ، واما للنواة 64بت فيكون LongPtr ، وبعد جميع التعديلات ، تكون النسخة تعمل على النواتين ، كما في المرفق: عندما يعطي برنامج الاكسس اخطاء - النسخة رقم 4 + عمل نسخ احتياطية - قسم الأكسيس Access - أوفيسنا (officena.net) ------------------------------------------------------------------------------------------------------ واخيرا: و. دالة فتح نافذة اختيار/حفظ الملف: GetOpenFileName و GetSaveFileName والتعديل على هذه الدوال لا يعتمد على التغليف IF# ، وجعل الاعلان عن المتغير فيه ، ونما نحتاج الى تغيير Len الى LenB ، ونحتاج الى تعديل هذه الجزئية كذلك: . وهذا الملف للنواتين: 9.Allow_ByPass_Key.64bits.mdb.zip بهذه الطرق ، نستطيع ان نحول برامجنا لتعمل على نواتي اكسس 32بت و64بت 🙂 الموضوع فني بحت ، وتحتاج ان يكون عندك نواتي اكسس ، حتى تعدل على النواتين ، ثم تجربهم الاثنين 🙂 ------------------------------------------------------ وهناك طريقة ثانية ، اعتقد بأنها اسهل واستعملها دائما : جعفر 1.Sleep.64bits.accdb.zip 1.Sleep.32bits.accdb.zip Win32API_PtrSafe.zip
    2 points
  3. تفضل ، ووضعت كود (في الواقع هو لأخي احمد 🙂 ) يوقف تجديد/تحديث الشاشة ، ويقوم بتصفية النموذج والحقول ، ثم يُفعل تجديد/تحديث الشاشة ، فلا ترى ما يحدث 🙂 Me.Painting = False Me.DataEntry = False Me.DataEntry = True Me.Main_iDate = Null Me.Main_iBill_Number = Null Me.Main_iStore_Number = Null Me.Painting = True جعفر
    2 points
  4. جرب هذا الكود ، فهو يلغي خاصية ادخال البيانات ، ثم يُفعلها مرة اخرى ، ولا يغلق النموذج : Me.DataEntry = False Me.DataEntry = True جعفر
    2 points
  5. مبارك عليكم الترقية تستحقها بجدارة وفقكم الله
    2 points
  6. تفضل ربما هذا هو طلبك .... تجربة.rar
    2 points
  7. السلام عليكم ورحمة الله الف مبروك الترقية الى مزيد من الترقى و التفوق ان شاء الله
    2 points
  8. الف الف مبروووك الترقيه وبالتوفيق ان شاء الله
    2 points
  9. استاذي العزيز @احمد الفلاحجي تم تطبيق مثالك ما تكرمت به علينا على برنامجي وما شاء الله الامور طيبة فجزاك الله خيرا وبارك فيك وفي علمك واهلك ومالك واولادك انت وكل من يعاون مع اخوانه في هذا المنتدى الطيب
    1 point
  10. 1 point
  11. الف مبروك الترقية للاستاذ محي الدين ابو البشر اتمنى لك التوفيق وطول العمر
    1 point
  12. الف مبروك استاذ محى وفقكم الله تعالى على هذه المسئوليه الجديده
    1 point
  13. جزاك الله خيرا معلمنا العزيز @jjafferr وبارك الله لنا فيك 💐
    1 point
  14. تفضل التعديل اخي الكريم سيتم تنبيه المستخدم في حال الاستخدام وصل الى 100 مرة و للاستمرار يجب ادخال مفتاح الترخيص للاستمرار مفتاح الترخيص هو 123 تستطيع التعديل عليه DATA12.mdb
    1 point
  15. وعليكم السلام-كان عليك استخدام خاصية البحث بالمنتدى-تفضل برنامج مجاني علي الاكسيل لاقرار ضريبة القيمة المضافة وهذا نموذج أخر نموذج_ضريبة_القيمة_المضافة_في_السعودية.xlsx
    1 point
  16. السلام عليكم ورحمة الله وبركاته نبارك لأخينا الكريم @محي الدين ابو البشر الترقية لدرجة خبير وفقكم الله تعالى لما يحب ويرضى وإلى المزيد من التقدم والعطاء والسلام عليكم
    1 point
  17. كل الشكر للجميع على هذه الثقة ,أتمنى أن أكو ن على قدر هذه المسئولية Ali Mohamed Ali، ابو طيبه، ابراهيم الحداد، عبدالله الصاري
    1 point
  18. وعليكم السلام-بسيطة اجعل المعادلة بالخلية F42 بالجدول الأول هكذا , ويجب عليك تعميم هذه المعادلة على باقى الجداول -تفضل =IF(SUM(F9:F39)>26,26,SUM(F9:F39)) 1رواتب واجور2021 - يناير.xlsx
    1 point
  19. جرب هذه المحاولة لعله المطلوب print hidden first three rows.xlsm
    1 point
  20. وفيك بارك الله هذا ليس باهتزاز بل هو إغلاق وفتح النموذج
    1 point
  21. وعليكم السلام ورحمة الله وبرماته تفضل اخي الكريم Private Sub Command33_Click() If Me.XFrame = 1 Then Me.d2 = Me.PaymentDate Me.n1 = DateDiff("d", [d1], [d2]) Else Me.d2 = DateAdd("d", 30, [PaymentDate]) Me.n1 = DateDiff("d", [d1], [d2]) End If End Sub Private Sub XFrame_Click() Call Command33_Click End Sub Database12021.rar تحياتي
    1 point
  22. مثال أجنبي قديم نشره أحد عمالقة الأكسس "أبو هاجر" في منتدى الأكسس بموقع الفريق العربي للبرمجة. ملف مدير النظام LogUsersOff_be.accdb يقوم فيه بتبديل قيمة حقل Logoff في الجدول Settings كل قواعد البيانات على الشبكة مربوطة بهذا الجدول للإختبار: - افتح نسخة مدير النظام وبدل قيمة الحقل إلى No ودعها مفتوحة. - ثم افتح نسخة المستخدم LogUsersOff.accdb ودعها مفتوحة. - ارجع لنسخة مدير النظام وبدل قيمة الحقل إلى Yes - ارجع لنسخة المستخدم وانتظر ، ستتلقى رسالة تنبيه ثم بعد مضي فترة المهلة ستقفل النسخة. - حاول تفتح نستخة المستخدم بعد أن آغلقت تلقائيا ، ستتلقى رسالة أن البرنامج تحت الصيانة. - لن يتمكن المستخدمون من فتح البرنامج حتى يبدل مدير النظام قيمة الحقل إلى No. جربوه. LogUsersOff.rar
    1 point
  23. شكرا وجدت الحل Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range("g7")) Is Nothing Then Call langue_FR Else Call langue_arab End If End Sub
    1 point
  24. بالنسبة للفورم كما اشرت سابقا انه للعلامة عبدالله باقشير والفورم له اكثر من اصدار اخرها الاصدار الرابع وبه اظهار الصور التكست بوكس مرن كلما اضفت عمود في الصفجة مع تحديد النظاق يقوم الفورم بفتح تكت بوكس جديد كما في الصورة, لعمل قائمة منسدلة وذلك عن طريق ادراج تعليق في الخلية بالنسبة للتوسيط تم تعديله رابط الموضوع الرئيسي الاصدار الثالت والرابع ,عند تجمبل الملف تجد شرحا لاستحذام الفورم https://www.officena.net/ib/topic/52300-امثلة-على-طباعة-السجل-من-فورم-ادخال-وتعديل-وبحث/ https://www.officena.net/ib/topic/52482-الاصدار-الرابع-فورم-اضافة-وبحث-وتعديل-مرن-مع-استعراض-الصور-تحكم-كامل-بالصورة/ اتمنى اني قدمت ما يفيد yousef.xlsb
    1 point
  25. وعليكم السلام-أهلاً بك فى المنتدى -يمكنك استخدام هذه المعادلة لحساب التأخير =IF($D10<$M$12,"",(D10-$M$12)) وهذه لحساب الإضافى =IF(F10=0,"",IF($E10<$M$13,0,$E10-$M$13)) وتم وضع المعادلات بالجدول الأول , فعليك بتعميم هذه المعادلات بباقى الجداول رواتب واجور2021 - يناير.xlsx
    1 point
  26. Version 1.0.0

    627 تنزيل

    السلام عليكم 🙂 لعمل برنامجك ، فلا يكفي ان تجربه على بضع سجلات ، وانما يجب تجربته على اكبر قدر ممكن من السجلات ، وخصوصا اذا كان برنامجك سيعمل في شبكة 🙂 لذا ، انزل هذا الملف الى مكتبتك ، واعمل منه نسخة لكل تجربة تريد تعملها 🙂 لا اذكر من اين انزلت هذا الملف ، ولكنه من الملفات المفيدة جدا 🙂 قاعدة البيانات هذه ، تحتوي على بيانات وهمية ، وحجم الملف المضغوط حوالي 30 ميجابايت ، بينما عند فك الضغط يكون حجم الملف حوالي 219 ميجابايت ، يمكن انزال برنامج مجاني من هذا الرابط لكي تفك ضغط الملف (انا استعمله كأحد برامجي الاساسية 🙂 ) : https://www.7-zip.org/ جعفر
    1 point
  27. السلام عليكم ورحمة الله إليك أول محاولة باستعمال الدالتين INDEX و MATCH على شكل صيغة صفيف Matrice ={INDEX($D$2:$D$103;EQUIV(1;($A$2:$A$103=G3)*($B$2:$B$103=H3);0))} وتطبيقها في الملف المرفق... أكيد سيكون هناك حلول أخرى... ملاحظة : معادلة الصفيف نؤكدها بالضغط على : ctrl + shift + enter أخوك بن علية A Q ID.rar
    1 point
×
×
  • اضف...

Important Information