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

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

قام بنشر

السلام عليكم

المرفق ادناه يحتوي مثل ما في الصورة المعروضة

عند النقر على الزر يفتح مربع حوار اكسس ، وعند النقر على  Open يتم فتح المرفق

المطلوب :

لا اريد ظهور مربع حوار اكسس

اريد ان يتم فتح المرفق من الزر مباشرة 

Untitled.jpg

DbTest.rar

قام بنشر
22 دقائق مضت, ابوخليل said:

ند النقر على الزر يفتح مربع حوار اكسس ، وعند النقر على  Open يتم فتح المرفق

المطلوب :

لا اريد ظهور مربع حوار اكسس

اريد ان يتم فتح المرفق من الزر مباشرة 

وعليكم السلام اهلا بك استاذي القدير @ابوخليل

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

Private Sub cmdOpenAttachment_Click()

    Dim rs As DAO.Recordset2
    Dim rsA As DAO.Recordset2
    Dim fld As DAO.Field2
    Dim tmpPath As String
    Dim fileName As String

    'افتح السجل الحالي
    Set rs = Me.Recordset
    
    'اسم الحقل الذي يحتوي على المرفق
    Set fld = rs.Fields("MyAttachmentField")   '← غيّر الاسم حسب جدولك

    If fld.Value Is Nothing Then
        MsgBox "لا يوجد مرفق لفتحه.", vbExclamation
        Exit Sub
    End If

    'افتح المرفق داخل الحقل
    Set rsA = fld.Value

    If rsA.RecordCount = 0 Then
        MsgBox "لا يوجد مرفق.", vbExclamation
        Exit Sub
    End If

    rsA.MoveFirst

    'الاسم الأصلي للمرفق
    fileName = rsA.Fields("FileName").Value

    'حدد مسار مجلد مؤقت
    tmpPath = Environ("TEMP") & "\" & fileName

    'احفظ المرفق كملف مؤقت
    rsA.Fields("FileData").SaveToFile tmpPath

    'افتح الملف بالبرنامج الافتراضي
    FollowHyperlink tmpPath

End Sub

 

  • Like 1
قام بنشر

متابع عن بعد 😊 

لأن ما يفعله آكسيس هو استخراج المرفق إلى مجلد Temp ثم فتحه باستخدام :-

FollowHyperlink filePath

 

قام بنشر
21 دقائق مضت, Foksh said:

متابع عن بعد 😊 

لأن ما يفعله آكسيس هو استخراج المرفق إلى مجلد Temp ثم فتحه باستخدام :-

 

يجب ان تتابع عن قرب

افتح مجلد التيمب بعد اظهار المجلدات المخفية واجعله مفتوحا من اجل تتأكد  عند الاجراء

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

قام بنشر
27 دقائق مضت, ابوخليل said:

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

اعتذر عن مقاطعتك ومخالفتك الرأي :wub:  .. فآكسيس يستخدم المسار التالي في مربع حوار المرفقات عند النقر على الزر Open

C:\Users\Foksh\AppData\Local\Microsoft\Windows\INetCache\ACC9BE9

المسار من جهازي الشخصي باستبدال اسم المستخدم Foksh في جهازك للتجربة

قام بنشر

انظر الصورة المرفقة للتأكد .

Look@.gif.68b21f86b76d5813361735fbf954a09b.gif

 

لذالك ، وتحقيقاً لنفس الفكرة من زر Open .. استخدمت الدالة التالية :-

Public Sub OpenAttachmentFile(ByVal RecordID As Long, Optional ByVal PKFieldName As String = "ID")
    Dim rs As DAO.Recordset
    Dim rst As DAO.Recordset2
    Dim filePath As String
    Dim cachePath As String
    Dim subFolder As String
    
    cachePath = Environ("LOCALAPPDATA") & "\Microsoft\Windows\INetCache\"
    
    Randomize
    subFolder = "ACC" & Int((9999 * Rnd) + 1)
    
    If Dir(cachePath & subFolder, vbDirectory) = "" Then
        MkDir cachePath & subFolder
    End If
    
    Set rs = CurrentDb.OpenRecordset("SELECT progIcon FROM tblEnDc WHERE " & PKFieldName & "=" & RecordID)
    Set rst = rs.Fields("progIcon").Value
    
    If Not rst.EOF Then
        filePath = cachePath & subFolder & "\" & rst.Fields("FileName").Value
        
        If Dir(filePath) = "" Then
            rst.Fields("FileData").SaveToFile filePath
        End If
        
        FollowHyperlink filePath
    End If
    
    rst.Close: Set rst = Nothing
    rs.Close: Set rs = Nothing
End Sub

واستدعيها حسب رقم السجل من خلال الزر كما يلي :-

Call OpenAttachmentFile(Me.ID)

 

طبعاً اسم المجلد عشوائي لمحاكاة نفس اسلوب آكسيس في السطر
 

subFolder = "ACC" & Int((9999 * Rnd) + 1)

 

  • Thanks 1
قام بنشر
منذ ساعه, kanory said:

 والحيله هي تصدير المرفق ثم التعامل معه .... في مثالك مثلا والطلب بفتح المرفق مباشرة .... الكود يقوم اولا بتصديره ثم فتحه .... جرب هذا الكود لاني لم افتح القاعدة التي لديك

 

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

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

اقتباس

لذالك ، وتحقيقاً لنفس الفكرة من زر Open .. استخدمت الدالة التالية :-

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

وهو الذي يقوم به اكسس

ايضا لاحظت بالتتبع انه يحذف المرفق بعد الاغلاق .. وهذا جيد .. سوف اطبقها

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

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

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

×
×
  • اضف...

Important Information