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

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

قام بنشر

السلام عليكم

قمت بحفظ ايقونة في حقل مرفقات (Attachment) في جدول من اجل استخدامها في اماكن متعددة في البرنامج

ذهبت الى هذا النهج من اجل تبقى الايقونة غير ظاهرة .. بحيث لا يمكن حذفها او التعديل عليها

واستخدمت هذا الكود لكنه لم يعمل

 Function RelinkIsIco() As String
    Dim rs As DAO.Recordset
    Dim ImagePath As String
     Set rs = CurrentDb.OpenRecordset("SELECT * FROM tblEnDc")
           ImagePath = rs!progIcon.Value
          RelinkIsIco = ImagePath
      rs.Close
    Set rs = Nothing
End Function


Private Sub cmdShar_Click()
Me.img1.Picture = RelinkIsIco()
End Sub

آمل التصحيح

ادناه مثال للتجربة

Database1.rar

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

السلام عليكم

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

بالنظر الى الدالة ولهذا السطر تحديداً:-

ImagePath = rs!progIcon.Value

سيتم التعامل مع المسار على انه نص وليس كحقل مرفقات .

 

لم أطّلع على الملف ، أتابع من الجوال حالياً.

  • Like 1
قام بنشر
2 ساعات مضت, ابوخليل said:

قمت بحفظ ايقونة في حقل مرفقات (Attachment) في جدول من اجل استخدامها في اماكن متعددة في البرنامج

ذهبت الى هذا النهج من اجل تبقى الايقونة غير ظاهرة .. بحيث لا يمكن حذفها او التعديل عليها

واستخدمت هذا الكود لكنه لم يعمل

هل المطلوب ايقونة واحدة ام ممكن ان تكون اكثر من واحدة

 

  • Like 1
قام بنشر

يا هلا  اخوي محمد 

تغيب وتعود سالما غانما

27 دقائق مضت, kanory said:

هل المطلوب ايقونة واحدة ام ممكن ان تكون اكثر من واحدة

هي وحيدة يتيمة :smile:

قام بنشر

وجدت حلا وهي الطريقة الوحيدة التي وصلت اليها

وهي نسخ الصورة وارسالها بجانب قاعدة البيانات

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

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

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

وغالبا ستكون موجودة بجوار قاعدة البيانات .

سأعرض لكم الكود الذي تمت معالجته + المرفق

 Function RelinkIsIco() As String
Dim rs As DAO.Recordset
Dim rst As DAO.Recordset
Dim strFilePath As String
 Set rs = CurrentDb.OpenRecordset("tblEnDc")
 Set rst = rs.Fields("progIcon").Value
    strFilePath = CurrentProject.Path & "\" & rst.Fields("FileName").Value
    Kill strFilePath
    rst.Fields("FileData").SaveToFile strFilePath
rst.Close : Set rst = Nothing 
rs.Close : Set rs = Nothing 

RelinkIsIco = strFilePath
End Function

Private Sub cmdShar_Click()
Me.img1.Picture = RelinkIsIco
End Sub

 

ولكني اطمح الى عمل افضل من ذلك وهنا يأتي السؤال :

هل يمكن عمل متغير يحمل رابطا أو مسارا وهميا بدلا من المسار الصريح  ؟ 

أو متغيرين .. واحد يحمل رابط وهمي والآخر يحمل اسم الملف ؟

 

Database2.rar

قام بنشر

الدالة تصبح

Function RelinkIsIco() As String
    Dim rs As DAO.Recordset
    Dim rsA As DAO.Recordset2
    Dim fPath As String
    Dim tempPath As String

    ' فتح السجل
    Set rs = CurrentDb.OpenRecordset("SELECT progIcon FROM tblEnDc")

    If Not (rs.EOF And rs.BOF) Then
        Set rsA = rs.Fields("progIcon").Value  ' Recordset خاص بالمرفقات

        If rsA.RecordCount > 0 Then
            rsA.MoveFirst

            ' تحديد مسار مؤقت في Windows Temp
            tempPath = Environ$("TEMP") & "\" & rsA!FileName

            ' استخراج الملف من المرفقات إلى المسار المؤقت
            rsA!FileData.SaveToFile tempPath

            RelinkIsIco = tempPath
        End If

        rsA.Close
    End If

    rs.Close
    Set rs = Nothing
End Function

واستدعاؤها 

Private Sub cmdShar_Click()
    Me.img1.Picture = RelinkIsIco()
End Sub

 

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

هل يمكن عمل متغير يحمل رابطا أو مسارا وهميا بدلا من المسار الصريح  ؟ 

أو متغيرين .. واحد يحمل رابط وهمي والآخر يحمل اسم الملف ؟

الهدف والغاية ، فالغاية تبرر الوسيلة 😁

قام بنشر

صباح الخير اخوي خليفة

عمل جميل جدا .. 

ولكن لاحظ ان المسار المؤقت هو فعلا مسار حقيقي ويتم حفظ الصورة في مجلد التيمب في وندوز

والدليل على ذلك انه لا يمكنك ارسالها مرة اخرى لأنها موجودة فعلا

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

نريد نحاول جعل المسار وهمي وليس مؤقت

 

قام بنشر

وسؤال آخر ..

لماذا لم تستخدم Recordset2 بدلاً من Recordset بما أن الحقل = حقل مرفقات !!

قام بنشر

 

صباح الفل اخي فادي

 

9 دقائق مضت, Foksh said:

الهدف والغاية ، فالغاية تبرر الوسيلة 😁

الغاية هي الوصول الى الهدف :smile:

3 دقائق مضت, Foksh said:

وسؤال آخر ..

لماذا لم تستخدم Recordset2 بدلاً من Recordset بما أن الحقل = حقل مرفقات !!

لا تتهرب .. سوف امهلك الى ما بعد الافطار :yes:

  • Haha 1
قام بنشر

مهو علشان أعرف أفكر وانا بفطر، شجعنا بالهدف المنشود لنحدد الوسيلة التي سنسير بها 😉 .

على العموم ، بالنسبة للمطلوب الأول هذه وجهة نظري بالتعديل :-

Function RelinkIsIco() As String
    Dim rs As DAO.Recordset
    Dim rst As DAO.Recordset2
    Dim strFilePath As String
    
    Set rs = CurrentDb.OpenRecordset("SELECT progIcon FROM tblEnDc")
    
    If Not rs.EOF Then
        Set rst = rs.Fields("progIcon").Value
        If Not rst.EOF Then
            strFilePath = CurrentProject.Path & "\" & rst.Fields("FileName").Value
            If Dir(strFilePath) <> "" Then Kill strFilePath
            rst.Fields("FileData").SaveToFile strFilePath
            RelinkIsIco = strFilePath
        End If
        rst.Close: Set rst = Nothing
    End If
    
    rs.Close: Set rs = Nothing
End Function

 

مطلوب المسار الوهمي بعتمد تنفيذ فكرته على ماهية حاجتك له وغايتك وهدفك منه .

  • Like 1
قام بنشر
38 دقائق مضت, Foksh said:

 

على العموم ، بالنسبة للمطلوب الأول هذه وجهة نظري بالتعديل :-

 

كل الطرق اعلاه واحدة

طريقتك كل فتح لاي نموذج اذا النماذج تحمل ايقونات في الاطار .. كل فتح يتم حذف الصورة ثم ارسالها مرة اخرى

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

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

 Function RelinkIsIco() As String
Dim rs As DAO.Recordset
Dim rst As DAO.Recordset2
Dim FilePath As String
Dim strFilePath As String
Dim Result As String
 
 FilePath = CurrentProject.Path & "\" & "soccer.png"
    Result = Dir(FilePath)
    If Result <> "" Then
     RelinkIsIco = FilePath
      Exit Function
        
        Else
  Set rs = CurrentDb.OpenRecordset("tblEnDc")
 Set rst = rs.Fields("progIcon").Value
    strFilePath = CurrentProject.Path & "\" & rst.Fields("FileName").Value
    rst.Fields("FileData").SaveToFile strFilePath
RelinkIsIco = strFilePath
End If

rst.Close
Set rst = Nothing
rs.Close
Set rs = Nothing
End Function

ولكن  هذا لا يكفي

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

 

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

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

 

كنت قد أجلت الفكرة هذه حتى استوضح منك فكرة الرابط الوهمي 😅

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

كنت قد أجلت الفكرة هذه حتى استوضح منك فكرة الرابط الوهمي 😅

ايضا يمكن اضافة حذف الصورة عند اغلاق البرنامج

ولكن ليس الهدف اظهار وحذف .. الهدف ان تظهر  عن طريق متغير ان امكن .. هذا كل شيء

فكرتي واضحة في اول كود ارفقته

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

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

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

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

سجل حساب جديد

تسجيل دخول

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

سجل دخولك الان
×
×
  • اضف...

Important Information