ابوخليل قام بنشر منذ 9 ساعات قام بنشر منذ 9 ساعات السلام عليكم قمت بحفظ ايقونة في حقل مرفقات (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
Foksh قام بنشر منذ 8 ساعات قام بنشر منذ 8 ساعات 29 دقائق مضت, ابوخليل said: السلام عليكم وعليكم السلام ورحمة الله وبركاته.. بالنظر الى الدالة ولهذا السطر تحديداً:- ImagePath = rs!progIcon.Value سيتم التعامل مع المسار على انه نص وليس كحقل مرفقات . لم أطّلع على الملف ، أتابع من الجوال حالياً. 1
ابوخليل قام بنشر منذ 8 ساعات الكاتب قام بنشر منذ 8 ساعات صحيح 100% يجب التعامل كـــ Fields("FileData") ولكني نسيتها 1
kanory قام بنشر منذ 7 ساعات قام بنشر منذ 7 ساعات 2 ساعات مضت, ابوخليل said: قمت بحفظ ايقونة في حقل مرفقات (Attachment) في جدول من اجل استخدامها في اماكن متعددة في البرنامج ذهبت الى هذا النهج من اجل تبقى الايقونة غير ظاهرة .. بحيث لا يمكن حذفها او التعديل عليها واستخدمت هذا الكود لكنه لم يعمل هل المطلوب ايقونة واحدة ام ممكن ان تكون اكثر من واحدة 1
ابوخليل قام بنشر منذ 6 ساعات الكاتب قام بنشر منذ 6 ساعات يا هلا اخوي محمد تغيب وتعود سالما غانما 27 دقائق مضت, kanory said: هل المطلوب ايقونة واحدة ام ممكن ان تكون اكثر من واحدة هي وحيدة يتيمة
ابوخليل قام بنشر منذ 2 ساعات الكاتب قام بنشر منذ 2 ساعات وجدت حلا وهي الطريقة الوحيدة التي وصلت اليها وهي نسخ الصورة وارسالها بجانب قاعدة البيانات نعم هي طريقة مفيدة ... ففي هذا الوضع لا يعتمد البرنامج على صور خارجية .. وحتى لو تم حذفها او العبث في التسمية فسوف يدرج اكسس صورة جديدة ورغم ان الارسال سيتم مرة واحدة عند اقلاع البرنامج .. الا انه عند فتح النماذج كل نموذج يتم فتحه تتم عملية حذف الصورة الموجودة وارسال صورة جديدة ويمكنني تلافي ذلك بجعل الكود يتفحص اذا الصورة موجودة بجانب قاعدة البيانات ام لا .. فإذا موجودة يأخذ من موقع الصورة مباشرة وان لم يجدها يرسل جديدة . وغالبا ستكون موجودة بجوار قاعدة البيانات . سأعرض لكم الكود الذي تمت معالجته + المرفق 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
kkhalifa1960 قام بنشر منذ 2 ساعات قام بنشر منذ 2 ساعات الدالة تصبح 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 1
Foksh قام بنشر منذ 1 ساعه قام بنشر منذ 1 ساعه 22 دقائق مضت, ابوخليل said: هل يمكن عمل متغير يحمل رابطا أو مسارا وهميا بدلا من المسار الصريح ؟ أو متغيرين .. واحد يحمل رابط وهمي والآخر يحمل اسم الملف ؟ الهدف والغاية ، فالغاية تبرر الوسيلة 😁
ابوخليل قام بنشر منذ 1 ساعه الكاتب قام بنشر منذ 1 ساعه صباح الخير اخوي خليفة عمل جميل جدا .. ولكن لاحظ ان المسار المؤقت هو فعلا مسار حقيقي ويتم حفظ الصورة في مجلد التيمب في وندوز والدليل على ذلك انه لا يمكنك ارسالها مرة اخرى لأنها موجودة فعلا بالضبط كما عملت انا اعلاه .. الا انني جعلت الصورة قريبة من اجل التعامل معها بالحذف وايضا الارتباط نريد نحاول جعل المسار وهمي وليس مؤقت
Foksh قام بنشر منذ 1 ساعه قام بنشر منذ 1 ساعه وسؤال آخر .. لماذا لم تستخدم Recordset2 بدلاً من Recordset بما أن الحقل = حقل مرفقات !!
ابوخليل قام بنشر منذ 1 ساعه الكاتب قام بنشر منذ 1 ساعه صباح الفل اخي فادي 9 دقائق مضت, Foksh said: الهدف والغاية ، فالغاية تبرر الوسيلة 😁 الغاية هي الوصول الى الهدف 3 دقائق مضت, Foksh said: وسؤال آخر .. لماذا لم تستخدم Recordset2 بدلاً من Recordset بما أن الحقل = حقل مرفقات !! لا تتهرب .. سوف امهلك الى ما بعد الافطار 1
Foksh قام بنشر منذ 1 ساعه قام بنشر منذ 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 مطلوب المسار الوهمي بعتمد تنفيذ فكرته على ماهية حاجتك له وغايتك وهدفك منه . 1
ابوخليل قام بنشر منذ 18 دقائق الكاتب قام بنشر منذ 18 دقائق منذ ساعه, 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 = FilePath & "\" & 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 ولكن هذا لا يكفي حاجتي او هدفي الى نوع من انواع الحماية الخاصة ليس بالضرورة ان يكون صورة
Foksh قام بنشر منذ 13 دقائق قام بنشر منذ 13 دقائق 3 دقائق مضت, ابوخليل said: انا عالجت هذه المشكلة .. جعلت الارسال يتم مرة واحدة عند اقلاع البرنامج .. والبرنامج بكل مكوناته سيرتبط بالصورة مباشرة ولا حاجة للارسال كنت قد أجلت الفكرة هذه حتى استوضح منك فكرة الرابط الوهمي 😅
ابوخليل قام بنشر منذ 8 دقائق الكاتب قام بنشر منذ 8 دقائق 2 دقائق مضت, Foksh said: كنت قد أجلت الفكرة هذه حتى استوضح منك فكرة الرابط الوهمي 😅 ايضا يمكن اضافة حذف الصورة عند اغلاق البرنامج ولكن ليس الهدف اظهار وحذف .. الهدف ان تظهر عن طريق متغير ان امكن .. هذا كل شيء فكرتي واضحة في اول كود ارفقته
kkhalifa1960 قام بنشر الان قام بنشر الان تفضل Function RelinkIsIco() As String Dim rs As DAO.Recordset Dim rsA As DAO.Recordset2 Dim fPath As String Dim outPath As String ' مسار ثابت وهمي fPath = "C:\MyApp\Icons\" ' إنشاء المجلد إذا غير موجود If Dir(fPath, vbDirectory) = "" Then MkDir fPath End If Set rs = CurrentDb.OpenRecordset("SELECT progIcon FROM tblEnDc") If Not (rs.EOF And rs.BOF) Then Set rsA = rs.Fields("progIcon").Value If rsA.RecordCount > 0 Then rsA.MoveFirst outPath = fPath & rsA!FileName ' حذف الملف السابق إذا موجود If Dir(outPath) <> "" Then Kill outPath ' استخراج المرفق إلى المسار الثابت rsA!FileData.SaveToFile outPath RelinkIsIco = outPath End If rsA.Close End If rs.Close Set rs = Nothing End Function
Foksh قام بنشر الان قام بنشر الان 2 دقائق مضت, ابوخليل said: ولكن ليس الهدف اظهار وحذف .. الهدف ان تظهر عن طريق متغير ان امكن .. هذا كل شيء امممم .. دعني أسلك نقاشاً كنت قد تطرقت له برؤوس أقلم في موضوع حماية الجداول على ما اعتقد .... نفذت سابقاً فكرة تقوم بالخطوات التالية من الفتح الى الاغلاق .. عند فتح قاعدة البيانات وفي نموذج البداية Frm_Start سيقوم هذا النموذج أولاً بحذف لقاعدة بيانات خلفية وهمية ( قاعدة بيانات تحميل نفس أسماء الجداول ولكن بدون سجلات ) . يتم الاتصال بقاعدة البيانات الخلفية الحقيقية والمحمية بكلمة مرور ( كالمعتاد ) ثم يعمل المشروع بكل تفاصيله . عند الإغلاق ، وقبل الخروج من قاعدة البيانات ، يتم اعادة استخراج ملف قاعدة البيانات الخلفية ( الوهمية التي قلنا انها لا تحتوي سجلات ) ثم يقوم بإعادة ربطها بدلاً من قاعدة البيانات الخلفية الحقيقية ( الحالية التي تحتوي سجلات ) . وبذلك تم تأمين السجلات والإغلاق . ليس مقصدي الانتقال للحماية ( فلا أدري ما يجول بذهنك معلمي أبو خليل ) ، لكن مقصدي هو الآلية والفكرة التي تدور حولها اسئلتك قد تساعد في الإنتاج الذي ترجوه 😅
الردود الموصى بها
انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد
يجب ان تكون عضوا لدينا لتتمكن من التعليق
انشئ حساب جديد
سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .
سجل حساب جديدتسجيل دخول
هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.
سجل دخولك الان