اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

(تمت الاجابة) توزيع مسار ملف وتجزئته على حقول ( مع الشرح)


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

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

أساتذتي الفضلاء ...

لدي مجلد به برنامج ومجموعة مجلدات (المجلد يحتوي على مجلد آخر فرعي والمجلد الفرعي أيضا على ملف)

أريد من البرنامج في حال اختيار المجلد من المسار أن يقوم البرنامج تلقائيا بأخذ اسم المجلد الأصلي ووضعه في سجل الجدول الذي بعنوان اسم المجلد الأصلي ويأخذ اسم المجلد الفرعي ويضعه في خانة اسم المجلد الفرعي ويأخذ اسم الملف ويضعه في خانة اسم الملف..

وبالمثال بتضح المقال ...

والله يرعاكم

sss.rar

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

 

Option Compare Database

Private StLevelDir As String

Private NdLevelDir As String

Private RdLevelDir As String

Private Sub Command0_Click()

  Dim dlgOpenFile As FileDialog

    Dim vDBFile As String

    Set dlgOpenFile = Application.FileDialog(msoFileDialogFilePicker)

    With dlgOpenFile

	    .Filters.Add "All Files", "*.*", 1

	    .ButtonName = "ÃÎÊÑ ÇáÃáÝ"

	    .Title = "ÝÖÜÜáÇ ÃÎÊÑ ÇáÃáÝ"

	    .AllowMultiSelect = False

	    If .Show Then

		   For Each MyFileName In .SelectedItems

			    vDBFile = MyFileName

			    [StrNew] = vDBFile

			    StLevelDir = Left([StrNew], InStrRev([StrNew], ".") - 1)

			    NdLevelDir = Left([StLevelDir], InStrRev([StLevelDir], "\") - 1)

			    RdLevelDir = Left([NdLevelDir], InStrRev([NdLevelDir], "\") - 1)

			    picNm = Mid(StLevelDir, InStrRev(StLevelDir, "\") + 1, 10)

			    gropNm = Mid(NdLevelDir, InStrRev(NdLevelDir, "\") + 1, 10)

			    folderNm = Mid(RdLevelDir, InStrRev(RdLevelDir, "\") + 1, 10)

		    Next

	    Else

		    Set dlgOpenFile = Nothing

	    End If

 End With

End Sub

السلام عليكم هذا هو التمكن والاحتراف استاذنا العزيز

ولكن طلابك لا يستوعبون غالب ما تحويه هذه الاسطر وعلى رأسهم كاتب هذه السطور

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

وفقك الله لكل خير

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

الاستاذ العزيز ابوخليل

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

على العموم التعديلات التي تمت هي انشاء ثلاثة متغيرات في النموذج لحفظ المسارات وهذه المتغيرات هي

Private StLevelDir As String

Private NdLevelDir As String

Private RdLevelDir As String
ثم قمت باضافة هذه الاسطر

				StLevelDir = Left([StrNew], InStrRev([StrNew], ".") - 1)

				NdLevelDir = Left([StLevelDir], InStrRev([StLevelDir], "\") - 1)

				RdLevelDir = Left([NdLevelDir], InStrRev([NdLevelDir], "\") - 1)

				picNm = Mid(StLevelDir, InStrRev(StLevelDir, "\") + 1, 10)

				gropNm = Mid(NdLevelDir, InStrRev(NdLevelDir, "\") + 1, 10)

				folderNm = Mid(RdLevelDir, InStrRev(RdLevelDir, "\") + 1, 10)


الأسطر الثلاثة الأولى لاستخلاص المسارات ابتداء من المستوى الاول (مسار الملف "الصورة") ومنه نستخلص مسار المستوى الثاني (المجلد الذي يحتوي هذا الملف) ومنه المستوى الثالث (المجلد الذي يحتوي المجلد الأول) وذلك باستخدام دالتي Left & InStrRev

حيث تقوم دالة Left (كما تعلم) بإقتطاع النص من اليسار بعدد احرف محدد وتم استخلاص عدد الأحرف بإستخدام دالة InStrRev حيث تقوم هذه الدالة باستخراج ترتيب (موقع) اي حرف أو سلسة نصية ضمن سلسلة أكبر ولكن ابتداء من نهاية السلسلة النصية المطلوبة (أي بعكس دالة InStr التي تعطينا ترتيب أو موقع الحرف ولكن من بداية السلسلة)

وللتوضيح ففي السطر الأول فأننا نطلب ان يستخرج لنا المسار كامل ولكن بعد استقطاع النص الذي يلي (".") وذلك لكي نستبعد نوع الملف وفي السطر الثاني نطلب منه ان يستخرج نفس المسار الناتج في السطر الأول ولكن بعد إستبعاد النص الذي يلي ("\") فينتج لنا مسار بالمجلد الأول ونفس الأمر لاستخراج مسار المجلد الثاني

في الثلاثة أسطر التالية نقوم باستخدام دالة Mid والتي تقوم باستخراج جزء من النص نقوم بتحديد بدايته وعدد احرفه

فيكون السطر الرابع طلب جزء من المسار الأول الخاص بالملف حيث نقول له اقتطع جزء من نص المسار الاول ابتداء من موقع ("\") ولعدد 10 احرف (يمكن زيادتها او انقاصها ولكني جعلتها 10 احرف على اعتبار انه عدد ملائم لإسم ملف أو مجلد) وكذلك الأمر لبقية المسارات

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

واي استفسارات اخرى انا في الخدمة

تحياتي,,,

sss.rar

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

ما شاء الله تبارك الله وفق الله الجميع لكل خير ...

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

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

والله الموفق...

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

إخوتي الفضلاء

وإن غاب الأحبة عن ناظري ، ففي القلب لهم مستقر

في هذه المشاركات الطيبات ثلاثة ممن أحبهم في الله

بسطاء ، محترفون ، محترمون ، أهل قَدر وشأن

شكر الله لكم ومتّعكم بموفور الصحة والعافية

.........

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

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