• 0
zahrah

ادراج الصور في النماذج و التقارير

سؤال

ادراج الصور في النماذج او التقارير

من مجلد منفصل عن القاعده

اعزائي الكرام

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

سؤال :

هل هناك فرق بين وضع الصور في قاعدة البيانات وخصوصا في الجداول مباشرة عن طريق عنصر التحكم OLE وبين وضع رابط نصي فقط يشير الى مكان وجود الصوره في اي محرك من محركات الاقراص على جهاز الكمبيوتر ؟

الاجابه :

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

النوع الاول : في حالة وضع الصوره مياشرة في الجدول

المميزات :

1. بما انه تم تضمين هذه الصور في الجدول اذن اصبحت جزء من قاعدة البيانات . وهذه الميزه مهما نقلت قاعدة البيانات الى اي مكان فستضل مرتبطه بالقاعده .

2. لا يمكن ازالتها بسهوله . او التحكم بها لانها اصبحت بيانات ثنائيه .

العيوب :

1. تضخم قاعدة البيانات نظرا لما تحويه من صور مدمجه مع القاعدة

2. لا يقبل الا صيغة الصور من نوع BMP والكل يعلم ان هذا النوع كبير نسبيا مقارنة مع باقي الصيغ الخاصه بالصور .

3. مشكلة نقل قاعدة البيانات الى موقع اخر وهي بحجم كبير جدا قد يصل الى واحد قيقا بايت .

4. مشكلة فتح قاعدة البيانات المحملة بالصور فإذا انهارت لا يمكن اصلاحها ابدا نظرا لضخامتها .

النوع الثاني : في حالة وضع الصور في مجلد منفصل او في اي مكان من الكمبيوتر .

المميزات :

1. يعتبر هذا النوع من الانواع المفضلة لقواعد البيانات اكسيس نظرا لخفته وحجمة الصغير جدا .

2. الصور تكون على شكل مسار في جدول مثل C:\MyPhoto\za.jpg وهذا المسار لا يأخذ حيزا كبيرا من مساحة القاعدة فهو يشير فقط الى موقع الصوره

3. هذا النوع يقبل جميع صيغ الصور المعروفه مثل BMP و JPG و GIF و WMF و PSD

4. يتم التحكم بحجم الصوره من تكبير وتصغير تمدد او قطع .

العيوب :

1. عند نقل القاعدة تفقد الارتباط بالصور المخزن مسارها في الجدول ولن تظهر الصور حتى يتم تعريف الارتباط مجددا .

والان دعونا نقوم بعمل هذه القاعدة و ماذا نحتاج لذلك .

كل ما نحتاجه هو جدول به حقلين وليكن اسمه مثلا Imagetable

الحقل الاول : معرف او ImageID ..... ونوعه ترقيم تلقائي

الحقل الثاني : مسار الصوره او ImagePath ونوعه تص وحجمه 255 حرف

نموذج مبني على الجدول السابق وليكن اسم النموذج مثلا Imageform

1. نقوم بعرض النموذج في وضع التصميم ومن ثم نقوم بزيادة مساحته للاسفل بحيث يتسع لمكان صوره

2. نقوم بإدراج صوره في النموذج وذلك من خلال اشرطة الاداوت ومن ثم نختار ادراج ونختار صوره لتكون هي الاساس في حالة عدم وجود صورة او سجل جديد . وستكون هي بمثابة اطار وسوف نسمي هذا الاطار الخاص بالصوره ImageFrame

3. ننتقل الى مربع النص ImagePath ونختار خصائصه ومن ثم نضع هذا الكود في حدث الحالي وفي حدث بعد التحديث

Private Sub Form_Current()
On Error Resume Next
Me![ImageFrame].Picture = Me![ImagePath]
End Sub

و

Private Sub ImagePath_AfterUpdate()
On Error Resume Next
Me![ImageFrame].Picture = Me![ImagePath]
End Sub

من خلال الاحداث السابقه تم ربط الاطار ImageFrame الخاص بالصوره مع مربع النص ImagePath بحيث لو تغير مسار الصوره تتغير الصوره مع ما هو مكتوب في مربع النص .

الى هنـــــــــــــــا كل الامور ماشيه تمام باقي علينا بعض التحسينات فليس من المعقول انه كلما اردنا ادراج صوره ان نكتب ذلك يدويا فالعملية متعبه لذا سنقوم بعمل التالي :

بجانب مربع النص او قريب منه نقوم بوضع زر امر وليكن اسمه مثلا cmdAdd يعني زر امر اضافه صوره ونضع له في حدث عند النقر هذا الكود

Private Sub cmdAdd_Click()
Dim strFilter As String
  Dim lngflags As Long
  Dim varFileName As Variant

  strFilter = "All Files (*.*)" & vbNullChar & "*.*" _
   & vbNullChar & "All Files (*.*)" & vbNullChar & "*.*"
   
  lngflags = tscFNPathMustExist Or tscFNFileMustExist _
   Or tscFNHideReadOnly
 
  varFileName = tsGetFileFromUser( _
  fOpenFile:=True, _
  strFilter:=strFilter, _
  rlngflags:=lngflags, _
  strDialogTitle:=" الرجاء اختيار ملف ")
 
  If IsNull(varFileName) Then
   Else
     Me![ImagePath] = varFileName
  End If

cmdAdd_End:
  On Error GoTo 0
  Exit Sub

cmdAdd_Err:
  Beep
  MsgBox Err.Description, , "Error: " & Err.Number _
   & " in file"
  Resume cmdAdd_End

End Sub

نلاحظ ان الحدث التالي يستدعى وحده نمطيه بها هذه الوظيفه tsGetFileFromUser

اذن كل ما علينا هو نسخ هذا الكود ووضعه في وحدة نمطية جديده وليكن اسمها مثلا basBrowseFiles

Option Compare Database
Option Explicit
Private Declare Function ts_apiGetOpenFileName Lib "comdlg32.dll" _
Alias "GetOpenFileNameA" (tsFN As tsFileName) As Boolean

Private Declare Function ts_apiGetSaveFileName Lib "comdlg32.dll" _
Alias "GetSaveFileNameA" (tsFN As tsFileName) As Boolean

Private Declare Function CommDlgExtendedError Lib "comdlg32.dll" () As Long

Private Type tsFileName
  lStructSize As Long
  hwndOwner As Long
  hInstance As Long
  strFilter As String
  strCustomFilter As String
  nMaxCustFilter As Long
  nFilterIndex As Long
  strFile As String
  nMaxFile As Long
  strFileTitle As String
  nMaxFileTitle As Long
  strInitialDir As String
  strTitle As String
  flags As Long
  nFileOffset As Integer
  nFileExtension As Integer
  strDefExt As String
  lCustData As Long
  lpfnHook As Long
  lpTemplateName As String
End Type

' Flag Constants
Public Const tscFNAllowMultiSelect = &H200
Public Const tscFNCreatePrompt = &H2000
Public Const tscFNExplorer = &H80000
Public Const tscFNExtensionDifferent = &H400
Public Const tscFNFileMustExist = &H1000
Public Const tscFNPathMustExist = &H800
Public Const tscFNNoValidate = &H100
Public Const tscFNHelpButton = &H10
Public Const tscFNHideReadOnly = &H4
Public Const tscFNLongNames = &H200000
Public Const tscFNNoLongNames = &H40000
Public Const tscFNNoChangeDir = &H8
Public Const tscFNReadOnly = &H1
Public Const tscFNOverwritePrompt = &H2
Public Const tscFNShareAware = &H4000
Public Const tscFNNoReadOnlyReturn = &H8000
Public Const tscFNNoDereferenceLinks = &H100000

Public Function tsGetFileFromUser( _
Optional ByRef rlngflags As Long = 0&, _
Optional ByVal strInitialDir As String = "", _
Optional ByVal strFilter As String = "All Files (*.*)" & vbNullChar & "*.*", _
Optional ByVal lngFilterIndex As Long = 1, _
Optional ByVal strDefaultExt As String = "", _
Optional ByVal strFileName As String = "", _
Optional ByVal strDialogTitle As String = "", _
Optional ByVal fOpenFile As Boolean = True) As Variant
 
  On Error GoTo tsGetFileFromUser_Err
  Dim tsFN As tsFileName
  Dim strFileTitle As String
  Dim fResult As Boolean

  ' Allocate string space for the returned strings.
  strFileName = Left(strFileName & String(256, 0), 256)
  strFileTitle = String(256, 0)

  ' Set up the data structure before you call the function
  With tsFN
     .lStructSize = Len(tsFN)
     .hwndOwner = Application.hWndAccessApp
     .strFilter = strFilter
     .nFilterIndex = lngFilterIndex
     .strFile = strFileName
     .nMaxFile = Len(strFileName)
     .strFileTitle = strFileTitle
     .nMaxFileTitle = Len(strFileTitle)
     .strTitle = strDialogTitle
     .flags = rlngflags
     .strDefExt = strDefaultExt
     .strInitialDir = strInitialDir
     .hInstance = 0
     .strCustomFilter = String(255, 0)
     .nMaxCustFilter = 255
     .lpfnHook = 0
  End With
 
  ' Call the function in the windows API
  If fOpenFile Then
     fResult = ts_apiGetOpenFileName(tsFN)
  Else
     fResult = ts_apiGetSaveFileName(tsFN)
  End If

  ' If the function call was successful, return the FileName chosen
  ' by the user.  Otherwise return null.  Note, the CancelError property
  ' used by the ActiveX Common Dialog control is not needed.  If the
  ' user presses Cancel, this function will return Null.
  If fResult Then
     rlngflags = tsFN.flags
     tsGetFileFromUser = tsTrimNull(tsFN.strFile)
  Else
     tsGetFileFromUser = Null
  End If
 
tsGetFileFromUser_End:
  On Error GoTo 0
  Exit Function

tsGetFileFromUser_Err:
  Beep
  MsgBox Err.Description, , "Error: " & Err.Number _
   & " in function basBrowseFiles.tsGetFileFromUser"
  Resume tsGetFileFromUser_End

End Function

' Trim Nulls from a string returned by an API call.

Private Function tsTrimNull(ByVal strItem As String) As String
 
  On Error GoTo tsTrimNull_Err
  Dim I As Integer
 
  I = InStr(strItem, vbNullChar)
  If I > 0 Then
      tsTrimNull = Left(strItem, I - 1)
  Else
      tsTrimNull = strItem
  End If
   
tsTrimNull_End:
  On Error GoTo 0
  Exit Function

tsTrimNull_Err:
  Beep
  MsgBox Err.Description, , "Error: " & Err.Number _
   & " in function basBrowseFiles.tsTrimNull"
  Resume tsTrimNull_End

End Function

الان نقوم بحفظ ما قمنا بعمله ونختبر هذه القاعده وذلك بإدارج صور من خلال الزر الخاص بمربع حوار فتح الملفات

الحمد لله القاعدة اجتازت الاختبار وتم ادارج اول صوره من صنع يدينا وبكل بساطه ولكن لحظه لم ننتهي بعد .

طيب نريد نعمل شوية حركات فنيه ولمسات سحريه على البرنامج . مو مشكلة نعمل وفيها ايه طالما البرنامج حيكون ممتاز حسب المواصفات والمقاييس العالميه ISO2005

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

ابشروا حاضرين كل حاجه حنعملها بس لا تعصبوا علينا .

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

نروح لاشرطة الادوات ونختار ادراج صوره " فاكرين الحركه دي لما عملناها في النموذج " حركه حلوه والا ايه رأيكم .

ونختار لها صوره عشان اذا ما فيه سجل او ان السجل جديد تعرض لنا هذه الصور " يوجد مع الملف المرفق صوره من صنع ايديه .

وكمان نسمي اطار الصوره ImageFrame كما سميناه في النموذج . وبعدين ......... وبعدين انت معاك خلونا نكمل ... كل شويه وبعدين وبعدين :lol: :lol:

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

Private Sub تفصيل_Format(Cancel As Integer, FormatCount As Integer)
Me![ImageFrame].Picture = Me![ImagePath]
End Sub

انتبه لكلمة " تفصيل " في النسخه العربيه من الاكسيس في الكود ممكن تكون تكون في النسخ الانجليزيه detail غيرها اذا عندك نسخة عنجليزيه ;)

نقوم الان بالتجربه وهل الكلام ده صحيح والا لألألألأ

الحمد لله البرنامج اجتاز الاختبار وكل ما اخترنا او غيرنا صوره في النموذج بتتغير كمان في التقرير ... احمدك يارب .

فاضل شغله بسيطه نعرض التقرير في عرض التصميم ونختار مربع النص ImagePath والتسميه الخاصه به و ImageID والتسميه الخاصه به ونختار خصائص ثم نختار مرئي ( لا )

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

لا حول ولا قوة الا بالله وبعدين معاك انت خلينا نكمل . " ما عليش ياجماعه اصل فيه حاجه في الماوس بتعلق بالكتابه عشان كذا دايم اكتب وبعدين :lol: :lol:

الان سوف نعرض صفحه واحده فقط من التقرير والمسأله سهله

نقوم بعمل زر امر وخلونا نسميه مثلا ViewOne ونقوم بإختيار حدث له عند النقر ونضع هذا الكود

 
Private Sub ViewOne_Click()
Dim strReportName As String
   Dim strCriteria As String
   If NewRecord Then
       MsgBox "الرجاء ادراج صوره جديده" _
            , vbInformation, "Invalid Action"
       Exit Sub
   Else
       strReportName = "rptImage"
       strCriteria = "[ImageID]= " & Me![ImageID]
       DoCmd.OpenReport strReportName, acViewPreview, , strCriteria
   End If
End Sub

وايضا نعمل زر للطباعه ونضع به هذا الكود في حدث عند النقر

 
Private Sub ViewOne_Click()
Dim strReportName As String
   Dim strCriteria As String
   If NewRecord Then
       MsgBox "الرجاء ادراج صوره جديده" _
            , vbInformation, "Invalid Action"
       Exit Sub
   Else
       strReportName = "rptImage"
       strCriteria = "[ImageID]= " & Me![ImageID]
       DoCmd.OpenReport strReportName, acViewPreview, , strCriteria
   End If
End Sub

طيب وبعدين ..... يووووووووووووه

نقوم بعمل بقية الاوامر مثل اضافة وحذف وخروج وتحسين مظهر النموذج ..... وبعدين :lol:

خلاص انتهينا وهذا ملف مرفق

Photo2005.rar

من خلال المشاركه احببت ان اضفي نوع من المرح لان الموضوع طويل وحتى لا يمل القارئ الكريم احببنا يفرفش ويتعلم ويستفيد مع احترامي وتقديري للجميع

اختكم

زهره

تم تعديل بواسطه zahrah
3

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

38 إجابة على هذا السؤال .

  • 1

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 1

بارك الله فيك يا زهر المنتدى

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 1

طريقة جميلة وممتازة لتلافي تضخم حجم قاعدة البيانات

والشرح اجمل ووافي

الف شكر وجزاكم الله الف خير

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 1

الاخ شمس الرياض

الامر بسيط ان شاء الله تعالى

كل ما عليك هو انشاء جدول جديد به حقلين الاول يكون رقم وتسميه مثلا id2 بدون مفتاح اساسي وحقل اخر نصي تسميه مثلا pic2

الان تقوم بعمل علاقة بين حقل الصور في الجدةول الاساسي الذي في القاعدة الخاص بالصور ويكون له مفتاح اساسي وتقوم بربطه بالحقل الجديد من الجدول الثاني لنتج لدينا علاقة واحد الى متعدد 1:M

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

اختكم

زهره

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 1

شكرا جزيلا وجارى التحميل

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكراً ع الشرح والمثال

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكراً ع الشرح والمثال

طيب لو عايز اعرض الصور فى نموذج جدولى ما الحل

لانه بيكرر اول صور للكل

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

The code in this project must be updated for use on 64-bit system. Please review and update Declare statements and then mark them with the PtrSafe attribute

فما الحل بارك الله فيك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

The code in this project must be updated for use on 64-bit system. Please review and update Declare statements and then mark them with the PtrSafe attribute

فما الحل بارك الله فيك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

The code in this project must be updated for use on 64-bit system. Please review and update Declare statements and then mark them with the PtrSafe attribute

فما الحل بارك الله فيك

 

 

اخي الفاضل : ابو عيسى

 

انت تستخدم نظام 64 بت لذا استبدل الأسطر الثلاثة الأولى بهذه الأسطر

 

Private Declare PtrSafe Function ts_apiGetOpenFileName Lib "comdlg32.dll"  Alias "GetOpenFileNameA" (tsFN As tsFileName) As Boolean Private Declare PtrSafe Function ts_apiGetSaveFileName Lib "comdlg32.dll"  Alias "GetSaveFileNameA" (tsFN As tsFileName) As Boolean Private Declare PtrSafe Function CommDlgExtendedError Lib "comdlg32.dll" () As Long
 
الفرق بين الأسطر السابقة 32 بت  و  64 بت  هو اضافة كلمة PtrSafe  بعد كلمة  Declare  بمعنى اصبحت الأسطر بعد التعديل بهذه الطريقة  Private Declare PtrSafe Function
 
 
بالتوفيق
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 

اخي الفاضل : ابو عيسى

 

انت تستخدم نظام 64 بت لذا استبدل الأسطر الثلاثة الأولى بهذه الأسطر

 

Private Declare PtrSafe Function ts_apiGetOpenFileName Lib "comdlg32.dll"  Alias "GetOpenFileNameA" (tsFN As tsFileName) As Boolean Private Declare PtrSafe Function ts_apiGetSaveFileName Lib "comdlg32.dll"  Alias "GetSaveFileNameA" (tsFN As tsFileName) As Boolean Private Declare PtrSafe Function CommDlgExtendedError Lib "comdlg32.dll" () As Long
 
الفرق بين الأسطر السابقة 32 بت  و  64 بت  هو اضافة كلمة PtrSafe  بعد كلمة  Declare  بمعنى اصبحت الأسطر بعد التعديل بهذه الطريقة  Private Declare PtrSafe Function
 
 
بالتوفيق

 

الاخت الفاضلة و الاستاذة الكريمة زهرة بارك الله فيكِ و حفظكِ

في موضوع سابق طلبت امكانية جعل الوحدات النمطية تعمل على الـ 32 بت و الـ 64 بت في نفس الوقت و قد قمتِ مشكورة بطلب وضع برنامج ليتم فحص الوحدات و قد تأخرت في وضعه حينها و أنتِ مع كثرة المهام و الطلبات ربما لم تنتبهي لطلبي و اضع لكِ الرابط هنا من جديد 

و لكِ جزيل الشكر سلفا  +1 تقديرا لكِ و لجهودكِ 

الرابط هنا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الاخت الفاضلة و الاستاذة الكريمة زهرة بارك الله فيكِ و حفظكِ

في موضوع سابق طلبت امكانية جعل الوحدات النمطية تعمل على الـ 32 بت و الـ 64 بت في نفس الوقت و قد قمتِ مشكورة بطلب وضع برنامج ليتم فحص الوحدات و قد تأخرت في وضعه حينها و أنتِ مع كثرة المهام و الطلبات ربما لم تنتبهي لطلبي و اضع لكِ الرابط هنا من جديد 

و لكِ جزيل الشكر سلفا  +1 تقديرا لكِ و لجهودكِ 

الرابط هنا

 

 

راجع المشاركة الخاصة بك فقط وضعنا لك الحل بها

 

http://arabteam2000-forum.com/index.php/topic/288430-%D9%87%D9%84-%D9%8A%D9%85%D9%83%D9%86-%D8%AC%D8%B9%D9%84-%D8%A7%D9%84%D9%88%D8%AD%D8%AF%D8%A7%D8%AA-%D8%A7%D9%84%D9%86%D9%85%D8%B7%D9%8A%D8%A9-%D8%A7%D9%88-%D8%A7%D9%84%D9%83%D9%88%D8%AF%D8%A7%D8%AA-%D8%AA%D8%B9%D9%85%D9%84-%D8%B9%D9%84%D9%89-%D8%A7/

 

بالتوفيق

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 

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

تم تعديل بواسطه Kamali_82
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 

اخي الفاضل : ابو عيسى

 

انت تستخدم نظام 64 بت لذا استبدل الأسطر الثلاثة الأولى بهذه الأسطر

 

Private Declare PtrSafe Function ts_apiGetOpenFileName Lib "comdlg32.dll"  Alias "GetOpenFileNameA" (tsFN As tsFileName) As Boolean Private Declare PtrSafe Function ts_apiGetSaveFileName Lib "comdlg32.dll"  Alias "GetSaveFileNameA" (tsFN As tsFileName) As Boolean Private Declare PtrSafe Function CommDlgExtendedError Lib "comdlg32.dll" () As Long
 
الفرق بين الأسطر السابقة 32 بت  و  64 بت  هو اضافة كلمة PtrSafe  بعد كلمة  Declare  بمعنى اصبحت الأسطر بعد التعديل بهذه الطريقة  Private Declare PtrSafe Function
 
 
بالتوفيق

 

 

اختي الفاضلة زهرة بارك الله بكي و شكرا لكي كنت بحث هنا فوجدت في هذا الموضوع رد لكي عليه

http://arabteam2000-forum.com/index.php/topic/285546-declare-statements-on-64-bit/

و قلتي ان يجب تغيير مؤشرات اخرى مثل

عند اضافة  PtrSafe فإنها تحتاج ايضا الى تعديل بعض المؤشرات
 
Long  تتغير الى  LongPtr
 
فهل احتاج لتغييرها كما قلتي ام ان تعديل الاسطر الثلاثة التي تحدثتي عنها تكفي
تم تعديل بواسطه abo issa
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي الفاضل : ابو عيسى

 

استخدم الأسطر الثلاثه التي عدلتها لك فقط ولا تغير اي شيء

 

بالتوفيق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي الفاضل : ابو عيسى

 

استخدم الأسطر الثلاثه التي عدلتها لك فقط ولا تغير اي شيء

 

بالتوفيق

 

شكرا اختي الفاضلة

 

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ما شاء الله روووووعه

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لا اعتبر هذا عيباً ، والحل الذي اطرحة هو :

1 - حفظ اسم الصورة فقط بدون المسار (PATH)

2 - تعريف دالة بهذا الشكل في وحدة نمطية Module

 

Function ImgPath() As String'الصور على نفس مسار قاعدة البياناتImgPath = Application.CurrentProject.Path + "\"'الصور داخل مجلد img الموجود في نفس مسار قاعدة البيانات'ImgPath = Application.CurrentProject.Path + "\img\"End Function
3 - عند الاشارة الى اسم الصورة تستخدم الدالة السابقة بمثال شبيه :

Me![ImageFrame].Picture = ImgPath()  &  Me![ImageP

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

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

موضوع ممتاز وشرح وافي ، بارك الله فيك

وكل عام والجميع بالف خير ، وعيد سعيد ،،،

عبدالمانع

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

دائما ما يجي منك أستاذه زهره إلا كل مفيد وكل جميل بارك الله فيك .

تحياتي ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

اخي واستاذي فهد الدوسري

جزاك الله خيرا وشكرا على مرورك وتعقيبك

اخي وخبيرنا عبدالمانع

جزالك الله خير ومشكور على التعقيب

اخي شوقي المصري

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

اشكرك على مرورك ولكن ماذا تريد ان اشرح اكثر من هذا هل الشرح غير مفهوم او هناك نقاط لم تلم بها كل ما هنالك هو التطبيق فقط

اختكم

زهره

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

على العموم الف شكر على الشرح [/i]( انا مبتدأ في عالم الاكسس ) ولكن متابع جيد لكل الأخوة الافاضل حيث تعلمت منكم الكثير وشكر خاص ( للاخ / فهد الدوسر والاخ / أبن مسقط / الاخ /احمد الحربي /الاخ ابو هاجر والأخ / الالمعي وفي النهاية شكر وتقدير لكل ما نسيت اسمه .. وكذلك احترامي وتقديري للأخت زهرة بارك الله فيها (( فأنا احي فيكم روح الاسلام والعروبة حيث تمدوا يد الخير لأبناء امتكم الاسلامية والعربية لترفعوا ظلام الأميه وتثبتوا نور المعرفة في عقول اخوانكم ) )

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

أختي الفاضلة/زهرة

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

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



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .