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

كيف يتم تغيير مسار المجلد الى المسار الجديد مع الابقاء على اسماء الملفات


sandanet

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

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

تحية طيبة للأساتذة الكرام .. وبعد

 

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

حيث ان المسار الجديد الخاص برقم الموظف يتم اخذه من الجدول الاول "IETEM_NEM"  ويتم استبدال المسار القديم لهذا الموظف الموجود في الجدول الثاني "table2" مع الابقاء على اسماء الملفات .. يعني المطلوب اخذ المسار فقط كما هو موجود في الجدول الاول وتبديله مكان المسار القديم في الجدول الثاني مع الابقاء على اسماء الصور الموجودة في الجدول الثاني

 

ارجو ان يكون توضيح المشكلة مفهوم 

 

تحياتي

 

 

example1.rar

تم تعديل بواسطه sandanet
وجود خطأ
رابط هذا التعليق
شارك

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

C:\Users\pc5\Desktop\All_Files\123\2017-05-11_02.02.27_22.jpg

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

منذ ساعه, sandanet said:

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

هذا كان طلبك اخي الكريم

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

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

اخي ايمن جاري التعديل على السؤال لكن طلبي هو كالتالي "حيث ان المسار الجديد الخاص برقم الموظف يتم اخذه من الجدول الاول "IETEM_NEM"  ويتم استبدال المسار القديم لهذا الموظف الموجود في الجدول الثاني "table2" مع الابقاء على اسماء الملفات"

 

 

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

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

Do While rs1.EOF = False
s1 = Right(rs1.Fields(5), Len(rs1.Fields(5)) - InStrRev(rs1.Fields(5), "\", -1, vbBinaryCompare))
'Debug.Print s1
rs1.Edit
rs1.Fields(5) = rs2.Fields(5) & "\" & s1
rs1.Update
rs1.MoveNext
Loop

 

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

'متغير لفتح سجلات الجدول الاول
Dim rs1 As DAO.Recordset
'متغير لفتح سجلات الجدول الثاني
Dim rs2 As DAO.Recordset
'متغير نصي لتخزين اسم الصورة
Dim s1 As String

'شرط اذا كان حقل الموظف فارغا يعطي رسالة تنبيه و يخرج من الكود
If IsNull(Me.Text11) Then
MsgBox "يجب اختيار رقم الموظف اولا", vbCritical
Exit Sub
' في حال تم اختيار رقم الموظف
Else
'نفتح سجلات الجدول الاول table2 و تتم تصفية السجلات حسب رقم الموظف الذي تم اختياره من النموذج
Set rs1 = CurrentDb.OpenRecordset("select * from table2 where table2.emp_id =" & Me.Text11)
'نفتح سجلات الجدول الثاني IETEM_NEM و تتم تصفية السجلات حسب رقم الموظف الذي تم اختياره
Set rs2 = CurrentDb.OpenRecordset("select * from IETEM_NEM where IETEM_NEM.ITEM_NO =" & Me.Text11)
'حلقة دورانية للدوران على كافة سجلات جدول Table2 التي تم تحديديها برقم الموظف
Do While rs1.EOF = False
'يستخرج اسم الصورة من الجدول table2
s1 = Right(rs1.Fields(5), Len(rs1.Fields(5)) - InStrRev(rs1.Fields(5), "\", -1, vbBinaryCompare))
'Debug.Print s1
'السماح بالتعديل على الحقل
' الرقم 5 يرمز الى حقل اسم الصورة لان الترقيم يبدا من 0 و الحقل مسار الصورة رقمه 5 - اذا بدأنا عد الحقول من 0 
rs1.Edit
' تعديل مسار الصورة 
'  اسم الصورة + ننسخ القيمة من الجدول الاول و نضيف اليها مسار الصورة
rs1.Fields(5) = rs2.Fields(5) & "\" & s1
'تحديث الحقل
rs1.Update
'الذهاب الى السجل التالي
rs1.MoveNext
'تكرار دوران الحلقة
Loop
'اعادة تحديث النموذج الفرعي بعد الانتهاء من تحديث مسار الصورة
Form_form1.subform1.Requery
End If

 

 

s1 = Right(rs1.Fields(5), Len(rs1.Fields(5)) - InStrRev(rs1.Fields(5), "\", -1, vbBinaryCompare))
هذا السطر يحتوي على ثلاث دوال ساقوم بتقسيمها لسهولة الشرح

 InStrRev(rs1.Fields(5), "\", -1, vbBinaryCompare)
هذا السطر يبحث في سلسلة نصية عن قيمة معينة ويعيد الينا مكان تواجد هذه القيمة
هنا بحثت عن السطر المائل \ في الجدول table2 لاستخرج اسم الصورة
وطبعا هذه الدالة تبدا البحث من نهاية القيمة
مثلا
C:\Users\pcHome\Desktop\All_Files\123\2017-05-11_02.55.07_11.jpg
الدالة تبدا من الحرف g
وتبحث عن السطر المائل \ وعندا ايجاده تعيد الينا مكان تواجده

Len(rs1.Fields(5))
هذا السطر يعيد الينا طول احرف السلسة اي اننا هنا نعرف عدد الاحرف الموجودة في حقل اسم الصورة


 Right(rs1.Fields(5), عدد الاحرف )
هذا السطر يعيد الينا قيمة نصية من قيمة معينة مع تحديد عدد الاحرف المطلوب اعادتها حيث تبدا الدالة من يمين القيمة النصية المحددة
مثلا
right("ayman",3)
ستعيد الدالة man

وبدمج هذه الدوال الثلاثة يصبح ليدنا هذا الكود
s1 = Right(rs1.Fields(5), Len(rs1.Fields(5)) - InStrRev(rs1.Fields(5), "\", -1, vbBinaryCompare))

تعيد الدالة من يمين الحقل مسار الصورة نص طول حروفه هو عدد طول حروف النص في حقل مسار الصورة - مكان السطر المائل في حقل مسار الصورة

ارجو ان اكون قد وفقت في الشرح

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

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

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

lمشاركة مع الاستاذ محمد وبعد اذنه

Private Sub أمر0_Click()
subform1.SetFocus
For i = 1 To Me.subform1.Form.RecordsetClone.RecordCount
subform1!ImagePath = Replace(subform1!ImagePath, Left(subform1!ImagePath, InStrRev(subform1!ImagePath, "\") - 1), DLookup("pate", "IETEM_NEM", "ITEM_NO=" & subform1!emp_id))
DoCmd.GoToRecord , , acGoTo, i
Next
End Sub

تحياتي

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

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

 

  

Untitled.png

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

جرب عزيزي

subform1.SetFocus
For i = 0 To subform1.Form.RecordsetClone.RecordCount
subform1!ImagePath = Replace(subform1!ImagePath, Left(subform1!ImagePath, InStrRev(subform1!ImagePath, "\") - 1), DLookup("pate", "IETEM_NEM", "ITEM_NO=" & subform1!emp_id))
DoCmd.GoToRecord , , acGoTo, i + Abs(i <> subform1.Form.RecordsetClone.RecordCount)
Next

بالتوفيق

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

ان شاء الله تمام 100%  :clapping: تسلم ايدك يا استاذ رمهان الله يبارك فيك ماقصرت ..بالمناسبة انا حاولت تطبيق الدالة Replace من قبل بس ماوصلت لنتيجة لكن ما اتوقعتها اتكون بهذا الشكل المرعب ههههههه

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

9 ساعات مضت, محمد ايمن said:

بسم الله ما شاء الله يا استاذ رمهان

كود اكثر من رائع

تسلم وانت الاروع

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

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

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



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

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

Important Information