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

كيف نجعل البرنامج يعمل على النواتين 32-64


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

السلام عليكم

مرفق مثال مصغر          عند البحث فى المنتدى

يوجد كثير من الاسئلة حول هذا الموضوع ووجد موضوع استاذنا الفاضل / جعفر يشرح كيف تجعل برنامج يعمل على النوايتين ـ ولكن للاسف بعض الامور لم افهمها لانى ضغيف جدا فى الاكسس

ولذلك ارجو ان يعمل المثال المرفق على النواتين 32 -64 مثل برنامج استاذنا الفاضل / جعفر

وانا استخدم 32 بت ولكن عندى لاب به 64 فسوف اجرب على الاثنين

جزاكم الله خير

نسيت ارفق المثال

النواتين 32 و 64.accdb

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

50 دقائق مضت, الحلبي said:

يوجد كثير من الاسئلة حول هذا الموضوع ووجد موضوع استاذنا الفاضل / جعفر يشرح كيف تجعل برنامج يعمل على النوايتين ـ ولكن للاسف بعض الامور لم افهمها لانى ضغيف جدا فى الاكسس

اى برامج يتم تصميمها بالشكل الطبيعى تعمل على النواتان يا دكتور بدون اى مشاكل 

 

اما الاكواد والتى تعتمد الربط الديناميكى Dynamic Link Libraries اى التى تعتمد على ما نسميه بملفات DLL
بناء على دوال API  أى Application Programming Interface  يعنى واجهة برمجة التطبيقات

مثلا مثل 

Private Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hWnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long

هى التى تحتاج الى معاملة من نوع خاص لاعادة صياغتها لتعمل على النواتان

وهذا ما تناوله استاذى القدير و معلمى الجليل الاستاذ @jjafferr  فى موضوعه

 

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

29 دقائق مضت, ابو جودي said:

وهذا ما تناوله استاذى القدير و معلمى الجليل الاستاذ @jjafferr  فى موضوعه

استاذنا الفاضل ومعلمى القدير الباشمنهدس ابو جودى 

كنت متوقع حضرتك تدخل او الاستاذ الفاضل / @ابوخليل وانتما كثيرا ماتقدمون المساعدة لامثالى

حضرتك تشرح لى وكانى فى السنة النهائية فى كلية اكسس

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

ياريت حضرتك لو تكرمت تضع هذا الكود فى المثال المرفق

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

مثل ما أشار عليه أستاذى ابو جودى 

 

( اى برامج يتم تصميمها بالشكل الطبيعى تعمل على النواتان يا دكتور بدون اى مشاكل  )

الملف المرفق يعمل على النواتين

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

الكود الذي اشار اليه استاذنا محمد عصام @ابو جودي يعمل على النواة 32 بت

اما اذا اردت تحويله الى نظام يعمل على 64 بت ..في رأيي تعمل نسخة ثانية ..فتصبح الدالة كما يلي :

Private Declare ptrsafe Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hWnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long

'طبعا هناك برامج متقدمة تستطيع فيها ان يعمل نفس البرنامج على 32 بت او 64 بت ..مثل

#If VBA7 And Win64 Then
    'x64 Declarations
    Private Declare PtrSafe Function apiGetUserName Lib "advapi32.dll" Alias _
            "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
#Else
    'x32 Declaration
    Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
            "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
#End If

تحتاج منك الاطلاع والقراءة ..وهناك الكثير في المنتدى مما تطيب لها نفسك 

تحياتي دكتور

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

6 ساعات مضت, محمد احمد لطفى said:

مثل ما أشار عليه أستاذى ابو جودى

استاذ / محمد احمد لطفى هذا مثال صغير انا عملته صغير ومختصر لذلك يعمل على النواتين اما البرنامج الذى اعمل عليه كبير جدا ولا يعمل على 64 بت ولكن يعمل على 32 بت

 

4 ساعات مضت, Eng.Qassim said:

اما اذا اردت تحويله الى نظام يعمل على 64 بت ..في رأيي تعمل نسخة ثانية ..فتصبح الدالة كما يلي :

استاذى ومعلمى القدير / قاسم

ان اريد ان يعمل على النواتين بمعنى عندى جهاز 32 بت يعمل بدون مشاكل ولو نقلته على جهاز 64 يعمل بدون مشاكل

هل الكود الذى حضرته ارفقته يعمل على النوايتن ام انه يعمل على 64 فقط

جزاكم الله خير على المدخله والاجابات المفرحة

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

دكتور @الحلبي سأحاول تبسيط المسألة لك بأبسط شرح ممكن أن تحصل عليه 🙂 

* لكي يعمل عندك البرنامج على النواتين في نفس الوقت ... في الأغلب أنت ستحتاج تغيير نوع محدد من الأكواد ..

وهي الأكواد التي تأتي كلمة  ......... Declare ............. في سياقها ..

 

لكي يعمل الكود على النواة 32 يكتب الكود هكذا :

 .....................................Private Declare Function

ولكي يعمل الكود على النواة 64 يتم إضافة كلمة واحدة وهي ptrsafe بعد كلمة Declare فيصبح  الكود هكذا :

 ................................... Private Declare ptrsafe Function

ولكي تجمع بين هذين الخيارين من أجل أن يعمل البرنامج على الأجهزة المختلفة مهما كانت النواة يتم كتابتهما معا هكذا :

#If VBA7 And Win64 Then
    'For :64
    Private Declare PtrSafe Function apiGetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
#Else
    'For :32
    Private Declare Function apiGetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
#End If

 

وهذا هو مختصر المختصر 🙂 

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

2 ساعات مضت, Moosak said:

وهذا هو مختصر المختصر 🙂 

رائع جدا وجميل جدا هذا الشرح اين انت من زمان اشكرك معلمنا الفاضل @Moosak

واين اضع هذا الكود 

جزاك الله كل خير وبارك فيك ورزقك من غير حساب

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

24 دقائق مضت, الحلبي said:

واين اضع هذا الكود 

دكتورنا @الحلبي .. هذه العملية التي وضحتها لك تعملها فقط لو أنت مستخدم في برنامجك هذا النوع من الأكواد ..

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

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

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

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

https://learn.microsoft.com/ar-sa/office/client-developer/shared/compatibility-between-the-32-bit-and-64-bit-versions-of-office

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

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

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

Important Information