بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
-
Posts
9910 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
404
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو jjafferr
-
ولو اني لا احبذ هذه الطريقة ، لأن الوحدات النمطية السابقة كانت مرتبة ، كل وحدة تخص عملها ، ويكون اسهل معرفة مكان الخطأ (ان وُجد) ! وبدون تحمل المسؤولية ، تفضل 🙂 Option Compare Database Option Explicit #If VBA7 And Win64 Then '64 bits Public Declare PtrSafe Function GetProcAddress Lib "kernel32" (ByVal hModule As LongPtr, ByVal lpProcName As String) As LongPtr Public Declare PtrSafe Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As LongPtr Public Declare PtrSafe Function GetCurrentProcess Lib "kernel32" () As LongPtr #Else '32 bits Public Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long Public Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long Public Declare Function GetCurrentProcess Lib "kernel32" () As Long #End If Public Declare PtrSafe Function Wow64EnableWow64FsRedirection Lib "kernel32.dll" (ByVal Enable As Boolean) As Boolean Public Declare PtrSafe Function IsWow64Process Lib "kernel32" (ByVal hProc As Long, bWow64Process As Long) As Long ' ' Module to provide metrics information (from GetSystemMetrics) and conversions - ' twips <-> pixel conversions ' __________________________________________________________________________________ ' CREATED: 6 march 2004, Paul J. Champion ' NEEDS: ' __________________________________________________________________________________ ' HISTORY ' __________________________________________________________________________________ ' OVERVIEW Public Enum AccessSpecifications maxSectionHeight = 31680 maxFormWidth = 31680 maxReportWidth = 31680 RecordSelectorWidth = 300 End Enum Public Const DefaultMargin = 60 '60 twips = 0.1 cm, a nice small but clear margin 'Public Const AccessSpecifications.maxSectionHeight = 31680 Private Type Rect Left As Long Top As Long Right As Long Bottom As Long End Type Public Type Size Width As Long Height As Long End Type ' TWIPS to PIXELS api declares & constants '############################################### 'Conditional compilation #If VBA7 Then 'use PtrSafe & LongPtr Private Declare PtrSafe Function GetDC Lib "user32" (ByVal hwnd As LongPtr) As Long Private Declare PtrSafe Function ReleaseDC Lib "user32" (ByVal hwnd As LongPtr, ByVal hdc As LongPtr) As Long Private Declare PtrSafe Function GetDeviceCaps Lib "gdi32" (ByVal hdc As LongPtr, ByVal nIndex As Long) As Long Private Declare PtrSafe Function apiGetSystemMetrics Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long #Else 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 GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long Private Declare Function apiGetSystemMetrics Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long #End If '############################################### Private Const HWND_DESKTOP As Long = 0 Private Const LOGPIXELSX As Long = 88 Private Const LOGPIXELSY As Long = 90 Public Enum SystemConstants SM_CXSCREEN = 0 SM_CYSCREEN = 1 SM_CXVSCROLL = 2 SM_CYHSCROLL = 3 SM_CYCAPTION = 4 SM_CXBORDER = 5 SM_CYBORDER = 6 SM_CXDLGFRAME = 7 SM_CYDLGFRAME = 8 SM_CYVTHUMB = 9 SM_CXHTHUMB = 10 SM_CXICON = 11 SM_CYICON = 12 SM_CXCURSOR = 13 SM_CYCURSOR = 14 SM_CYMENU = 15 SM_CXFULLSCREEN = 16 SM_CYFULLSCREEN = 17 SM_CYKANJIWINDOW = 18 SM_MOUSEPRESENT = 19 SM_CYVSCROLL = 20 SM_CXHSCROLL = 21 SM_DEBUG = 22 SM_SWAPBUTTON = 23 SM_RESERVED1 = 24 SM_RESERVED2 = 25 SM_RESERVED3 = 26 SM_RESERVED4 = 27 SM_CXMIN = 28 SM_CYMIN = 29 SM_CXSIZE = 30 SM_CYSIZE = 31 SM_CXFRAME = 32 SM_CYFRAME = 33 SM_CXMINTRACK = 34 SM_CYMINTRACK = 35 SM_CXDOUBLECLK = 36 SM_CYDOUBLECLK = 37 SM_CXICONSPACING = 38 SM_CYICONSPACING = 39 SM_MENUDROPALIGNMENT = 40 SM_PENWINDOWS = 41 SM_DBCSENABLED = 42 SM_CMOUSEBUTTONS = 43 SM_CMETRICS = 44 SM_CXSIZEFRAME = SM_CXFRAME SM_CYSIZEFRAME = SM_CYFRAME SM_CXFIXEDFRAME = SM_CXDLGFRAME SM_CYFIXEDFRAME = SM_CYDLGFRAME SM_TABLETPC = 86 End Enum 'this is do with the mdi client '############################################### #If VBA7 Then 'use PtrSafe & LongPtr Private Declare PtrSafe Function GetWindowRect Lib "user32" (ByVal hwnd As LongPtr, lpRect As Rect) As Long Private Declare PtrSafe Function GetClientRect Lib "user32" (ByVal hwnd As LongPtr, lpRect As Rect) As Long Private Declare PtrSafe Function GetParent Lib "user32" (ByVal hwnd As LongPtr) As Long #Else Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As Rect) As Long Private Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As Rect) As Long Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long #End If '############################################### '############################################### #If VBA7 Then 'use PtrSafe & LongPtr Private Declare PtrSafe Function apiShellExecute 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 Long) _ As Long #Else Private Declare Function apiShellExecute 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 #End If '############################################### Public strApp As String ' Error handling Dim ErrorSource As String ' Public Sub ShellEx(ByVal Path As String, Optional ByVal Parameters As String, Optional ByVal HideWindow As Boolean) If Dir(Path) > "" Then apiShellExecute 0, "open", Path, Parameters, "", IIf(HideWindow, 0, 1) Else MsgBox "Can't find application" End If End Sub Public Function RunOSK() 'opens on screen keyboard if opened in tablet mode 'To test it on a standard PC, disable the 'If ...End If ''If modMetrics.System(SM_TABLETPC) Then ' apiShellExecute 0, vbNullString, "osk.exe", vbNullString, "C:\", 1 ' ' ShellEx "c:\windows\system32\osk.exe", , True ' strApp = "osk.exe" ''End If If IsWindows_64bit Then Wow64EnableWow64FsRedirection False apiShellExecute 0, vbNullString, "osk.exe", vbNullString, "C:\", 1 'Shell "cmd /c osk", 0 Wow64EnableWow64FsRedirection True Else 'Shell "cmd /c osk", 0 apiShellExecute 0, vbNullString, "osk.exe", vbNullString, "C:\", 1 End If strApp = "osk.exe" End Function Public Function OpenTabTip() 'opens tablet screen keyboard in tablet mode 'To test it on a standard PC, disable the 'If ...End If 'If modMetrics.System(SM_TABLETPC) Then ShellEx "C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe", , True strApp = "TabTip.exe" 'End If End Function Sub TerminateApp() '--------------------------------------------------------------------------------------- ' Terminates the exe process specified. ' Uses WMI (Windows Management Instrumentation) to query all running processes ' then terminates ALL instances of the exe process held in the variable strTerminateThis. '--------------------------------------------------------------------------------------- Dim strTerminateThis As String 'The variable to hold the process to terminate Dim objWMIcimv2 As Object, objProcess As Object, objList As Object Dim intError As Integer If Nz(strApp, "") = "" Then Exit Sub 'Process to terminate – you could specify and .exe program name here strTerminateThis = strApp 'Connect to CIMV2 Namespace and then find the .exe process Set objWMIcimv2 = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") Set objList = objWMIcimv2.ExecQuery("select * from win32_process where name='" & strTerminateThis & "'") For Each objProcess In objList intError = objProcess.Terminate 'Terminates a process and all of its threads. 'Return value is 0 for success. Any other number is an error. If intError <> 0 Then Exit For Next 'ALL instances of exe (strTerminateThis) have been terminated Set objWMIcimv2 = Nothing Set objList = Nothing Set objProcess = Nothing End Sub ' Returns a size variable containing the width and height of the MDI Client area ' for Microsoft Access at that moment in time. ' _____________________________________________________________________________ ' ARGUMENTS ' InPixels TRUE - return the size in pixels ' FALSE (default) - return the size in twips Public Function AccessAppInsideSize _ (Optional InPixels As Boolean = False) _ As Size Dim rectMDIClient As Rect Dim sizePixels As Size, sizeTwips As Size Dim WidthInPixels As Long, HeightInPixels As Long ' ' Initialize error handling On Error Resume Next ' if an error occurs this routine will return a size of 0,0 ' ' Open a dummy form or use an existing form so we can grab the parent of its window handle (hWnd) Dim F As New Form Dim bCloseForm As Boolean Dim bFoundNonPopUpForm As Boolean If Forms.count > 0 Then ' Find non-PopUp form Dim frm As Access.Form For Each frm In Forms If Not frm.PopUp Then Set F = frm bCloseForm = False bFoundNonPopUpForm = True Exit For End If Next End If If Not bFoundNonPopUpForm Then Set F = CreateForm bCloseForm = True End If ' ' Get the screen coordinates and window size of the rectMDIClient window GetWindowRect GetParent(F.hwnd), rectMDIClient ' Close dummy form without saving If bCloseForm Then DoCmd.Close acForm, F.Name, acSaveNo ' ' Calculate size in pixels sizePixels.Width = rectMDIClient.Right - rectMDIClient.Left - modMetrics.System(SM_CXFRAME, False) sizePixels.Height = rectMDIClient.Bottom - rectMDIClient.Top - modMetrics.System(SM_CYFRAME, False) ' ' Return correct values If InPixels Then ' return result as is AccessAppInsideSize = sizePixels Else ' convert result to twips sizeTwips.Width = modMetrics.converttoTwipsX(sizePixels.Width) sizeTwips.Height = modMetrics.converttoTwipsY(sizePixels.Height) AccessAppInsideSize = sizeTwips End If End Function ' Converts twips to pixels ' __________________________________________________________________________________ ' Public Function converttoPixelX(ByVal TwipsX As Long) As Long Dim lngDC As Long, intPerPixelX As Integer lngDC = GetDC(HWND_DESKTOP) intPerPixelX = 1440 / GetDeviceCaps(lngDC, LOGPIXELSX) ReleaseDC HWND_DESKTOP, lngDC converttoPixelX = TwipsX / intPerPixelX End Function ' Converts pixels to twips ' __________________________________________________________________________________ ' Public Function converttoPixelY(ByVal TwipsY As Long) As Long Dim lngDC As Long, intPerPixelY As Integer lngDC = GetDC(HWND_DESKTOP) intPerPixelY = 1440 / GetDeviceCaps(lngDC, LOGPIXELSY) ReleaseDC HWND_DESKTOP, lngDC converttoPixelY = TwipsY / intPerPixelY End Function ' Converts pixels to twips ' __________________________________________________________________________________ ' Public Function converttoTwipsX(ByVal PixelX As Long) As Long Dim lngDC As Long, intPerPixelX As Integer lngDC = GetDC(HWND_DESKTOP) intPerPixelX = 1440 / GetDeviceCaps(lngDC, LOGPIXELSX) ReleaseDC HWND_DESKTOP, lngDC converttoTwipsX = intPerPixelX * PixelX End Function ' Converts pixels to twips ' __________________________________________________________________________________ ' Public Function converttoTwipsY(ByVal PixelY As Long) As Long Dim lngDC As Long, intPerPixelY As Integer lngDC = GetDC(HWND_DESKTOP) intPerPixelY = 1440 / GetDeviceCaps(lngDC, LOGPIXELSY) ReleaseDC HWND_DESKTOP, lngDC converttoTwipsY = intPerPixelY * PixelY End Function ' Converts point size (from a font) to twips ' __________________________________________________________________________________ ' Public Function converttoTwipsYFromPoint(PointSize As Long) As Long Dim lngDC As Long, intPerPixelY As Integer lngDC = GetDC(HWND_DESKTOP) intPerPixelY = 1440 / GetDeviceCaps(lngDC, LOGPIXELSY) converttoTwipsYFromPoint = intPerPixelY * Int(PointSize * GetDeviceCaps(lngDC, LOGPIXELSY) / 72) ReleaseDC HWND_DESKTOP, lngDC End Function ' Returns the dimensions of the screen, in twips or pixels ' _____________________________________________________________________________ ' Public Function MetricsScreenHeight _ (Optional ConvertToTwips As Boolean = True) MetricsScreenHeight = System(SM_CYSCREEN, ConvertToTwips) End Function Public Function MetricsScreenWidth _ (Optional ConvertToTwips As Boolean = True) MetricsScreenWidth = System(SM_CXSCREEN, ConvertToTwips) End Function ' Returns a result of GetSystemMetrics in twips or pixels ' _____________________________________________________________________________ ' Public Function System(SystemMetricRequired As SystemConstants, Optional ConvertToTwips As Boolean = True) As Variant If ConvertToTwips Then Select Case SystemMetricRequired Case SM_CYSCREEN, SM_CYHSCROLL, SM_CYCAPTION, _ SM_CYBORDER, SM_CXDLGFRAME, SM_CYDLGFRAME, _ SM_CYVTHUMB, SM_CYICON, SM_CYCURSOR, _ SM_CYMENU, SM_CYFULLSCREEN, SM_CYKANJIWINDOW, _ SM_CYVSCROLL, SM_CYMIN, SM_CYSIZE, _ SM_CYFRAME, SM_CYMINTRACK, SM_CYDOUBLECLK, _ SM_CYICONSPACING, SM_CYSIZEFRAME, SM_CYFIXEDFRAME System = converttoTwipsY(apiGetSystemMetrics(SystemMetricRequired)) Case Else: System = converttoTwipsX(apiGetSystemMetrics(SystemMetricRequired)) End Select Else System = apiGetSystemMetrics(SystemMetricRequired) End If End Function ' 'use it like this: ' 'Private Sub Command1_Click() ' If Is64bit Then ' Wow64EnableWow64FsRedirection False ' ShellExecute 0, "open", "osk.exe", "", "", vbNormalFocus ' Wow64EnableWow64FsRedirection True ' Else ' ShellExecute 0, "open", "osk.exe", "", "", vbNormalFocus ' End If 'End Sub Public Function IsWindows_64bit() As Long If GetProcAddress(GetModuleHandle("kernel32"), "IsWow64Process") > 0 Then IsWow64Process GetCurrentProcess(), IsWindows_64bit End If End Function جعفر
-
وعليكم السلام 🙂 انا قلت: . طيب اذا استعملت هذه الطريقة في عمل برنامجك ، فلن يكون هناك Toolbar لإسم النموذج وآخر لإسم البرنامج ، وبدون نماذج منبثقة فتستطيع ان تجعل اسم النموذج في المنتصف (رجاء تجرب النموذجين ، وشوف اسم النموذج واسم البرنامج على الشريط) : . جعفر TitleBar.zip
-
وبعد اذن اخي احمد 🙂 التتمة هنا : جعفر
-
شكرا جزيلا اخوي احمد 🙂 بالفعل طريقة جديدة على المنتدى 🙂 وفي انتظار ان يقوم الاعضاء بتجربة المرفق ، وموافاتنا بالنتيجة 🙂 جعفر
-
🙂
-
همممم وحسب المعلومة اللي طرحتها في الرابط اعلاه ، فيكفي هذا الكود : Private Sub Form_Load() Me.Caption = Space(127 - Len(Me.Caption)) & Me.Caption End Sub . جرب واعمل تغيير للرقم ، من 127 الى 129 ، وشوف التسمية كيف تكون متآكلة من النهاية 🙂 جعفر
-
وعليكم السلام 🙂 عندك 3 اختيارات 🙂 1 و 2 ، يعتمد على نسخة الاكسس التي قمت بتثبيتها : اذا بالانجليزي ، فعنوان النموذج يكون على اليسار ، واذا بالعربي ، فعنوان النموذج يكون على اليمين. 3. في الحالتين ا و 2 ، اذا اردت ان تزحف العنوان بعيد عن الاطراف (بس لا تخلي آمال كبيرة 🙂 ) : جعفر
-
السلام عليكم 🙂 تفضل ، هذه طريقة جعل Listbox من اليمين الى اليسار: . وقد قمت اليوم بموضوع لجعل الرابط اعلاه يعمل على النواتين 32بت و 64بث: جعفر
-
نعم ، عند حدث "بعد تحديث" حقل البحث ، اكتب Me.Requery جعفر
-
السلام عليكم 🙂 لتعم الفائدة ، رجاء قراءة الطريقة السابقة ، والتي يمكن قراءتها من هنا : https://www.officena.net/ib/topic/107637-اجعل-برنامجك-يعمل-على-النواتين-32بت-و-64بت/ ------------------------------------------------------------------------------------------------------------------ اذا عملنا برنامج على الاكسس 32بت ، وفيه مكتبات الوندوز الـ 32بت (لاحظ الرقم 32 في اسم المكتبة: comdlg32.dll) ، ثم شغلنا البرنامج على اكسس 64بت ، فنحصل على هذا الخطأ : . للعمل بهذه الطريقة محتاجين الى: 1. ملف في موقع مايكروسوف (مرفق نسخة Win32API_PtrSafe.zip) ، وفيه طريقة عمل مناداة النواتين : https://www.microsoft.com/en-us/download/details.aspx?id=9970 وعند فك الملف ، سنستعين بالملف Win32API_PtrSafe.TXT ، 2. البرنامج Notepad++ المجاني ، ويمكن انزاله من هنا : https://notepad-plus-plus.org بعد تنصيب البرنامج ++Notepad ، يمكننا فتح الملف Win32API_PtrSafe.TXT به : هذا البرنامج يفهم تنسيق وعمل الكثير من لغات البرمجة ، ومنها VB ، ونستفيد منه حتى في برمجة كود VBE لأنه يفهم تنسيقها: . ------------------------------------------------------------------------------------------------------------------ سنستخدم المرفق في هذ الرابط لنجعله يعمل على النواتين 32بت و 64بت: https://www.officena.net/ib/topic/61106-هدية-من-اليمين-الى-اليسار،-مربع-القائمة-listbox-والشجرة-treeview/ هذه هي مكتبات 32بت الوندوز المستعمله في المرفق: Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Public Declare Function InvalidateRect Lib "user32" (ByVal hwnd As Long, lpRect As Long, ByVal bErase As Long) As Long Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Public Declare Function GetFocus Lib "user32" () As Long Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long . خطوات العمل: A. ننسخ اسم المكتبة GetWindowLong من برنامج الاكسس ، B. ثم في برنامج ++Notepad ، نبحث عن هذه الكلمة عن طريق Ctrl+F ، C. فنضع الكلمة مكان البحث ، وننقر على المربع: Find All in Current Document . D. نرى هذ النافذة تُفتح في اسفل البرنامج ، اهم شيء في هذه النافذه هو ان نفرق بين كلمة البحث التي نريدها ، ونفرقها عن كلمات البحث المشابهه والتي لا علاقة لنا بها (يجب ملاحظة ان بعض البرامج/الامثلة التي ننزلها من الانترنت ، يكون صاحبها عمل تغيير في اسم المكتبة ، مثلا: بدل GetWindowLong يكون apiGetWindowLong ، فيجب ان نعرف انه نفس الاسم ، ونبحث عن الكلمة الاصل ، كما نلاحظ ان تعديل الاسم يتم من بدايته وليس من نهايته) . E. اذن نرى هنا ان آخر سطرين فيهما طلبنا ، F. ندقق في السطر ، ونبحث عن اي كلمة تنتهي بـ Ptr ، مثل LongPtr ، CLngPtr ، VarPtr ، ObjPtr ، StrPtr ، او الكلمات التالية LongLong ، CLngLng ، فاذا وجدناها ، اذن يجب التصريح لهذه المكتبة في الكود في برنامجنا على سطرين مختلفين ، السطر الاول للنواة 64 بت ، ونأخذه من برنرنامج ++Notepad ، والسطر الثاني للنواة 32 بت ، ونأخذه من برنامجنا الاصل ، هكذا : #If VBA7 And Win64 Then '64 bits Public Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long) As Long #Else '32 bits Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long #End If . *** الخطوة الاولى والاهم هي اضافة كلمة PtrSafe بعد كلمة Declare ، للنواة 64بت. *** لاحظ اننا اضفنا كلمة Public في اول السطر للنواتين ، *** وبعد كل خطوة نعملها ، يجب ان نعمل Compile :على الاكسس 32 بت والاكسس 64 بت :حتى نتأكد انه لا توجد اخطاء ونتبع نفس الخطوات اعلاه لبقية المكتبات ، المكتبة التاليه: SetWindowLong ، والنتيجة نفسها مثل المكتبة السابقة ، اذن الكود اصبح #If VBA7 And Win64 Then '64 bits Public Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long) As Long Public Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long #Else '32 bits Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long #End If . وهكذا مع بقية المكتبات ، فيكون الكود النهائي: #If VBA7 And Win64 Then '64 bits Public Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long) As Long Public Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Public Declare PtrSafe Function InvalidateRect Lib "user32" Alias "InvalidateRect" (ByVal hwnd As LongPtr, lpRect As Long, ByVal bErase As Long) As Long Public Declare PtrSafe Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As LongPtr, ByVal hWnd2 As LongPtr, ByVal lpsz1 As String, ByVal lpsz2 As String) As LongPtr Public Declare PtrSafe Function GetFocus Lib "user32" Alias "GetFocus" () As LongPtr Public Declare PtrSafe Function GetWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As LongPtr, ByVal wCmd As Long) As LongPtr #Else '32 bits Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Public Declare Function InvalidateRect Lib "user32" (ByVal hwnd As Long, lpRect As Long, ByVal bErase As Long) As Long Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Public Declare Function GetFocus Lib "user32" () As Long Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long #End If . الآن لنفترض ان لدينا هذه المكتبة كذلك: Public Declare Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long) . نلاحظ في البحث انه لا توجد لدينا اي من كلمات التي ذكرناها في #F اعلاه . اذن نكتب السطر (من برنامجنا ذو 32 بت) نفسه مرتين ، مرة للنواة 64 بت ، ومرة للنواة 32 بت ، فيصبح الكود (الفرق بين السطرين هي كلمة PtrSafe) : #If VBA7 And Win64 Then '64 bits Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long) #Else '32 bits Public Declare Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long) #End If او #If VBA7 And Win64 Then '64 bits Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long) #Else '32 bits Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long) #End If او سطر واحد مستقلا Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long) ------------------------------------------------------------------------------------------------------------------ 2021-11-20 : اخوي @عبدالله المجرب نبهني عند استخدام الاكسس 64بت ، يظهور خطأ في مرفق الرابط: https://www.officena.net/ib/topic/64989-هدية-برنامج-تصدير-بيانات-من-جداولاستعلامات-اكسس-الى-اكسل-،-32بت-و-64بت/ لما نعمل Compile للبرنامج على كمبيوتر به اكسس 64بت ، تظهر هذه الرسالة ، واللي معناها مافي توافق في تعريف المتغير (يعني جزء من سطر الكود تم تعريفه بطريقة ، وجزء آخر من سطر الكود تم تعريفه بطريقة لا تتلائم مع المتغير السابق ، وابسط مثال: متغير تم تعريفه كنص ، ثم تعطي قيمته الى متغير آخر تم تعريفه كرقم) : . من الملاحظة ، نرى انه بما اننا نستخدم اكسس 64بت ، فتعريف المكتبة ShellExecute يكون عن طريق (VB7) ، وتعريفها انها LongPtr ، بينما في الكود ، اعطينا قيمة ShellExecute الى المتغير lRet والذي تم تعريفه على انه Long ، لهذا السبب لا يوجد توافق بين المتغيرين ، وعليه نحصل على الخطأ !! هناك حلين للموضوع: إما ان نعمل if VBA7 then# خاص للمتغير lRet لحالتي 32بت و 64بت ، او نحذف تعريف المتغير lRet من الكود ، ونضعه في الاعلى ، مع تعريف المكتبة ShellExecute ، وهذا ما قمت به: . وبعد عمل Comiple مرة اخرى ، نحصل على خطأ مشابه للخطأ اعلاه ، ولكن لمكتبة اخرى : . والحل ، كما عملته للمشكلة السابقة ، فيصبح الكود : . وبعد عمل Compile مرة اخرى ، نجد ان الكود يعمل بدون اخطاء 🙂 ------------------------------------------------------------------------------------------------------------------ 2021-11-23: اخوي @ابا جودى طلب مساعدة في برنامجه ، ليعمل على النواتين: https://www.officena.net/ib/topic/111963-سؤال-بخصوص-التعديل-على-قاعدة-بيانات-لتعمل-على-32-64-bit/ والشيء الجديد فيه والذي لم يتم شرحه سابقا هو: المتغير hIcon (باللون الاصفر) ، تعريفه يعتمد على النواة : . وعندنا هذه الدالة fSetIcon ومعرفها Long ، وفي الدالة ، نعطي نتيجة hIcon الى fSetIcon . المشكلة لما نواة البرنامج تكون 64بت ، فحينها يكون معرف الحقل hIcon هو LongPtr ، بينما الدالة fSetIcon لا يزال معرفها Long ، وهنا نحصل على رسالة خطأ بعدم تطابق معرف الحقلين !! والطريقة التي استعملتها هي: استعمال الدالة مرتين ، مرة بمعرف LongPtr اذا كانت النواة 64بت ، ومرة بمعرف Long اذا لم تكن النواة 64بت : . وعلشان نعرف ان البرنامج تقبل هذا التغيير ، يجب ان نعمل Compile 🙂 جعفر Win32API_PtrSafe (2).zip
-
وعليكم السلام 🙂 الشيء الوحيد الذي يأتي على بالي هو: مصدر بيانات النموذج هو استعلام ، وهذا الاستعلام به معيار يأخذ قيمته من حقل بحث النموذج ، ولكنك لم تخبر المعيار كيف يتعامل مع قيمة حقل البحث عندما يكون فارغ !! طبعا ، هذا مجرد مفهومي من شُح البيانات التي وضحت لنا المشكلة 🙂 جعفر
-
هدئ اعصابك ، الموضوع معقد اكثر مما يظهر 🙂 اليوم ان شاء الله اعرض عليك كود ممكن يحل الموضوع 🙂 لاحظ ، انت قلت بدون كود ، وانا قلت كود 🙂 جعفر
-
نسخ أول سطر يبدأ بقيمة معينة ووضعها في حقل في جدول آخر
jjafferr replied to nssj's topic in قسم الأكسيس Access
لم الاحظ المسافة الزائدة 🙂 كما لاحظنا في مشاركتي اعلاه ، وبسبب وجود اشارتين/رمزين CR LF ، فالمسافة (واقعا هي ليست مسافة ، وانما الانتقال الى السطر التالي) ، ونحن وقفنا عند الرمز الاول ولم نعير انتباه للرمز الآخر ، فنتجت عنه هذه المسافة 🙂 تفضل هذا التعديل: S: Mid([NASS],1,InStr([NASS],Chr(13))-1) . ومفهمومك صحيح 100% ، وليس عندي جواب لهذه الظاهرة ، غير اننا نستعمل اللغة العربية والتي تعمل بعض الاشكالات 😁 ولكن تم حلها كما في الطريقة السابقة ، بتنقيص نفس الرقم المستخدم في البداية ، هكذا: S2: Mid([NASS],5,InStr([NASS],Chr(13))-5) جعفر 1413.MZ.accdb.zip -
تفضل 🙂 اذا كنت تريد هذه النتيجة: . فهذا هو الاستعلام: . وهذه جملة SQL الاستعلام: SELECT tb1.الحقل7 FROM tb1 WHERE (((tb1.الحقل7) Is Not Null)) ORDER BY Int(Mid([الحقل7],InStr([الحقل7],"/")+1)), Int(Mid([الحقل7],1,InStr([الحقل7],"/")-1)); جعفر 1414.2.t1.accdb.zip
-
ما ادري ، هذا خارج تخصصي 😁 نشوف الشباب اللي لهم باع بهذه البرامج مثل @صالح حمادي و @Elsayed Bn Gemy و @SEMO.Pa3x و @ابوآمنة و @د.كاف يار واكيد نسيت آخرين 🙂 جعفر
-
وعليكم السلام 🙂 تم الرد على هذا السئال هنا . هل جد جديد ؟ جعفر
-
وعليكم السلام 🙂 اذا البرنامج بصيغة mdb او mde ، فنعم في برامج لفك كلمة السر ، ولكن لا يوجد برنامج لفك كلمة السر للبرامج بصيغة accdb او accde ، فكل البرامج عندها محاولات لفك كلمة السر 🙂 والحكم الانترنت ، ابحث ، وبتشوف النتائج 🙂 الاكسس بصيغة accdb لا يمكن كسر كلمة سره بسهوله وبالطرق الاعتيادية (يعني مستخدم عادي ويستعمل برامج مساعدة من الانترنت) ، وهنا حاول الاعضاء مساعدة اخوي سلمان . وعلى اساس طول كلمة السر ، وخلط الارقام والرموز فيها ، هنا نرى الوقت الذي يمكن ان تستغرقه (برامج محاولة الكشف عن كلمة السر) لكشف كلمة السر: فام اخونا @kaser906 بعمل نفس اللق تقوله ، بس بالاكسس جعفر