ابوخليل قام بنشر منذ 19 ساعات قام بنشر منذ 19 ساعات السلام عليكم قمت بحفظ ايقونة في حقل مرفقات (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 قام بنشر منذ 18 ساعات قام بنشر منذ 18 ساعات 29 دقائق مضت, ابوخليل said: السلام عليكم وعليكم السلام ورحمة الله وبركاته.. بالنظر الى الدالة ولهذا السطر تحديداً:- ImagePath = rs!progIcon.Value سيتم التعامل مع المسار على انه نص وليس كحقل مرفقات . لم أطّلع على الملف ، أتابع من الجوال حالياً. 1
ابوخليل قام بنشر منذ 18 ساعات الكاتب قام بنشر منذ 18 ساعات صحيح 100% يجب التعامل كـــ Fields("FileData") ولكني نسيتها 1
kanory قام بنشر منذ 17 ساعات قام بنشر منذ 17 ساعات 2 ساعات مضت, ابوخليل said: قمت بحفظ ايقونة في حقل مرفقات (Attachment) في جدول من اجل استخدامها في اماكن متعددة في البرنامج ذهبت الى هذا النهج من اجل تبقى الايقونة غير ظاهرة .. بحيث لا يمكن حذفها او التعديل عليها واستخدمت هذا الكود لكنه لم يعمل هل المطلوب ايقونة واحدة ام ممكن ان تكون اكثر من واحدة 1
ابوخليل قام بنشر منذ 16 ساعات الكاتب قام بنشر منذ 16 ساعات يا هلا اخوي محمد تغيب وتعود سالما غانما 27 دقائق مضت, kanory said: هل المطلوب ايقونة واحدة ام ممكن ان تكون اكثر من واحدة هي وحيدة يتيمة 1
ابوخليل قام بنشر منذ 11 ساعات الكاتب قام بنشر منذ 11 ساعات وجدت حلا وهي الطريقة الوحيدة التي وصلت اليها وهي نسخ الصورة وارسالها بجانب قاعدة البيانات نعم هي طريقة مفيدة ... ففي هذا الوضع لا يعتمد البرنامج على صور خارجية .. وحتى لو تم حذفها او العبث في التسمية فسوف يدرج اكسس صورة جديدة ورغم ان الارسال سيتم مرة واحدة عند اقلاع البرنامج .. الا انه عند فتح النماذج كل نموذج يتم فتحه تتم عملية حذف الصورة الموجودة وارسال صورة جديدة ويمكنني تلافي ذلك بجعل الكود يتفحص اذا الصورة موجودة بجانب قاعدة البيانات ام لا .. فإذا موجودة يأخذ من موقع الصورة مباشرة وان لم يجدها يرسل جديدة . وغالبا ستكون موجودة بجوار قاعدة البيانات . سأعرض لكم الكود الذي تمت معالجته + المرفق 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 قام بنشر منذ 11 ساعات قام بنشر منذ 11 ساعات الدالة تصبح 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 قام بنشر منذ 11 ساعات قام بنشر منذ 11 ساعات 22 دقائق مضت, ابوخليل said: هل يمكن عمل متغير يحمل رابطا أو مسارا وهميا بدلا من المسار الصريح ؟ أو متغيرين .. واحد يحمل رابط وهمي والآخر يحمل اسم الملف ؟ الهدف والغاية ، فالغاية تبرر الوسيلة 😁
ابوخليل قام بنشر منذ 11 ساعات الكاتب قام بنشر منذ 11 ساعات صباح الخير اخوي خليفة عمل جميل جدا .. ولكن لاحظ ان المسار المؤقت هو فعلا مسار حقيقي ويتم حفظ الصورة في مجلد التيمب في وندوز والدليل على ذلك انه لا يمكنك ارسالها مرة اخرى لأنها موجودة فعلا بالضبط كما عملت انا اعلاه .. الا انني جعلت الصورة قريبة من اجل التعامل معها بالحذف وايضا الارتباط نريد نحاول جعل المسار وهمي وليس مؤقت
Foksh قام بنشر منذ 11 ساعات قام بنشر منذ 11 ساعات وسؤال آخر .. لماذا لم تستخدم Recordset2 بدلاً من Recordset بما أن الحقل = حقل مرفقات !!
ابوخليل قام بنشر منذ 11 ساعات الكاتب قام بنشر منذ 11 ساعات صباح الفل اخي فادي 9 دقائق مضت, Foksh said: الهدف والغاية ، فالغاية تبرر الوسيلة 😁 الغاية هي الوصول الى الهدف 3 دقائق مضت, Foksh said: وسؤال آخر .. لماذا لم تستخدم Recordset2 بدلاً من Recordset بما أن الحقل = حقل مرفقات !! لا تتهرب .. سوف امهلك الى ما بعد الافطار 1
Foksh قام بنشر منذ 11 ساعات قام بنشر منذ 11 ساعات مهو علشان أعرف أفكر وانا بفطر، شجعنا بالهدف المنشود لنحدد الوسيلة التي سنسير بها 😉 . على العموم ، بالنسبة للمطلوب الأول هذه وجهة نظري بالتعديل :- 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
ابوخليل قام بنشر منذ 10 ساعات الكاتب قام بنشر منذ 10 ساعات منذ ساعه, 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 ولكن هذا لا يكفي حاجتي او هدفي الى نوع من انواع الحماية الخاصة ليس بالضرورة ان يكون صورة
Foksh قام بنشر منذ 10 ساعات قام بنشر منذ 10 ساعات 3 دقائق مضت, ابوخليل said: انا عالجت هذه المشكلة .. جعلت الارسال يتم مرة واحدة عند اقلاع البرنامج .. والبرنامج بكل مكوناته سيرتبط بالصورة مباشرة ولا حاجة للارسال كنت قد أجلت الفكرة هذه حتى استوضح منك فكرة الرابط الوهمي 😅
ابوخليل قام بنشر منذ 10 ساعات الكاتب قام بنشر منذ 10 ساعات 2 دقائق مضت, Foksh said: كنت قد أجلت الفكرة هذه حتى استوضح منك فكرة الرابط الوهمي 😅 ايضا يمكن اضافة حذف الصورة عند اغلاق البرنامج ولكن ليس الهدف اظهار وحذف .. الهدف ان تظهر عن طريق متغير ان امكن .. هذا كل شيء فكرتي واضحة في اول كود ارفقته
kkhalifa1960 قام بنشر منذ 9 ساعات قام بنشر منذ 9 ساعات تفضل 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 قام بنشر منذ 9 ساعات قام بنشر منذ 9 ساعات 2 دقائق مضت, ابوخليل said: ولكن ليس الهدف اظهار وحذف .. الهدف ان تظهر عن طريق متغير ان امكن .. هذا كل شيء امممم .. دعني أسلك نقاشاً كنت قد تطرقت له برؤوس أقلم في موضوع حماية الجداول على ما اعتقد .... نفذت سابقاً فكرة تقوم بالخطوات التالية من الفتح الى الاغلاق .. عند فتح قاعدة البيانات وفي نموذج البداية Frm_Start سيقوم هذا النموذج أولاً بحذف لقاعدة بيانات خلفية وهمية ( قاعدة بيانات تحميل نفس أسماء الجداول ولكن بدون سجلات ) . يتم الاتصال بقاعدة البيانات الخلفية الحقيقية والمحمية بكلمة مرور ( كالمعتاد ) ثم يعمل المشروع بكل تفاصيله . عند الإغلاق ، وقبل الخروج من قاعدة البيانات ، يتم اعادة استخراج ملف قاعدة البيانات الخلفية ( الوهمية التي قلنا انها لا تحتوي سجلات ) ثم يقوم بإعادة ربطها بدلاً من قاعدة البيانات الخلفية الحقيقية ( الحالية التي تحتوي سجلات ) . وبذلك تم تأمين السجلات والإغلاق . ليس مقصدي الانتقال للحماية ( فلا أدري ما يجول بذهنك معلمي أبو خليل ) ، لكن مقصدي هو الآلية والفكرة التي تدور حولها اسئلتك قد تساعد في الإنتاج الذي ترجوه 😅
Foksh قام بنشر منذ 9 ساعات قام بنشر منذ 9 ساعات وجب مني التوضيح وبما أننا نتعامل مع الصور حالياً ، فإن آكسيس وباستخدام مسار وهمي لملف غير موجود سينتج لك خطأ قريباً من هذا :- وبالتالي ، الداعي للتوضح يستدعي التنقيح .
Moosak قام بنشر منذ 9 ساعات قام بنشر منذ 9 ساعات 29 دقائق مضت, ابوخليل said: الهدف ان تظهر عن طريق متغير ان امكن .. يمكنك تجربة الكود الأخير للأخ خليفة أو أن تضيف حقل نصي بجانب حقل المرفق يحفظ لك رابط الصورة أو الملف في الخارج ويتم تحديثه عند كل عملية إخراج .. وعندها سيبقى الرابط مسجلا عندك بشكل دائم ويمكنك الرجوع إليه حتى عند إقلاع البرنامج (لفحص وجود الملف مثلا) .. وعندك أكثر من طريقة لعمل دالة عامة Function ترجع لك الرابط المسجل في الجدول 🙂
ابوخليل قام بنشر منذ 6 ساعات الكاتب قام بنشر منذ 6 ساعات 3 ساعات مضت, Moosak said: يمكنك تجربة الكود الأخير للأخ خليفة أو أن تضيف حقل نصي بجانب حقل المرفق يحفظ لك رابط الصورة أو الملف في الخارج ويتم تحديثه عند كل عملية إخراج .. وعندها سيبقى الرابط مسجلا عندك بشكل دائم ويمكنك الرجوع إليه حتى عند إقلاع البرنامج (لفحص وجود الملف مثلا) .. وعندك أكثر من طريقة لعمل دالة عامة Function ترجع لك الرابط المسجل في الجدول 🙂 الكود في مشاركتي الاخيرة وافي وكافي ... فقط تضاف هذه الجملة عند اغلاق البرنامج لمن اراد حذف الملف FilePath = CurrentProject.Path & "\" & "soccer.png" Result = Dir(FilePath) If Result <> "" Then Kill FilePath End if وهذا يعني انك لم تفهم عني ما اريد راجع نقاشي مع اخونا فادي 1
Moosak قام بنشر منذ 5 ساعات قام بنشر منذ 5 ساعات 6 ساعات مضت, ابوخليل said: نريد نحاول جعل المسار وهمي وليس مؤقت كلها كانت محاولات لفهم ماذا تقصد بالمسار الوهمي ؟!! فعلا قصدك غير واضح 😅🖐️
Foksh قام بنشر منذ 4 ساعات قام بنشر منذ 4 ساعات طيب ، كمحاولة وأعتقد انها بعيدة كل البعد عن ما يجول في خاطر أستاذنا أبو خليل .. حاولت الانتقال الى حجز مسار الصورة بعد الاستخراج أو عند وجودها من خلال TempVars . كما في المثال البسيط التالي :- Public Function RelinkIsIco() As String Dim rs As DAO.Recordset Dim rst As DAO.Recordset2 Dim FilePath As String Set rs = CurrentDb.OpenRecordset("SELECT progIcon FROM tblEnDc") Set rst = rs.Fields("progIcon").Value If Not rst.EOF Then FilePath = CurrentProject.Path & "\" & rst.Fields("FileName").Value If Dir(FilePath) = "" Then rst.Fields("FileData").SaveToFile FilePath End If TempVars.Add "IconPath", FilePath RelinkIsIco = FilePath End If rst.Close: Set rst = Nothing rs.Close: Set rs = Nothing End Function وعليه فإنه يمكن استخدام مسار هذا الـ TempVars حتى كمصدر للصورة أو أينما تريد ( كقيمة ثابتة لا تتأثر بالأخطاء البرمجية مثل المتغيرات العامة التي قد تكون String ) . والإستدعاء كما هو حالياً لديك . أو حتى في مصدر عنصر الصورة :- =[TempVars]![IconPath]
ابوخليل قام بنشر منذ 1 ساعه الكاتب قام بنشر منذ 1 ساعه 2 ساعات مضت, Foksh said: طيب ، كمحاولة وأعتقد انها بعيدة كل البعد عن ما يجول في خاطر أستاذنا أبو خليل نفس الفكرة يتم لصق المرفق بجانب قاعدة البيانات ان قلت يمكن حذفها مباشرة بعد اغلاق الاستدعاء نعم ولكنها تذهب الى سلة المحذوفات ايضا قد تقول يمكننا حذفها نهائيا من دون المرور على السلة اقول انا لا اريدها تخرج من قاعدة البيانات ابتداءً
Foksh قام بنشر منذ 32 دقائق قام بنشر منذ 32 دقائق 42 دقائق مضت, ابوخليل said: نفس الفكرة اعتذر .. الفكرة والمطلوب غير واضحين لي نهائياً 😐 .
الردود الموصى بها
انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد
يجب ان تكون عضوا لدينا لتتمكن من التعليق
انشئ حساب جديد
سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .
سجل حساب جديدتسجيل دخول
هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.
سجل دخولك الان