اذهب الي المحتوي
أوفيسنا

تعديل مسار المرفقات عند نقل البرنامج مع الملفات


HaniMoursi

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

عند نموذج رئيسي (Table1) ومعه نموذج فرعي بالنموذج الفرعي (Table2) عندى زر اضافة مرفق يفتح نافذه بختار المرفق ليتم تخزينه مساره في الجدول Table2

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

التراخيص.zip

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

لاحظ انك لن تغير في المسارات والروابط في الجدول

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

العملية عبارة عن التالي :

اقتطاع جزء من المسار الموجود في الجدول وهذا الجزء عبارة عن : اسم الملف / المجلد الأول / المجلد الثاني

ثم نضيف اليه مسار هذه المجلدات الافتراضي

طبعا سيبقى المسار في الجدول كما هو وانما نمرر المسار الجديد

متغيرين عامين'
Dim getfldr1, getfldr2 As String

'  لاستخراج اسم الملف من الرابط الموجود في الجدول
Dim i, ii
i = Right(Me.LetterLink, Len(Me.LetterLink) - InStrRev(Me.LetterLink, "\"))

'استخراج اسم المجلد المباشر للملف واسم المجلد الذي قبله
Dim fileName As String
fileName = Me.LetterLink
Dim vPathSplitter As Variant
vPathSplitter = Split(fileName, "\")
getfldr1 = (vPathSplitter(UBound(vPathSplitter) - 1))
getfldr2 = (vPathSplitter(UBound(vPathSplitter) - 2))

تمرير المسار الجديد'
ii = CurrentProject.path & "\" & getfldr2 & "\" & getfldr1 & "\" & i

فتح الملف'
Application.FollowHyperlink ii

 

التراخيص2.rar

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

استاذي أبو خليل هل ممكن اضافة زر لتغيير المسار بالجدول حسب مسار القاعدة الجديد (الكل مرةً واحدة)

السؤال مهم جدا خصوصاً لان المسار به أكثر من مجلد 

جزاك الله كل الخير :fff:

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

الأستاذ العزيز @ابوخليل جابلك الحل للقاعدة الحالية جزاه الله خيرا .. 🙂 

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

وبهذي الطريقة ممكن تنقل البرنامج لأي جهاز ثاني بدون ما تتأثر البيانات في الجدول وما يحتاج تغيرها كل مرة تنقل البرنامج ..

توضيح ومثال :

مثلا هذا رابط الملف كاملا (مع العلم أن ملف قاعدة البيانات موجود في المجلد الذي باللون الأخضر ):

D:\MoosaKDataBase\Files\Id_Folder_564\MyWordFile.docx

 

إحفظ في الجدول الجزء الذي باللون الأحمر فقط :

D:\MoosaKDataBase\Files\Id_Folder_564\MyWordFile.docx

 

هكذا :

Files\Id_Folder_564\MyWordFile.docx

 

ولما تحتاج تستدعي الملف تخلي هاذا الكود يكمل لك الباقي :  

CurrentProject.path & "\" & a

 

وسيكون الرابط مكتملا هكذا 

CurrentProject.path & "\" & Files\Id_Folder_564\MyWordFile.docx

 

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

 

وسلامتكم 😉🖐🏼️

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

19 ساعات مضت, ابوخليل said:

لاحظ انك لن تغير في المسارات والروابط في الجدول

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

العملية عبارة عن التالي :

اقتطاع جزء من المسار الموجود في الجدول وهذا الجزء عبارة عن : اسم الملف / المجلد الأول / المجلد الثاني

ثم نضيف اليه مسار هذه المجلدات الافتراضي

طبعا سيبقى المسار في الجدول كما هو وانما نمرر المسار الجديد

متغيرين عامين'
Dim getfldr1, getfldr2 As String

'  لاستخراج اسم الملف من الرابط الموجود في الجدول
Dim i, ii
i = Right(Me.LetterLink, Len(Me.LetterLink) - InStrRev(Me.LetterLink, "\"))

'استخراج اسم المجلد المباشر للملف واسم المجلد الذي قبله
Dim fileName As String
fileName = Me.LetterLink
Dim vPathSplitter As Variant
vPathSplitter = Split(fileName, "\")
getfldr1 = (vPathSplitter(UBound(vPathSplitter) - 1))
getfldr2 = (vPathSplitter(UBound(vPathSplitter) - 2))

تمرير المسار الجديد'
ii = CurrentProject.path & "\" & getfldr2 & "\" & getfldr1 & "\" & i

فتح الملف'
Application.FollowHyperlink ii

 

التراخيص2.rar 719.22 kB · 15 downloads

اخي الكريم ابوخليل انا جربت والامر تمام الحمد لله 
لكن في سؤال مهم جدا جدا في حال زيادة عدد الملفات بمعنى زاد ملفات 3 هل احتاج الى اضافة هذا البند
getfldr3= (vPathSplitter(UBound(vPathSplitter)-3))
وهكذا لأن البرنامج عندى بيأخذ من ملفات كتير وهي تخص اطفاء ، بلديه ، مرور ، صناعه ، جمارك . الى آخره
وشكرا جزيلا

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

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

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

وسلامتكم 😉🖐🏼️

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

6 ساعات مضت, kkhalifa1960 said:

استاذي أبو خليل هل ممكن اضافة زر لتغيير المسار بالجدول حسب مسار القاعدة الجديد (الكل مرةً واحدة)

السؤال مهم جدا خصوصاً لان المسار به أكثر من مجلد 

جزاك الله كل الخير :fff:

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

4 ساعات مضت, HaniMoursi said:

اخي الكريم ابوخليل انا جربت والامر تمام الحمد لله 
لكن في سؤال مهم جدا جدا في حال زيادة عدد الملفات بمعنى زاد ملفات 3 هل احتاج الى اضافة هذا البند
getfldr3= (vPathSplitter(UBound(vPathSplitter)-3))
وهكذا لأن البرنامج عندى بيأخذ من ملفات كتير وهي تخص اطفاء ، بلديه ، مرور ، صناعه ، جمارك . الى آخره
وشكرا جزيلا

الرقم 1  ( المستوى الأول ) يعني المجلد الاقرب لملف الصورة اي المجلد الذي بداخله الصور

والرقم 2 ( المستوى الثاني ) هو المجلد الذي قبله وهو الظاهر بجانب قاعدة البيانات

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

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

تفضل المرفق بعد التعديل

التراخيص3.rar

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

2 دقائق مضت, ابوخليل said:

ولكن يعملها بقيمة متغير غير محفوظة

أي تعم بالضبط أستاذنا @ابوخليل .. 🙂 

وأنا أقترح أن يكتبها في الاستعلام كعمود جديد للرابط كاملا .. أو مصدر بيانات العناصر في النموذج ( مربع نص غير  منظم كمثال )

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

46 دقائق مضت, ابوخليل said:

واللي فهمته منها : تعديل المسار للموقع الافتراضي لحظة ادراج الصورة

سأجيبك بمثال ومرفق :

هكذا يتم حفظ الروابط في الجدول ( سواء كانت بمستوى واحد أو مستويين أو كما تشاء ) :

image.png.e2963b08eeef36578a4ba21d9927a9e1.png

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

image.png.f7ead76d4ba47b12f26ecc2cb516d648.png

 

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

Public Function BECurrentPath()

    On Error GoTo ErrHandler
    Dim FullLinkedPath As String
    Dim LinkedDBPath As String

    FullLinkedPath = Nz(DLookup("Database", "MSysObjects", "Type=6"), "")

   If FullLinkedPath <> "" Then
   		 LinkedDBPath = Left(FullLinkedPath, InStrRev(FullLinkedPath, "\") - 1)    
  		  BECurrentPath = LinkedDBPath & "\"
    Else
 		   BECurrentPath = CurrentProject.Path & "\"
    End If

ErrHandler:
    If Err.Number = 0 Then Exit Function Else
    MsgBox "Error Number : " & Err.Number & " :::: " & Err.Description
End Function

 

Attachments.accdb

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

15 ساعات مضت, ابوخليل said:
22 ساعات مضت, kkhalifa1960 said:

استاذي أبو خليل هل ممكن اضافة زر لتغيير المسار بالجدول حسب مسار القاعدة الجديد (الكل مرةً واحدة)

السؤال مهم جدا خصوصاً لان المسار به أكثر من مجلد 

جزاك الله كل الخير :fff:

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

نعم استاذي ومعلمي هذا لصورة واحدة فالذي أريده كما طلبت سالفا ........ اضافة زر لتغيير المسار بالجدول حسب مسار القاعدة الجديد (الكل مرةً واحدة)

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

16 ساعات مضت, ابوخليل said:

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

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

الرقم 1  ( المستوى الأول ) يعني المجلد الاقرب لملف الصورة اي المجلد الذي بداخله الصور

والرقم 2 ( المستوى الثاني ) هو المجلد الذي قبله وهو الظاهر بجانب قاعدة البيانات

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

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

تفضل المرفق بعد التعديل

التراخيص3.rar 721.83 kB · 15 downloads

شكرا جزيلا اخي الكريم بوخليل احسنت ربنا يعزك ويرفع قدرك

9 دقائق مضت, jjafferr said:

يا سلام ، الكل متفق على نفس الطريقة ، ولكن احدكم يرى الكأس نصف مليان ، والآخر يراه نصف فاضي 🙂

 

جعفر

استاذ جعفر من الناس المحترمه

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

17 ساعات مضت, ابوخليل said:

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

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

الرقم 1  ( المستوى الأول ) يعني المجلد الاقرب لملف الصورة اي المجلد الذي بداخله الصور

والرقم 2 ( المستوى الثاني ) هو المجلد الذي قبله وهو الظاهر بجانب قاعدة البيانات

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

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

تفضل المرفق بعد التعديل

التراخيص3.rar 721.83 kB · 16 downloads

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

الكود.jpg

المسار بالجدول.jpg

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

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

بالنسبة للمشكلة هي من حقل id في النموذج الفرعي ( مخفي ) يبدو فيه مشكلة لاني نسخته من حقل آخر

المهم اني حذفته واستبدلته بحقل جديد

نسيت في اجابتي السابقة ان اخبرك باني اضفت حقل ترقيم تلقائي في جدول 2

جرب الآن انقل المثال الى اي جهاز وجرب ثم وافني بالنتيجة

 

التراخيص4.rar

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

في 2‏/2‏/2023 at 21:56, ابوخليل said:

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

بالنسبة للمشكلة هي من حقل id في النموذج الفرعي ( مخفي ) يبدو فيه مشكلة لاني نسخته من حقل آخر

المهم اني حذفته واستبدلته بحقل جديد

نسيت في اجابتي السابقة ان اخبرك باني اضفت حقل ترقيم تلقائي في جدول 2

جرب الآن انقل المثال الى اي جهاز وجرب ثم وافني بالنتيجة

 

التراخيص4.rar 739.08 kB · 20 downloads

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

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

21 ساعات مضت, HaniMoursi said:

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

صباح الخير استاذ بوخليل متاسف للازعاج لأني حاول تكتير لكن نفس الخطأ عندما انقل النموذج للبرنامج الاصلى تظهر لى نفس الخطأ كما هو موضح بالصوره علما بأن البرنامج يعمل بشكل ممتاز قبل نقله للبرنامج الاصلى وانا ايضا لاحظت id الذي حضرتك اضفته ملاحظه هامه جدا المرفق حيانا jpg واغلبهم PDF

نفس الخطاء1.jpg

وجهة البرنامج.jpg

الملفات المرفقه مع البرنامج.jpg

فتح ملف ثلج الجسار.jpg

الاطفاء.jpg

تم تعديل بواسطه HaniMoursi
رابط هذا التعليق
شارك

في 1‏/2‏/2023 at 12:07, Moosak said:

الأستاذ العزيز @ابوخليل جابلك الحل للقاعدة الحالية جزاه الله خيرا .. 🙂 

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

وبهذي الطريقة ممكن تنقل البرنامج لأي جهاز ثاني بدون ما تتأثر البيانات في الجدول وما يحتاج تغيرها كل مرة تنقل البرنامج ..

توضيح ومثال :

مثلا هذا رابط الملف كاملا (مع العلم أن ملف قاعدة البيانات موجود في المجلد الذي باللون الأخضر ):

D:\MoosaKDataBase\Files\Id_Folder_564\MyWordFile.docx

 

إحفظ في الجدول الجزء الذي باللون الأحمر فقط :

D:\MoosaKDataBase\Files\Id_Folder_564\MyWordFile.docx

 

هكذا :

Files\Id_Folder_564\MyWordFile.docx

 

ولما تحتاج تستدعي الملف تخلي هاذا الكود يكمل لك الباقي :  

CurrentProject.path & "\" & a

 

وسيكون الرابط مكتملا هكذا 

CurrentProject.path & "\" & Files\Id_Folder_564\MyWordFile.docx

 

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

 

وسلامتكم 😉🖐🏼️

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

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

في 1‏/2‏/2023 at 19:42, Moosak said:

سأجيبك بمثال ومرفق :

هكذا يتم حفظ الروابط في الجدول ( سواء كانت بمستوى واحد أو مستويين أو كما تشاء ) :

image.png.e2963b08eeef36578a4ba21d9927a9e1.png

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

image.png.f7ead76d4ba47b12f26ecc2cb516d648.png

 

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

Public Function BECurrentPath()

    On Error GoTo ErrHandler
    Dim FullLinkedPath As String
    Dim LinkedDBPath As String

    FullLinkedPath = Nz(DLookup("Database", "MSysObjects", "Type=6"), "")

   If FullLinkedPath <> "" Then
   		 LinkedDBPath = Left(FullLinkedPath, InStrRev(FullLinkedPath, "\") - 1)    
  		  BECurrentPath = LinkedDBPath & "\"
    Else
 		   BECurrentPath = CurrentProject.Path & "\"
    End If

ErrHandler:
    If Err.Number = 0 Then Exit Function Else
    MsgBox "Error Number : " & Err.Number & " :::: " & Err.Description
End Function

 

Attachments.accdb 428 kB · 15 downloads

افهم من كدا إن زر الامر هيضيف فقط اسم المرفق بدون مسار وفي fullpath هيجب المسار بالكامل والسؤال كيف اضيف فقط اسم المسار وليس عنوانه بالكامل مع العلم بأني فهمت الطريقه بالاستعلام 

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

1 ساعه مضت, HaniMoursi said:

افهم من كدا إن زر الامر هيضيف فقط اسم المرفق بدون مسار وفي fullpath هيجب المسار بالكامل والسؤال كيف اضيف فقط اسم المسار وليس عنوانه بالكامل مع العلم بأني فهمت الطريقه بالاستعلام 

سأحاول شرحها لاحقا بمثال تطبيقي في موضوع منفصل إن شاء الله 🙂 

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

27 دقائق مضت, Moosak said:

سأحاول شرحها لاحقا بمثال تطبيقي في موضوع منفصل إن شاء الله 🙂 

تمام جزاك الله خير
ارجو اخبرى بذلك وشكرا جدا لحضرتك

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

1 ساعه مضت, ابوخليل said:

تأكد من نقل هذا الفنكشن الى برنامجك

 

Untitled.jpg

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

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information