الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هل يمكن جعل الوحدات النمطية او الكودات تعمل على الـ bit-64 أو الـ 32- bit في نفس الوقت

مغلقمُجاب
بدأه Kamali_82 في 6 أبريل 2014 · 15 رد · 3,992 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته

وجدت قبل ايام هنا موضوعا عن حل لمشكلة الكودات في انظمة الـ bit-64 و هو موضوع ليس بجديد و لكن رد جديد عليه اظهره في الواجهة و للأسف قمت بعمل الاجراء المقترح و دون نتيجة

و وضعت تسأولا و لم أجد الرد و ها أنا أضعه في موضوع جديد

هل من حل يمكن من خلاله جعل الوحدات النمطية او الكودات تعمل على الـ bit-64 أو الـ 32- bit في نفس الوقت و دون الحاجة لاي تعديل حين يتم نقل قاعدة البيانات من جهاز لآخر ؟؟

و هذه اول وحدة نمطية

Option Compare Database
Option Explicit

Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Public Function OpenFile(sFileName As String)
On Error GoTo Err_OpenFile

    OpenFile = ShellExecute(Application.hWndAccessApp, "Open", sFileName, "", "C:\", 1)

Exit_OpenFile:
    Exit Function

Err_OpenFile:
    MsgBox Err.Number & " - " & Err.Description
    Resume Exit_OpenFile

End Function

الوحدة النمطية الثانية

Option Compare Database
Option Explicit
Type OPENFILENAME
  lStructSize As Long
  hwndOwner As Long
  hInstance As Long
  lpstrFilter As String
  lpstrCustomFilter As String
  nMaxCustFilter As Long
  nFilterIndex As Long
  lpstrFile As String
  nMaxFile As Long
  lpstrFileTitle As String
  nMaxFileTitle As Long
  lpstrInitialDir As String
  lpstrTitle As String
  Flags As Long
  nFileOffset As Integer
  nFileExtension As Integer
  lpstrDefExt As String
  lCustData As Long
  lpfnHook As Long
  lpTemplateName As String
End Type

Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
  "GetOpenFileNameA" (OFN As OPENFILENAME) As Boolean

Private Declare Function GetSaveFileName Lib "comdlg32.dll" Alias _
  "GetSaveFileNameA" (OFN As OPENFILENAME) As Boolean

Private Const ALLFILES = "All files"

Function MakeFilterString(ParamArray varFilt() As Variant) As String
  Dim strFilter As String
  Dim intRes As Integer
  Dim intNum As Integer

  intNum = UBound(varFilt)
  If (intNum <> -1) Then
    For intRes = 0 To intNum
      strFilter = strFilter & varFilt(intRes) & vbNullChar
    Next
    If intNum Mod 2 = 0 Then
      strFilter = strFilter & "*.*" & vbNullChar
    End If

    strFilter = strFilter & vbNullChar
  End If

  MakeFilterString = strFilter
End Function

Private Sub InitOFN(OFN As OPENFILENAME)
  With OFN
    .hwndOwner = hWndAccessApp
    .hInstance = 0
    .lpstrCustomFilter = vbNullString
    .nMaxCustFilter = 0
    .lpfnHook = 0
    .lpTemplateName = 0
    .lCustData = 0
    .nMaxFile = 511
    .lpstrFileTitle = String(512, vbNullChar)
    .nMaxFileTitle = 511
    .lStructSize = Len(OFN)
    If .lpstrFilter = "" Then
      .lpstrFilter = MakeFilterString(ALLFILES)
    End If
    .lpstrFile = .lpstrFile & String(512 - Len(.lpstrFile), vbNullChar)
  End With
End Sub

Function OpenDialog(OFN As OPENFILENAME) As Boolean
  Dim intRes As Integer
  InitOFN OFN
  intRes = GetOpenFileName(OFN)
  If intRes Then
    With OFN
      .lpstrFile = Left$(.lpstrFile, InStr(.lpstrFile, vbNullChar) - 1)
    End With
  End If
  OpenDialog = intRes
End Function

و هناك وحدات نمطية اخرى ساطرحها لاحقا بارك الله فيكم و جزاكم خيرا

و السلام عليكم

#2

السلام عليكم و رحمة الله و بركاته

هل من حل لهذا الطلب بارك الله فيكم

▲ -1
#3

السلام عليكم و رحمة الله و بركاته إذا لم يكن بالإمكان جعل الوحدات النمطية تعمل على كلا النظامين فهل يمكن التعديل لتعمل على نظام الـ bit-64

جربت ما جاء في هذا الموضوع و لكن للأسف لم ينجح معي

 

حل لمن يعاني من رسالة The code in this project must be updated for use on 64-bit system
▲ -1
#4

اخي الفاضل

 

السلام عليكم ورحمة الله وبركاته

 

راجع هذا الرابط فقد تم الشرح الكامل لهذا الموضوع مع وضع المثال اللازم لذلك

 

 

/index.php/topic/285546-declare-statements-on-64-bit/

 

بالتوفيق

1▲ -1
#5
zahrah كتب:

اخي الفاضل

 

السلام عليكم ورحمة الله وبركاته

 

راجع هذا الرابط فقد تم الشرح الكامل لهذا الموضوع مع وضع المثال اللازم لذلك

 

 

/index.php/topic/285546-declare-statements-on-64-bit/

 

بالتوفيق

 

و عليكم السلام و حمة الله و بركاته

أختي الكريمة بارك الله فيك و جزاكِ خيراً و وفقكِ لما يحبه و يرضاه من القول و العمل في عافية

إطلعت على الموضوع الذي أشرتِ إليه و سأحاول العمل بما ذكرتيه فيه

و لكن لأن الموجود على جهازي 32 بت و انوي و بعد تعديل الوحدات النمطية التي لها علاقة بنوع النظام التحول الى نظام 64 بت و لا مجال لدي لتجربة صحته من عدمه الآن فسأضع هنا ما اقوم بتعديله طمعاً بتصحيح أي خطأ قد أقع فيه

مرةً ثانية بارك الله فيكِ و جزاكِ خيراً و جعل جُهدكِ في ميزانِ حسناتكِ +1

▲ -1
#6

رد مكرر

تم تعديل هذه المشاركة بواسطة Kamali_82 في 13 أبريل 2014 في 11:46

▲ -1
#7

بحسب ما فهمته

1- نحتاج الى وضع هذه الوظيفة العامة في وحدة نمطية جديده

Public Function IsWin32OrWin64() As String
    Dim proc_query As String
    Dim proc_results As Object
    Dim info As Object
    
    proc_query = "SELECT * FROM Win32_Processor"
    Set proc_results = GetObject("Winmgmts:").ExecQuery(proc_query)
    For Each info In proc_results
        IsWin32OrWin64 = info.AddressWidth & "-bit"
    Next info
End Function

2 - نضع في اول نموذج يتم فتحه في القاعدة هذه الأكواد البرمجية

Dim OS
OS = IsWin32OrWin64()
if  OS= "64-bit" then
'دالة التصريح للنظام 64 بت  
 Private Declare PtrSafe Function
Else
'دالة التصريح للنظام 32 بت
   Private Declare Function
End if

3 - نقوم بتعديل الوحدات النمطية لتعمل على النظامين مع تعديل التالي

Long  تتغير الى  LongPtr
دالة ()Len  تتغير الى  ()LenB حتى يتم قبولها في نظام 64 فقط
Private Sub Form_Open(Cancel As Integer)
 Me.TimerInterval = 3000
Dim OS
OS = IsWin32OrWin64()
 
Select Case OS
Case Is = "32-bit"
 

Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Public Function OpenFile(sFileName As String)
On Error GoTo Err_OpenFile

    OpenFile = ShellExecute(Application.hWndAccessApp, "Open", sFileName, "", "C:\", 1)

Exit_OpenFile:
    Exit Function

Err_OpenFile:
    MsgBox Err.Number & " - " & Err.Description
    Resume Exit_OpenFile

End Function

 
 
Case Is = "64-bit"
 
 '
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As LongPtr) As LongPtr

Public Function OpenFile(sFileName As String)
On Error GoTo Err_OpenFile

    OpenFile = ShellExecute(Application.hWndAccessApp, "Open", sFileName, "", "C:\", 1)

Exit_OpenFile:
    Exit Function

Err_OpenFile:
    MsgBox Err.Number & " - " & Err.Description
    Resume Exit_OpenFile

End Function


     
End Select
End Sub

أعلاه تم تعديل الوحدة النمطية الأولى فهل ما قمت به صحيح أم لا ؟؟

▲ 1
#8

 الوحدة النمطية الثانية و إن كان ما قمت به صحيحا فسأقوم به في باقي الوحدات المستخدمة

Private Sub Form_Open(Cancel As Integer)
 Me.TimerInterval = 3000
Dim OS
OS = IsWin32OrWin64()
 
Select Case OS
Case Is = "32-bit"
 Private Type BROWSEINFO
  hOwner As Long
  pidlRoot As Long
  pszDisplayName As String
  lpszTitle As String
  ulFlags As Long
  lpfn As Long
  lParam As Long
  iImage As Long
  strInitialDir As String
End Type

Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
            "SHGetPathFromIDListA" (ByVal pidl As Long, _
            ByVal pszPath As String) As Long
            
Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias _
            "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) _
            As Long
            
Private Const BIF_RETURNONLYFSDIRS = &H1

Public Function BrowseFolder(Optional szDialogTitle As String, _
                            Optional szInitialDir As String) As String

  Dim x As Long, bi As BROWSEINFO, dwIList As Long
  Dim szPath As String, wPos As Integer
 
    With bi
        .hOwner = hWndAccessApp
        .lpszTitle = szDialogTitle
        .strInitialDir = szInitialDir
        .ulFlags = BIF_RETURNONLYFSDIRS
    End With
    
    dwIList = SHBrowseForFolder(bi)
    szPath = Space$(512)
    x = SHGetPathFromIDList(ByVal dwIList, ByVal szPath)
    
    If x Then
        wPos = InStr(szPath, Chr(0))
        BrowseFolder = Left$(szPath, wPos - 1)
    Else
        BrowseFolder = ""
    End If
End Function
 
 
Case Is = "64-bit"
 Private Type BROWSEINFO
  hOwner As LongPtr
  pidlRoot As LongPtr
  pszDisplayName As String
  lpszTitle As String
  ulFlags As LongPtr
  lpfn As LongPtr
  lParam As LongPtr
  iImage As LongPtr
  strInitialDir As String
End Type

Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
            "SHGetPathFromIDListA" (ByVal pidl As LongPtr, _
            ByVal pszPath As String) As LongPtr
            
Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias _
            "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) _
            As LongPtr
            
Private Const BIF_RETURNONLYFSDIRS = &H1

Public Function BrowseFolder(Optional szDialogTitle As String, _
                            Optional szInitialDir As String) As String

  Dim x As LongPtr, bi As BROWSEINFO, dwIList As LongPtr
  Dim szPath As String, wPos As Integer
 
    With bi
        .hOwner = hWndAccessApp
        .lpszTitle = szDialogTitle
        .strInitialDir = szInitialDir
        .ulFlags = BIF_RETURNONLYFSDIRS
    End With
    
    dwIList = SHBrowseForFolder(bi)
    szPath = Space$(512)
    x = SHGetPathFromIDList(ByVal dwIList, ByVal szPath)
    
    If x Then
        wPos = InStr(szPath, Chr(0))
        BrowseFolder = Left$(szPath, wPos - 1)
    Else
        BrowseFolder = ""
    End If
End Function


     
End Select
End Sub

أعلاه تم تعديل الوحدة النمطية الثانية فهل ما قمت به صحيح أم لا ؟؟

تم تعديل هذه المشاركة بواسطة Kamali_82 في 13 أبريل 2014 في 12:03

▲ 1
#9

اخي الفاضل

 

بارك الله بك وجزاك الله كل خير

 

لا يمكن الجزم بصحة او عدم صحة ما قمت بعمله حتى تضع لنا كامل البرنامج لديك هنا

 

حتى يمكننا النظر فيه وتعديل اللازم ، لذا حاول رفع القاعدة التي بها الوحدات النمطية 

 

بالتوفيق

▲ -1
#10
zahrah كتب:

اخي الفاضل

 

بارك الله بك وجزاك الله كل خير

 

لا يمكن الجزم بصحة او عدم صحة ما قمت بعمله حتى تضع لنا كامل البرنامج لديك هنا

 

حتى يمكننا النظر فيه وتعديل اللازم ، لذا حاول رفع القاعدة التي بها الوحدات النمطية 

 

بالتوفيق

 

أُختي الفاضلة بارك الله بكِ وجزاك الله بخيرٍ مما دعوتِ لي

سأقوم إن شاء الله بوضع البرنامج بالرغم من إنه غير مكتمل و بعض الوحدات النمطية غير مفعلة ضمن البرنامج و كنت قد إستخدمتها في برنامج سابق و أنوي إستخدمها في هذه القاعدة الجديدة و سأقوم صباح الغد إن شاء الله برفعها هنا

وفقكِ الله و بارك فيكِ و جعل جُهدكِ في ميزان حسناتكِ

و السلام عليكم

▲ -1
#11
zahrah كتب:

اخي الفاضل

 

بارك الله بك وجزاك الله كل خير

 

لا يمكن الجزم بصحة او عدم صحة ما قمت بعمله حتى تضع لنا كامل البرنامج لديك هنا

 

حتى يمكننا النظر فيه وتعديل اللازم ، لذا حاول رفع القاعدة التي بها الوحدات النمطية 

 

بالتوفيق

 

أُختي الفاضلة بارك الله بكِ وجزاك الله بخيرٍ مما دعوتِ لي

سأقوم إن شاء الله بوضع البرنامج بالرغم من إنه غير مكتمل و بعض الوحدات النمطية غير مفعلة ضمن البرنامج و كنت قد إستخدمتها في برنامج سابق و أنوي إستخدمها في هذه القاعدة الجديدة و سأقوم صباح الغد إن شاء الله برفعها هنا

وفقكِ الله و بارك فيكِ و جعل جُهدكِ في ميزان حسناتكِ

و السلام عليكم

▲ -1
#12
zahrah كتب:

اخي الفاضل

 

بارك الله بك وجزاك الله كل خير

 

لا يمكن الجزم بصحة او عدم صحة ما قمت بعمله حتى تضع لنا كامل البرنامج لديك هنا

 

حتى يمكننا النظر فيه وتعديل اللازم ، لذا حاول رفع القاعدة التي بها الوحدات النمطية 

 

بالتوفيق

 

 

اختي الفاضلة زهرة بارك الله بكِ و أعتذر لتأخري بسبب عارض صحي تراكمت بعده الأعمال فلم أتمكن من رفع البرنامج

قمت بمحاولة التعديل و عمل ما ذكرته أعلاه فكان يعطيني خطأ و لذلك آثرت أن أرفع ما عندي هنا دون تعديل خشية أن أقوم من حيث لا أدري بتخريب هذه الوحدات

و سامحيني إن كنتُ سأثقل عليك بطلبي هذا و لا أملك إلا الدعاء لكِ و أقول جزاكِ الله خيراً و بارك بكِ و حفظكِ و رعاكِ و وفقكِ لما يُحبهُ من القول و العمل في عافية

و جزا الله جميع المشاركين و القائمين على هذا المنتدى الطيب المُبارك خير الجزاء

 

أعتذر عن تكرار الملف المرفق فيظهر أن هناك خللاً حيث أني كنت أقوم بتحديد الملف و الضغط لرفعه و لكن و بعد فترة كانت الملاحظة  No file selected

Kamal_Db_32&64Bit.rar

Kamal_Db_32&64Bit.rar

Kamal_Db_32&64Bit.rar

تم تعديل هذه المشاركة بواسطة Kamali_82 في 23 أبريل 2014 في 11:40

▲ -1
#13

السلام عليكم و رحمة الله و بركاته

للتذكير بالموضوع و أعتذر مجددا عن تأخري بالرد

و مقترحي للأخت الفاضلة زهرة جزاها الله خيرا أن يكون لها موضوعاً في هذا الخصوص و يتم تثبيته كما في موضوعها 

الشرح الكامل التفصيلي المصور لمعرفة نسخة الأكسيس وتخفيض الأمان برمجيا

و خاصة و أن كثير من هذه الوحدات النمطية هي مما أخذناه من مشاركاتها و ردودها على المشاركين هنا في هذا المنتدى المبارك و الله اسأل أن يجعل جهدها في ميزان حسناتها و أن يجزيها خير الجزاء
 

تم تعديل هذه المشاركة بواسطة Kamali_82 في 24 أبريل 2014 في 11:59

▲ -1
#14

السلام عليكم و رحمة الله و بركاته

بالرغم من حاجتي لبرنامج يعمل على الـ64 بت في ما يخص عملي الخاص بعيدا عن الآكسس فقد قمت بتأجيل تحديث النظام و الابقاء على نظام الـ32 بت لتشغيل قاعدة البيانات الخاصة بي إلى أن اجد حلاً لهذا الموضوع

بارك الله في الجميع هنا و جزاكم الله خيرا

و السلام عليكم

▲ -1
#15 أفضل إجابة

تفضل اخي الكريم

 

تم التعديل على جميع  الأكواد في الوحدات النمطية بحيث تعمل على نظام 64 بت  و  32 بت

 

za-Kamal_Db_32&64Bit.rar

 

بالتوفيق

2▲ -1
#16
zahrah كتب:

تفضل اخي الكريم

 

تم التعديل على جميع  الأكواد في الوحدات النمطية بحيث تعمل على نظام 64 بت  و  32 بت

 

attachicon.gifza-Kamal_Db_32&64Bit.rar

 

بالتوفيق

بارك الله فيكِ و حفظكِ أختي الفاضلة و جزاكِ خيراً و جعل جهدكِ في ميزانِ حسناتكِ

اعجز هنا عن أفيك حقكِ و لا أجد خيراً من أقول لكِ جزاكِ الله خيراً و وفقك لما يُحبهُ من القول و العمل في عافية

و السلام عليكم و رحمة الله و بركاته

▲ -1

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…