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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    404

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

  1. وعليكم السلام 🙂 تفضل ، استورده من النموذج 🙂 او استورد برنامجك الى المرفق 🙂 جعفر 1339.Microsoft Forms 2.0 ScrollBar.accdb.zip
  2. السلام عليكم 🙂 لمعلومات اكثر وافضل ، رجاء مراجعة الرابط التالي: جعفر
  3. حيالله اخوي ابومحمد ، صار لنا زمان ما شفناك 🙂 الرابط اللي انت وضعته ، موجود في اول رابط انا وضعته في مشاركتي السابقة ، فما ناسينك 🙂 . جعفر
  4. السلام عليكم 🙂 اذا عملنا برنامج على الاكسس 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
  5. اخي @ابا جودى وانا اعمل على موضوع تحويل البرامج 32بت الى 64بت ، هنا: تذكرت برنامجك الجميل ، وعملت فيه التعديل ، حتى يتسنى للجميع سماع صوت القرآن الكريم ، فشكرا لك 🙂 هذه النسخة تعمل على النواتين 32بت و 64بت 🙂 جعفر 2088803625_5.V.3.0.2.64bits.mdb.zip
  6. كنت اعتقد بأني عملت المطلوب !! انا عادة ما انسحب ، ولكني في هذه الحالة انسحب واترك المجال لغيري ، لعله يفهم طلبك ، ويساعدك !!
  7. وعليكم السلام 🙂 هل استفدت من الروابط لربط الاكسس بقاعدة بيانات SQL server؟ جعفر
  8. هل تعلم ، انك لما وتريد تعمل نسخة من سجل ، فكل اللي عليك عمله هو الضغط على القطعة هذه ، ثم بالكيبورد تعمل نسخ Ctrl+C . ثم تنقر على المربع اللي تحته (عليه علامة * ) ، ثم تلصق بازرار الكيبورد Ctrl+V ، فيتم نسخ السجل كاملا الى سجل جديد (اعمله لعدد السجلات التي تريدها) ، واذا اردت ان تحذف سجل ، فكذلك انقر على مربع السجل (او السجلات) ، ثم اضغط على زر الكيبورد Del لتحذفها (ستخرج لك رسالة لتأكيد العملية) 🙂 انت قلت في ملف الاكسل : بينما الطريقة اللي عملت لك البرنامج ، كل سجل تكتبه ، يتم حفظه مباشرة ! لهذا السبب قلت لك من البداية : اليك هذه الطريقة لنسخ السجل الذي انت عليه الى سجل جديد ، فقط انقر على الزر "انسخ" ، وسوف يعمل يكرر السجل Duplicate الذي انت عليه 🙂 جعفر 1311.9.DATA12.mdb.zip
  9. وعليكم السلام 🙂 هذا الرابط به مجموعة روابط لموضوعك : أكسس و اسكيوال سيرفر Access with Sql Server - قسم الأكسيس Access - أوفيسنا (officena.net) و جعفر
  10. وعليكم السلام 🙂 افتح الاكسس ، ثم افتح محرر الاكواد VBE بالضغط على ازرار الكيبور هكذا Ctrl+G ، وثم اضغط على زر الكيبورد F1 ، ثم اكتب عن اي امر تريده ، فيعطيك الاكسس التفاصيل والامثلة 🙂 واذا تريد بعد زيادة ، ففي محرر الاكواد اضغط على F2 🙂 جعفر
  11. لا مو واضح!! الافضل ان تعمل مثال على الاكسل مثلا ، ويمكن لبكرة الصباح يكون احد الاعضاء شاف وفهم المثال ، وعمل لك ما تريد 🙂 اما انا ، فحان وقت اقفل المحل 😁 جعفر
  12. انت عندك 6 حقول : 3 حقول منهم ثابته: التاريخ والرقم والمخزن ، والبرنامج تلقائيا يعبئهم لك لما تخرج من السجل ، 3 حقول متغيرة: الاسم والمبلغ والحساب ، فهل تريد ان تعمل 30 سجل (مثلا) من هذه المعلومات ؟ فيكون عندك 30 سجل ، لا فيهم الاسم ولا المبلغ ولا الحساب ، ويكون فيهم التاريخ والرقم والمخزن ؟
  13. شو هي المشكلة اللي تريد لها حل ؟ وسؤال، هل تحصل على هذه القائمة من ملف معين ، اكسل او وورد او ملف نص؟ اذا الجواب نعم، فنعم ممكن ان نستوردها 🙂 جعفر
  14. وعليكم السلام 🙂 العمل بهذه الفكرة غير صحيح !! ثم انك لن توفر اي وقت اضافي (غير الضغط على زر Tab ثلاث مرات لكل سجل) !! جعفر
  15. 🙂 انت قلت : والآن تقول : جعفر
  16. وعليكم السلام 🙂 ضع هذا الكود على حدث "فتح التقرير" Private Sub Report_Open(Cancel As Integer) Me.OrderBy = Forms!form3.form1.Form.OrderBy Me.OrderByOn = True End Sub جعفر
  17. السلام عليكم 🙂 رجاء اختيار الاجابة التي استعملتها كـ "أفضل إجابة" 🙂 جعفر
  18. اهلا وسهلا بك في المنتدى 🙂 وظاهرا انك كنت مستعجل وما قرأت قوانين المنتدى : اضغط هنـــــــــامن فضلك لقراءة القواعد كاملة هذا القسم من المنتدى ، قسم الاكسس ، هو لتبادل المعلومات ونشر المعرفة ، بمعنى آخر ، تضع سؤالك ويقوم الاعضاء بمساعدتك بالرد عليك ، وبدون مقابل ، ويستفيد بقية الاعضاء من هذه المعلومات ، والاتصال المباشر عن اي طريق غير المنتدى ، يُعد مخالف ، اما اذا اردت التواصل المباشر مع الاعضاء ، وارسال الملفات بينكم ، فرجاء فتح موضوع جديد في قسم : إعلانات شخصية بأجر للاعضاء ولا تنسى كتابة وسيلة الاتصال بك ، حتى يتواصل معك الاعضاء 🙂 يُغلق 🙂 جعفر
  19. نعم ، ولكن اذا كان برنامجك كبير ، واثناء العمل ، انقطعت الكهرباء او اخترب الهارددسك او شيء من هذا القبيل !! جعفر
  20. رحم الله والديك اخوي ابوخليل 🙂 جعفر
  21. حتى يتم تطبيق كود الاحداث الكود ينادي الدالة MovCenter ويرسل لها معلومتين لهما علاقة بإرتفاع النافذة وعرضها لا ادري ، لم اتطلع على الكود ، وحتى لو اتطلعت عليها ، فقد تكون الدالة تنادي دالة ثانية ، وهكذا 🙂
  22. وعليكم السلام 🙂 1. في الكثير من الدوال ، اعرف طريقة ارسال البيانات لها ، وهي تقوم بالعمل ، فمالي شغل في كيفية عملها ، لأنه موضوع فني بحت لا ناقة لي فيه ولا جمل 🙂 2. لا تلمسها ، فالكود ذو الالف سطر الذي استعمله انا في جميع برامجي ليربط الواجهة بالجداول ، طوله لا تأثير له على الاكسس (نعم يظل في الذاكرة ، ولكنه لا يُذكر) ، 3. يعتمد من وين اخذت الكود ، فبعض المبرمجين عندهم هواية تجميع الدوال الخاصة ، وبعد التجربة يرون ان احد هذه الدوال افضل/اسهل من الاخرى ، فيتركون الباقي في البرنامج ، سواء لإستعمالهم لاحقا او ان في الكود جزئية معينه قد يحتاجون لها لاحقا 🙂 جعفر
  23. وعليكم السلام 🙂 افهم من كلامك ، انه عندك فيديو فيه حركه معينه ، وتسأل اذا الاكسس يمكنه متابعة هذه الحركة وحفظ معلوماتها (محور السين ومحور الصاد) ، وعليه يعمل رسم بياني من هذه البيانات !! يعني يعمل motion tracking لأجزاء معينه من الفيديو ، ويحولها الى motion file !! حسب علمي انه لا يمكن عمل هذا في الاكسس (او اي برنامج أخر غير متخصص في الفيديو) !! وببحث سريع ، حصلت لك على هذا الرابط : GitHub - HW140701/VideoTo3dPoseAndBvh: Convert video to the bvh motion file جعفر
  24. اخوي ابوخليل ، ظاهرا انك ما لاحظت وجود هذا الحقل المخفي ، واللي يأخذ قيم مربعات سرد "نوع العدد" ، سواء اللي فوق او اللي تحت : . . واستعلامات البرنامج تأخذ قيمها من حقول هذا النموذج ، فمجرد عمل نموذج واجهة آخر لن يجعل البرنامج يعمل ، واذا اردناه ان يعمل ، فيجب عند اختيار اي من الحقول في النموذج الجديد ، ان نرسل القيمة الى الحقل في النموذج القديم (اجعله مفتوح ومخفي) ، ومن ثم نشغل النماذج او التقارير 🙂 لماذا اجعل برامجي تعمل هكذا ؟ حتى لا اعمل عشرات الاستعلامات ، وكل استعلام يعمل لنموذج معين فقط ، بينما بالطريقة هذه ، فمهما عملت من نماذج ، ارسل قيمها لنموذج الواجهة ، ونفس الاستعلام يعمل لجميع النماذج/التقارير ، لأن معيارها هو نموذج الواجهة المفتوح دائما 🙂 جعفر
  25. معلش بشمهندس ، خلينا نرجع لهذه النقطة ، فجميع من عمل عليها ، تم حل مشكلته ، فرجاء التأكد من عملها بطريقة صحيحة (او اعملها مرة ثانية ، ولا تنسى ان تفتح CMD بصلاحية المسؤول) ، ثم اعد تشغيل الكمبيوتر/السيرفر 🙂 الظاهر لا ، فالتحديث يشمل جميع اصدارات الويندوز !! جعفر
×
×
  • اضف...

Important Information