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

مساعدة في حفظ مسار ملف ( اضافة - فتح - حذف )


إذهب إلى أفضل إجابة Solved by Moosak,

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

السلام عليكم 

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

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

  • أفضل إجابة

وعليكم السلام أخي أزهر 🙂 

طلبط بسيط بإذن الله ، ولكن سأعرض عليك خدمات أكثر 😊

- هل تريد نقل الملف أيضا إلى مجلد بجانب قاعدة البيانات ؟

- وإضافة زر لفتح الملف .. ؟

- وزر آخر لحذفه ؟

إذا كانت إجابتك بنعم .. فسأرفق لك الأكواد ..

 

أما إذا كنت فقط ستكتفي بالسؤال فهذا هو الكود الذي طلبته 🙂 :

    On Error GoTo ErrHandler
    
    Dim fd As Object
    Dim filedialogPath As String
    
    Set fd = Application.FileDialog(1)
    
    fd.AllowMultiSelect = False
    fd.Title = "حدد الملف المطلوب"
    fd.Filters.Clear
    fd.Filters.Add "كل الملفات", "*.*"
      
    If fd.Show = True Then
    'Debug.Print fd.SelectedItems(1)
    Me.filesource = fd.SelectedItems(1)
    Else
    MsgBox "لم تقم باختيار أي ملف"
    Exit Sub
    End If

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

 

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

تفضل أخي أزهر 🙂 

(1) هذه الأكواد الاثلاثة لأزرار [إضافة ملف] و [فتح الملف] و [حذف الملف] :

Private Sub AddFilesBtn_Click()
'================================================================ هذا الجزء يوضع على الزر الذي يضيف الملف
Dim file As String
Dim fileName As String
Dim SavePath As String

If Me.NewRecord Then MsgBox "أكتب التفاصيل أولا", vbOKOnly, "": Exit Sub

file = selectFile
If IsBlank(file) Then Exit Sub
fileName = GetFileName(file)
SavePath = BECurrentPath & "attachments\" & [ID] & "\" & fileName

' يتم حفظ الملف في مجلد المرفقات بجانب قاعدة البيانات في مجلد بنفس رقم الآيدي
MkDir (BECurrentPath & "attachments\")
MkDir (BECurrentPath & "attachments\" & [ID] & "\")

FileCopy file, SavePath
' حفظ المسار في مربع النص
Me.filepath = fileName
Me.Refresh

MsgBox "تم إضافة الملف بنجاح"

End Sub


'================================================================ هذا الجزء يوضع على الزر الذي يفتح الملف
Private Sub BrowserBtn_Click()
    
    On Error GoTo ErrorFix
     
    If Not IsBlank(Me.filepath) Then
        If IsFileExists(Me.filepath) = False Then
        MsgBox "لا يمكن العثور على الملف"
        Else
        OpenPath Me.filepath
        End If
        Exit Sub
    Else
        MsgBox "لا يوجد مرفقات"
        Exit Sub
    End If
    
ErrorFix:
    If Err.Number = 0 Then
    On Error Resume Next
    Else
    MsgBox Err.Number & "\\\" & Err.Description
    End If
End Sub


'================================================================ هذا الجزء يوضع على زر الحذف
Private Sub DeletBtn_Click()
On Error GoTo whathapen
 
If MsgBox("هل أنت متأكد من رغبتك في حذف المرفق ؟", vbYesNo, "تأكيد الحذف") = vbYes Then
Else
Exit Sub
End If
 
     If Not IsBlank(Me.filepath) Then
         
         If IsFileExists(Me.filepath) = False Then
             MsgBox "لا يمكن العثور على الملف"
             Exit Sub
         Else
             DleteFolder BECurrentPath & "attachments\" & [ID]
             Me.Attachment = ""
             MsgBox "تم حذف الملف"
             Exit Sub
         End If
     
    Else
        MsgBox "لا توجد مرفقات"
        Exit Sub
     End If
         
whathapen:
    If Err.Number = 53 Then
    MsgBox "لا توجد ملفات لحذفها"
    Exit Sub
    ElseIf Err.Number = 0 Then
    On Error Resume Next
    Else
    MsgBox Err.Number & "\\\" & Err.Description
    End If
End Sub

 

(2) وهذه الأكواد ضرورية لتشغيل الأكواد السابقة .. ضعها في موديول منفصل :

Public Function selectFile()

    On Error GoTo ErrHandler
    
    Dim fd As FileDialog
    Dim filedialogPath As String
    
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    
    fd.AllowMultiSelect = False
    fd.Title = "حدد الملف المطلوب"
'    fd.InitialFileName = CurrentProject.Path
    fd.Filters.Clear
    fd.Filters.Add "كل الملفات", "*.*"
      
    If fd.Show = True Then
    selectFile = fd.SelectedItems(1)
'    Exit Function
    Else
    MsgBox "لم تقم باختيار أي ملف"
    Exit Function
    End If

ErrHandler:
    If Err.Number = 0 Then Exit Function Else
    MsgBox "Error Number : " & Err.Number & " :::: " & Err.Description
'    End If
    
End Function
      
Public Function IsBlank(arg As Variant) As Boolean
    Select Case VarType(arg)
        Case vbEmpty
            IsBlank = True
        Case vbNull
            IsBlank = True
        Case vbString
            IsBlank = (LenB(arg) = 0)
        Case vbObject
            IsBlank = (arg Is Nothing)
        Case Else
            IsBlank = IsMissing(arg)
    End Select
End Function

Public Function GetFileName(txtPath As String) As String

' To Extract File Name From A given Path
GetFileName = Right(txtPath, Len(txtPath) - InStrRev(txtPath, "\"))

End Function
  
Public Function IsFileExists(txtPath As String) As Boolean

' To check whether a given file or folder exists or not

If Len(Dir(txtPath, vbDirectory)) = 0 Then
   IsFileExists = False
Else
   IsFileExists = True
End If

End Function

Public Sub OpenPath(strpath As String)
	Shell "explorer.exe" & " " & strpath, vbNormalFocus
End Sub

Public Function DleteFolder(FolderPath As String)
Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
fs.DeleteFolder FolderPath, True
Set fs = Nothing
End Function
                                                     
                                                     
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

 

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

  • 1 month later...

عملت السابق 

ولكن بيطلع خطأ باللون الأصفر على دالة 

selectFile

Error: ambiguous name detected access

 

عندي 4 ملفات Attatchment في الفورم الواحد 

 

كيف أربط الأزرار بخانة "Attatchment" ليقوم بعمل السابق

 

 

 هل أربطه بخانة تيكست لمسار الملف ولا ما هي المعايير المطلوبة لتنفيذه داخل الفورم

 

 @Moosakوشكرا

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

2 ساعات مضت, أحمد محمد اسماعيل عامر said:

بيطلع خطأ باللون الأصفر على دالة 

selectFile

هذه الدالة موجودة هنا .. يجب نقل هذا الجزء لبرنامجك :

في ٤‏/٢‏/٢٠٢٣ at 10:52, Moosak said:

(2) وهذه الأكواد ضرورية لتشغيل الأكواد السابقة .. ضعها في موديول منفصل :

وبالنسبة لهذه الجزئية :

2 ساعات مضت, أحمد محمد اسماعيل عامر said:

كيف أربط الأزرار بخانة "Attatchment" ليقوم بعمل السابق

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

في ٤‏/٢‏/٢٠٢٣ at 10:52, Moosak said:
' حفظ المسار في مربع النص
Me.filepath = fileName

 

2 ساعات مضت, أحمد محمد اسماعيل عامر said:

Moosakوشكرا

عفوا 🙂🌹

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

1 ساعه مضت, أحمد محمد اسماعيل عامر said:

هل وجدت حل للمشكلة اللي بالملف؟

نعم أخي أحمد 🙂 

لديك العديد من الأخطاء .. يبدو أنك نقلت الكود كما هو بدون أن تغير فيه القيم الموجودة في برنامجك ..

image.png.24bac3a719369aa8c2df0dc01e09b09e.png

1 - ليس لديك حقل اسمه [ID] ، الحقل عندك اسمه [IDRep]

2- هذا المفروض يكون اسم الحقل الذي تحفظ فيه رابط الملف .. ولكنه غير موجود ، وتحتاج لإضافة 4 حقول لأن لديك 4 صور ..

3 - مكرر .. تزيله

4 - وجدت أنك كررت الدالة selectFile مرتين في موديولين مختلفين لذلك لم تعمل معك .. الحل أن تحذف واحدة وتبقي الأخرى .

5 - وكذلك لديك 8 مكتبات مفقودة ، يجب عليك أن تصلحها :

image.png.dbe3cfda99d3d4f16e57471d546bed19.png

6- تابع الأكواد التي نسختها من هنا حتى آخرها وغير أسماء الحقول حسب الحقول الموجودة عندك :

image.png.174567a94f87a0e44a10b684a306f448.png

7- الحقول ال4 التي في النموذج هي حقول مرفقات .. بينما المفروض أنها تكون حقول [صور] :

image.png.8e727a30a5f18116c559a737d4eaa7ed.png

8- أسفل كل حقل من حقول الصور تضيف حقل نصي (تضيفها في الجدول أولا ) وذلك لتخزين مسارات الصور ... وتجعلها مخفية في النموذج .

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

في 2‏/2‏/2023 at 15:36, ازهر عبد العزيز said:

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

اساتذتي الافاضل يبدو أنكم نسيتوا هديتي لكم التي بها كل ماطلبتم وهاهي مرةً أخرى .:fff:

 

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

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