sandanet قام بنشر مايو 11, 2017 قام بنشر مايو 11, 2017 (معدل) السلام عليكم ورحمة الله وبركاته تحية طيبة للأساتذة الكرام .. وبعد في المرفق التالي مثال المطلوب فيه هو بعد اختيار رقم الموظف من الكومبوبكس لفلترة النموذج الفرعي فعند الضغط على زر الأمر يقوم بتعديل المسار حيث ان المسار الجديد الخاص برقم الموظف يتم اخذه من الجدول الاول "IETEM_NEM" ويتم استبدال المسار القديم لهذا الموظف الموجود في الجدول الثاني "table2" مع الابقاء على اسماء الملفات .. يعني المطلوب اخذ المسار فقط كما هو موجود في الجدول الاول وتبديله مكان المسار القديم في الجدول الثاني مع الابقاء على اسماء الصور الموجودة في الجدول الثاني ارجو ان يكون توضيح المشكلة مفهوم تحياتي example1.rar تم تعديل مايو 11, 2017 بواسطه sandanet وجود خطأ
sandanet قام بنشر مايو 11, 2017 الكاتب قام بنشر مايو 11, 2017 أخي محمد اولاً اشكرك على سرعة الاستجابة ثانياً عند الضغط على زر تعديل المسار فإنه يضع المسار الجديد لكن بدون اسماء الملفات يعني المفروض يكون المسار بهذا الشكل C:\Users\pc5\Desktop\All_Files\123\2017-05-11_02.02.27_22.jpg
محمد ايمن قام بنشر مايو 11, 2017 قام بنشر مايو 11, 2017 منذ ساعه, sandanet said: يعني المطلوب اخذ المسار فقط كما هو موجود في الجدول الاول هذا كان طلبك اخي الكريم على العموم لا مشكلة انت تريد اذا اخذ مسار الصورة ثم تعديل المسار من الجدول الاول و اضافة مسار الصورة لهذا المسار
sandanet قام بنشر مايو 11, 2017 الكاتب قام بنشر مايو 11, 2017 (معدل) اخي ايمن جاري التعديل على السؤال لكن طلبي هو كالتالي "حيث ان المسار الجديد الخاص برقم الموظف يتم اخذه من الجدول الاول "IETEM_NEM" ويتم استبدال المسار القديم لهذا الموظف الموجود في الجدول الثاني "table2" مع الابقاء على اسماء الملفات" تم تعديل مايو 11, 2017 بواسطه sandanet
sandanet قام بنشر مايو 11, 2017 الكاتب قام بنشر مايو 11, 2017 بارك الله فيك اخي محمد هذا ما كنت اطمح اليه بالفعل بس لو تكرمت ممكن شرح هذا الكود لانني حاولت الوصول الى تلك الطريقة لكني لم افلح 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
محمد ايمن قام بنشر مايو 11, 2017 قام بنشر مايو 11, 2017 'متغير لفتح سجلات الجدول الاول 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)) تعيد الدالة من يمين الحقل مسار الصورة نص طول حروفه هو عدد طول حروف النص في حقل مسار الصورة - مكان السطر المائل في حقل مسار الصورة ارجو ان اكون قد وفقت في الشرح 2
sandanet قام بنشر مايو 11, 2017 الكاتب قام بنشر مايو 11, 2017 (معدل) ماشاء الله عليك ربي يحفظك ويبارك فيك شرح مفصل بشكل رائع .. بارك الله فيك أخي محمد .. سأحاول تطبيق ماتفضلت به على برنامجي الخاص .. ان شاء الله ماتطلع معي مشكلة تم تعديل مايو 11, 2017 بواسطه sandanet
رمهان قام بنشر مايو 11, 2017 قام بنشر مايو 11, 2017 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 تحياتي
sandanet قام بنشر مايو 12, 2017 الكاتب قام بنشر مايو 12, 2017 أستاذي الكبير رمهان يشرفني جدا رؤية مشاركتك هذا الموضوع .. بخصوص الكود الذي تفضلت به قمت بتجربته وقد اعجبني فيه بساطته لكني لاحظت انه لم يقم بتغيير المسار لكل الملفات التي تخص الرقم المختار 123 كما في الصورة المرفقة الا بعد الضغط مرة أخرى على الزر .. يعني اول ضغطة غير الملفين الأوليين وفي الضغطة الثانية غير الملف الأخير
رمهان قام بنشر مايو 12, 2017 قام بنشر مايو 12, 2017 جرب عزيزي 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 بالتوفيق 3
sandanet قام بنشر مايو 12, 2017 الكاتب قام بنشر مايو 12, 2017 ان شاء الله تمام 100% تسلم ايدك يا استاذ رمهان الله يبارك فيك ماقصرت ..بالمناسبة انا حاولت تطبيق الدالة Replace من قبل بس ماوصلت لنتيجة لكن ما اتوقعتها اتكون بهذا الشكل المرعب ههههههه 2
محمد ايمن قام بنشر مايو 12, 2017 قام بنشر مايو 12, 2017 بسم الله ما شاء الله يا استاذ رمهان كود اكثر من رائع 2
رمهان قام بنشر مايو 13, 2017 قام بنشر مايو 13, 2017 9 ساعات مضت, محمد ايمن said: بسم الله ما شاء الله يا استاذ رمهان كود اكثر من رائع تسلم وانت الاروع 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.