Foksh قام بنشر منذ 11 ساعات قام بنشر منذ 11 ساعات (معدل) السلام عليكم ورحمة الله وبركاته ،، في طور تحسين الأداة الجديدة ( لم يعلن عنها بعد ) ، للتعامل مع الأكواد التي تعمل على 32 ولا تعمل على 64 ، ما زال العمل جاري على تحسين أداء الأداة ، بحيث من خلال النقاش المفتوح نأتي للوصول الى أفضل أداء ونتيجة . مرفق صورة توضيحية للوضع الحالي للأداة ، مع طرح مثال لكود قبل وبعد التحويل الناتج من الأداة . الكود الذي تمت التجربة عليه كمثال ( لا الحصر ) :- Option Compare Database Option Explicit Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As _ Any) As Long Public Const WM_SETREDRAW = &HB Public Sub FillChildren(twTree As MSComctllib.TreeView, rst As dao.Recordset, _ ByVal nChild As MSComctllib.nodX, _ strParentField As String, strIDField As String, _ strTextField As String, Optional strTextField2 As Variant, Optional strTextField3 As Variant, Optional strTextField4 As Variant, Optional strTextField5 As Variant, _ Optional strKeyPrefix As String, _ Optional varImage As Variant, _ Optional varImageRst As Variant, _ Optional fBold As Boolean) On Local Error GoTo FillChildren_Err Dim strCriteria As String, IMAGE As Variant, strPrefix As String, strText As String, newnodx As MSComctllib.nodX If strKeyPrefix = "" Then strPrefix = "a" Else strPrefix = strKeyPrefix End If If Mid(nChild.key, 2) = "0" Then strCriteria = BuildCriteria(strParentField, rst.Fields(strParentField).Type, "=" & Mid(nChild.key, 2) & " or is null") Else strCriteria = BuildCriteria(strParentField, rst.Fields(strParentField).Type, "=" & Mid(nChild.key, 2)) End If rst.FindFirst strCriteria Do Until rst.NoMatch strText = Nz(rst(strTextField), " ") If Not IsMissing(strTextField2) Then strText = strText & (" " + rst(strTextField2)) If Not IsMissing(strTextField3) Then strText = strText & (" " + rst(strTextField3)) If Not IsMissing(strTextField4) Then strText = strText & (" " + rst(strTextField4)) If Not IsMissing(strTextField5) Then strText = strText & (" " + rst(strTextField5)) If Not IsMissing(varImageRst) Then IMAGE = rst(varImageRst) End If If (Not IsMissing(varImage)) And (Len(Nz(IMAGE)) = 0) Then IMAGE = varImage End If IMAGE = Nz(IMAGE, "Default") Set newnodx = twTree.Nodes.Add(nChild, tvwChild, strPrefix & rst(strIDField), strText, IMAGE) rst.FindNext strCriteria Loop FillChildren_End: On Error Resume Next Exit Sub FillChildren_Err: Select Case Err.Number Case 35601, 35603 'Image not found!!! IMAGE = "FlagDefault" Resume Case 35602 'key not unique!!! Set newnodx = twTree.Nodes(strPrefix & rst(strIDField)) Resume Next Case Else MsgBox "Error in FillChildren!!! " & Err.Number & Err.Description Stop Resume End Select End Sub النتيجة من الأداة بعد التحسينات والتعديلات :- 'Code converted to 64-bit compatibility By Foksh ( Officena.Net ) 'Generated on: 2025-05-23 15:22:26 'Tool version: Ver : 1.0 Option Compare Database Option Explicit #If VBA7 Then Public Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As LongPtr, ByVal wMsg As LongPtr, ByVal wParam As Long, lParam As Any) As Long #Else Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long #End If Public Const WM_SETREDRAW = &HB Public Sub FillChildren(twTree As MSComctllib.TreeView, rst As dao.Recordset, _ ByVal nChild As MSComctllib.nodX, _ strParentField As String, strIDField As String, _ strTextField As String, Optional strTextField2 As Variant, Optional strTextField3 As Variant, Optional strTextField4 As Variant, Optional strTextField5 As Variant, _ Optional strKeyPrefix As String, _ Optional varImage As Variant, _ Optional varImageRst As Variant, _ Optional fBold As Boolean) On Local Error GoTo FillChildren_Err Dim strCriteria As String, IMAGE As Variant, strPrefix As String, strText As String, newnodx As MSComctllib.nodX If strKeyPrefix = "" Then strPrefix = "a" Else strPrefix = strKeyPrefix End If If Mid(nChild.key, 2) = "0" Then strCriteria = BuildCriteria(strParentField, rst.Fields(strParentField).Type, "=" & Mid(nChild.key, 2) & " or is null") Else strCriteria = BuildCriteria(strParentField, rst.Fields(strParentField).Type, "=" & Mid(nChild.key, 2)) End If rst.FindFirst strCriteria Do Until rst.NoMatch strText = Nz(rst(strTextField), " ") If Not IsMissing(strTextField2) Then strText = strText & (" " + rst(strTextField2)) If Not IsMissing(strTextField3) Then strText = strText & (" " + rst(strTextField3)) If Not IsMissing(strTextField4) Then strText = strText & (" " + rst(strTextField4)) If Not IsMissing(strTextField5) Then strText = strText & (" " + rst(strTextField5)) If Not IsMissing(varImageRst) Then IMAGE = rst(varImageRst) End If If (Not IsMissing(varImage)) And (Len(Nz(IMAGE)) = 0) Then IMAGE = varImage End If IMAGE = Nz(IMAGE, "Default") Set newnodx = twTree.Nodes.Add(nChild, tvwChild, strPrefix & rst(strIDField), strText, IMAGE) rst.FindNext strCriteria Loop FillChildren_End: On Error Resume Next Exit Sub FillChildren_Err: Select Case Err.Number Case 35601, 35603 'Image not found!!! IMAGE = "FlagDefault" Resume Case 35602 'key not unique!!! Set newnodx = twTree.Nodes(strPrefix & rst(strIDField)) Resume Next Case Else MsgBox "Error in FillChildren!!! " & Err.Number & Err.Description Stop Resume End Select End Sub باب النقاش مفتوح لأي تعليقات وتوضيحات وتحديثات للجميع .. الأداة حصرية وليس لها أي أساس في أي موقع أجنبي أو عربي ( فقط في أوفيسنا ) *ملاحظة :- الدعوة للنقاش لا تقتصر على من لديه خبرة في آكسيس فقط . أيضاً أخوتنا الأساتذة برتبة ( خبير ) الذين أشعر أنهم غير معنيين بالمشاركة بمواضيع أخوتهم الأساتذة في هذا المنتدى هم معنيين خصوصاً بالمشاركة وإبداء الرأي ، وأرجو ان لا تكون هذه العبارة في غير محلها 😎 . نحن نتكاتف هنا لنتشارك معرفتنا وعلمنا الذي علمنا إياه الله - ولا علم إلا علمه . لذا متأملاً منهم خصوصاً مشاركتنا أفكارهم . تم تعديل منذ 10 ساعات بواسطه Foksh إضافة ملاحظتي الأخيرة .. 2
ناقل قام بنشر منذ 7 ساعات قام بنشر منذ 7 ساعات 3 ساعات مضت, Foksh said: الدعوة للنقاش لا تقتصر على من لديه خبرة في آكسيس فقط . وعليكم السلام ورحمة الله وبركاته اشارك برأي من باب المشاركة ولست خبيرا ,,,,, لأنك انت من طلب من غير الخبراء المشاركة 😃 عن تعديل الكود اعتقد يجب النظر في كل المتغيرات والدوال مثلا هناك دوال تحتاج الى تعديل للعمل في بيئة 64 bit مثل ::::::::::::::: 1. FindWindow 2. GetWindowLong / SetWindowLong 3. GetTickCount 4. ShellExecute 5. Sleep 6. GetSystemMetrics 7. GetCursorPos 8. OpenProcess 9. CreateFile والله اعلم 1
ابوخليل قام بنشر منذ 5 ساعات قام بنشر منذ 5 ساعات اداة مهمة تختصر الوقت والجهد .. لدي فكرة حول هذه الأداة .. و أرى ان وقت الفكرة المناسب هو بعد اكتمال الأداة تماما وكما يقولون .. كل شيء بوقته حلو 1
jjafferr قام بنشر منذ 4 ساعات قام بنشر منذ 4 ساعات وعليكم السلام اهلا اخي فادي 🙂 اهم شيء في هذا الموضوع، هو الرجوع الى تعليمات مايكروسوفت في التعامل مع دوال نواة 64 بت ، في الرابط التالي: https://www.microsoft.com/en-us/download/details.aspx?id=9970 ملف النص في الرابط اعلاه يعطيك تفاصيل الدالة على نواة 64 بت. المثال الذي استعملته انت، وانا متأكد بأنك كنت حريص في انتقاء الدالة، توجد به 3 فروقات عن الدالة في ملف مايكروسوفت (السطر الثاني من ملف مايكروسوفت) : والمسألة لا تتوقف عند هذا السطر فقط، فهناك دوال معقدة تحتاج الى استعمال if# في دالتي الخاصة. رجاء قراءة الموضوعين التاليين ، فطريقة العمل تختلفان ، وفيهما بعض الامثلة المختلفة: . . 1
kkhalifa1960 قام بنشر منذ 3 ساعات قام بنشر منذ 3 ساعات اعتقد بعد هذه الكوكبة من علمائنا الافاضل ..... وفي هذا الموضوع المهم والحيوي واقتراب موعد عدم اثراء أي برامج تعتمد عى 32 بت ...... وحتى تحصين برامجنا التي نعمل عليها . لابد من مناقشتها وهنا فرصة عظيمة لذلك . ولكي تتم المناقشة لابد من مشاركة مهندسنا (أبو جودي) الذي نأمل أن يشاركنا في هذا الطرح . تحياتي للجميع . 1
Foksh قام بنشر منذ 3 ساعات الكاتب قام بنشر منذ 3 ساعات 3 ساعات مضت, ناقل said: وعليكم السلام ورحمة الله وبركاته اشارك برأي من باب المشاركة ولست خبيرا ,,,,, لأنك انت من طلب من غير الخبراء المشاركة 😃 أهلا بأخي @ناقل ، يسعدني مرورك ةتعقيبك على الموضوع ، رغم انك تسرعت في الحكم علي 😁😁 بالعكس ، أساتذتي الخبراء من المستهدفين بالمشاركة في هذا النقاش ( طبعاً مع احترامي الكامل لحرية ابداء الرأي ) ، انظر .. 7 ساعات مضت, Foksh said: هم معنيين خصوصاً بالمشاركة وإبداء الرأي وتعقيباً على ما أسلفت تالياً :- 3 ساعات مضت, ناقل said: عن تعديل الكود اعتقد يجب النظر في كل المتغيرات والدوال مثلا هناك دوال تحتاج الى تعديل للعمل في بيئة 64 bit مثل ::::::::::::::: 1. FindWindow 2. GetWindowLong / SetWindowLong 3. GetTickCount 4. ShellExecute 5. Sleep 6. GetSystemMetrics 7. GetCursorPos 8. OpenProcess 9. CreateFile ففي الحسبان ان شاء الله ، ولكن الصورة والفكرة السابقة من الإصدار الأول للتجارب الأولى لجمع التعليقات والمعلومات التي نستفيد منها .. 2 ساعات مضت, ابوخليل said: اداة مهمة تختصر الوقت والجهد .. لدي فكرة حول هذه الأداة .. و أرى ان وقت الفكرة المناسب هو بعد اكتمال الأداة تماما وكما يقولون .. كل شيء بوقته حلو معلمي الفاضل @ابوخليل ، أُسعد بمشاركتكم ، واتمنى أن أصل في النهاية إلى أداة تحقق الجزء الأكبر من فكرتها وهدفها .. بانتظار توجيهاتكم وإفاداتكم وتصويبكم لي لطرق تسهم في إنجاح المشروع .. منذ ساعه, jjafferr said: اهلا اخي فادي 🙂 اهم شيء في هذا الموضوع، هو الرجوع الى تعليمات مايكروسوفت في التعامل مع دوال نواة 64 بت ، في الرابط التالي: https://www.microsoft.com/en-us/download/details.aspx?id=9970 ملف النص في الرابط اعلاه يعطيك تفاصيل الدالة على نواة 64 بت. معلمي الفاضل @jjafferr ، يسعدني توجيهكم لي لهذه الروابط ، وانا فعلاً قد قرأتها بشكل غير مفصل ، ولكن للمحاولة لرسم خطواتي التي سأبدأ بها ، وطبعاً لا بد من تغيير اتجاهي في الوقت الحالي واتجاه بوصلتي ، ولكن بهدف البدء بخطوات صحيحة تالياً .. أما فيما يخص الكود الذي استخدمته كتجربه ، فيسعدني توجيهك من موقع مايكروسوفت ، دلالة على أن المصادر التي يجب علي اتباع نهجها يجب أن تكون موثوقة لاحقاً .. منذ ساعه, jjafferr said: المثال الذي استعملته انت، وانا متأكد بأنك كنت حريص في انتقاء الدالة، توجد به 3 فروقات عن الدالة في ملف مايكروسوفت (السطر الثاني من ملف مايكروسوفت) : 4 دقائق مضت, kkhalifa1960 said: اعتقد بعد هذه الكوكبة من علمائنا الافاضل ..... وفي هذا الموضوع المهم والحيوي واقتراب موعد عدم اثراء أي برامج تعتمد عى 32 بت ...... وحتى تحصين برامجنا التي نعمل عليها . أخي الأستاذ @kkhalifa1960 ، يسعدني تعليقكم ومروركم ، وإثراءكم وملاحظتكم كثيراً .. ونأمل أن نتعرف على أفكاركم لاحقاً باحثين عن سبيل واسع الأفق لتحقيق المطلوب . أما فيما يخص هذا الجزء .. 6 دقائق مضت, kkhalifa1960 said: ولكي تتم المناقشة لابد من مشاركة مهندسنا (أبو جودي) الذي نأمل أن يشاركنا في هذا الطرح . فطبعاً صديقي وحبيبي @ابو جودي ، من الذين أشاركهم أفكاري وأستنير بتعليقاتكم ، حاله حال أساتذتي ومعلميني الأفاضل ( دون استثناء طبعاً ) . لكن وضعه الحالي الصحي قد يجعل تعليقاته متاحة فيما بيننا خارج المنتدى . ( يعاني من كسر في يده اليمنى حالياً شافاه الله وعافاه شفاء عاجل غير آجل ) . وباسمي وباسم المنتدى نيابةً نتمنى له الشفاء القريب بإذن الله . أشكر لكم جميعاً مروركم وقريباً سنبدأ بطرح الفكرة من بدايتها ( النسخة الأولى من الأداة ) ، ومع توجيهاتكم معلميني وأساتذتي وأخواني ، سنبدأ بتصحيح المسارات الخاطئة عند وجودها وإنجاح الفكرة .
ناقل قام بنشر منذ 3 ساعات قام بنشر منذ 3 ساعات 4 دقائق مضت, Foksh said: أهلا بأخي @ناقل ، يسعدني مرورك ةتعقيبك على الموضوع ، رغم انك تسرعت في الحكم علي اخي الفاضل انا لم اتسرع ولم احكم عليك .... ولكني حكمت على نفسي باني لست خبير ... وفعلا انا تلميذ لكم اخي الفاضل ... المقامات محفوظة 1
Foksh قام بنشر منذ 3 ساعات الكاتب قام بنشر منذ 3 ساعات 3 دقائق مضت, ناقل said: ولكني حكمت على نفسي باني لست خبير ... وفعلا انا تلميذ لكم اخي الفاضل ... المقامات محفوظة من تواضع لله رفعه ، وانت من الأساتذة الذين لهم بصماتهم وأسلوبهم 1
kkhalifa1960 قام بنشر منذ 3 ساعات قام بنشر منذ 3 ساعات أولاً :- تمنياتي لأستاذنا ابوجودي الشفاء العاجل باذن الله . ثانياً :- 📌 هذا مرجع دوال VBA المتوافقة مع النواتين (32 بت و64 بت) هذا المرجع يحتوي على جميع الدوال الشائعة التي يمكن استخدامها في VBA داخل Access، مع دعم للنواتين 32 بت و64 بت باستخدام #If VBA7 Then. 🔹 1- دوال استدعاء Windows API #If VBA7 Then Public Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As LongPtr, ByVal wMsg As LongPtr, ByVal wParam As Long, lParam As Any) As Long #Else Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long #End If SendMessage – إرسال رسائل للنوافذ داخل النظام. PostMessage – إرسال رسائل غير متزامنة. FindWindow – العثور على نافذة بناءً على عنوانها. ShowWindow – التحكم في عرض أو إخفاء النافذة. GetSystemMetrics – الحصول على معلومات حول إعدادات النظام. 🔹 2- دوال التعامل مع الملفات #If VBA7 Then Public Declare PtrSafe Function CopyFile Lib "kernel32" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long #Else Public Declare Function CopyFile Lib "kernel32" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long #End If CopyFile – نسخ ملف من موقع إلى آخر. DeleteFile – حذف ملف معين. FindFirstFile – البحث عن أول ملف يتطابق مع نمط معين. FindNextFile – البحث عن الملفات التالية بنفس النمط. 🔹 3- دوال النظام (System Functions) #If VBA7 Then Public Declare PtrSafe Function GetTickCount Lib "kernel32" () As Long #Else Public Declare Function GetTickCount Lib "kernel32" () As Long #End If GetTickCount – الحصول على عدد الثواني منذ تشغيل النظام. GetWindowsDirectory – استرجاع مسار مجلد Windows. GetSystemMetrics – استرجاع بيانات عن إعدادات النظام. 🔹 4- دوال إضافية مفيدة #If VBA7 Then Public Declare PtrSafe Function GetCursorPos Lib "user32" (lpPoint As Any) As Long #Else Public Declare Function GetCursorPos Lib "user32" (lpPoint As Any) As Long #End If GetCursorPos – الحصول على موقع مؤشر الفأرة. SetCursorPos – تعيين موقع جديد لمؤشر الفأرة. GetActiveWindow – استرجاع النافذة النشطة حاليًا. GetDesktopWindow – استرجاع نافذة سطح المكتب الرئيسية. 1
Foksh قام بنشر منذ 3 ساعات الكاتب قام بنشر منذ 3 ساعات (معدل) 10 دقائق مضت, kkhalifa1960 said: 📌 هذا مرجع دوال VBA المتوافقة مع النواتين (32 بت و64 بت) شكراً لك على الإضافة الجميلة ، وإن شاء الله سأستفيد من هذا الرد في تعديلات الأداة لاحقاً .. طبعاً ومعلومة مهمة بالنسبة لي ، أن الأداة ستحمل اسم فريق المنتدى / قسم آكسيس كاملاً لدعمهم الوفير في المعلومات .. تم تعديل منذ 2 ساعات بواسطه Foksh
kkhalifa1960 قام بنشر منذ 2 ساعات قام بنشر منذ 2 ساعات جعلها الله في ميزان حسناتكم وجزاكم الله عنا كل الخير . 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.