تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[C#.NET] [تم الحل]حذف صورة مخزنة خارج قاعدة البيانات
#1
السلام عليكم ورحمة الله وبركاته
اخوتي الكرام
هذا مثال لحفظ بيانات في قاعدة بيانات اكسس ولامشكلة مع البيانات او تخزين الصورة
المشكلة هي عندما اقوم بحذف سجل  يتم حذف السجل لكن الصورة لاتنحذف وتطهر رسالة 
مفادها ان الصورة مستخدمة ولايمكن حذفها وعملت جاهدا لكن دون جدوى عقلي في حالة جمود هذه الايام
فضلا لو تكرمتم حل هذه المشكلة 
مرفق البرنامج 


الملفات المرفقة
.rar   TTT5.rar (الحجم : 1,021.8 ك ب / التحميلات : 18)
اعمل الخير واجرك لاتنتظره فالله خير من اليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد
تم الشكر بواسطة: عبد العزيز البسكري , asemshahen5
#2
وعليكم السلام ورحمة الله وبركاته ،،

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

الحل :

كود :
// ==================   كود تحميل وجلب صورة
       private void Btn_LoadPicture_Click(object sender, EventArgs e)
       {
           try
           {
                   OpenFileDialog ofd = new OpenFileDialog();

                   if ((ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK))
                   {

                   ofd.Filter = "JPEG,BMP,PNG  (*تحديد صورة)) (Select Image) |*.jpg;*.jpeg;*.bmp;*.png";
                       FileStream fs = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read);
                           byte[] filebytes = new byte[fs.Length];
                       fs.Read(filebytes, 0, Convert.ToInt32(fs.Length));

                       Pb_VegFruit_Pic.Image = Image.FromStream(new System.IO.MemoryStream(filebytes));
                       fs.Close();
                       fs = null;
                   }
                   else
                   {
                       MessageBox.Show("عفواً الغي الأمر بناء على طلبك");
                       this.Focus();
               }

           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.Message);
           }
       }
يا رحمن الدنيا والآخرة ورحيمهما
الرد
#3
السلام عليكم أخي حريف برمجة
نعم نعم تماما انا افتح الصورة الاصل لذلك تبقى مستخدمة من قبل البرنامج لقد فاتتني هذه النقطة
ولم اعد افكر سوى كبف احذف الصورة كم انت رائع ايها المنتدى يابيت الاوفياء انا ممتن لك جدا ياأخي
تقبل تحباتي واحترامي وتقييمي لعلمك وشخصك الكريم
اعمل الخير واجرك لاتنتظره فالله خير من اليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد
تم الشكر بواسطة: elgokr , حريف برمجة , asemshahen5 , الرائد
#4
وعليكم السلام ورحمة الله وبركاته

فى البداية انا غير قادر على تعديل
على المرفق واعادة رفعه لك بسبب اختلاف الاصدار

ولكن اتبع الشرح التالى وستتمكن من حل المشكلة
فى البداية تعال على كود الحذف الخاص بحدث Btn_Delete_Click


وقم باستبدال ما بداخل الحدث بهذا الكود
كود :
           try
           {
               if (MessageBox.Show("هل انت متأكد من حذف السجل؟", "Alert", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
               {
                   int EmpNum = int.Parse(Txt_VegFruit_Id.Text);
                   Delete_VegFruits(Convert.ToInt32(Txt_VegFruit_Id.Text));
                   Pb_VegFruit_Pic.Image.Dispose();
                   File.Delete("image\\" + EmpNum + ".jpg");

                   Cleardata_VegFruits();
                   SelectAll_VegFruits();
               }
               else
               {
                   return;
               }
           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.Message, "alert", MessageBoxButtons.OK, MessageBoxIcon.Information);
           }

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

للداتا جريد باسم Dgv_VF_Click وتضع به الكود التالى
كود :
           try
           {
               Txt_VegFruit_Id.Text = Dgv_VF.CurrentRow.Cells[0].Value.ToString();
               Txt_VegFruit_Name.Text = Dgv_VF.CurrentRow.Cells[1].Value.ToString();
               Cmb_VegFruit_Type.Text = Dgv_VF.CurrentRow.Cells[2].Value.ToString();
               Txt_VegFruit_About.Text = Dgv_VF.CurrentRow.Cells[3].Value.ToString();
               Txt_Notes.Text = Dgv_VF.CurrentRow.Cells[4].Value.ToString();
               Txt_ImgePath.Text = "image\\" + Txt_VegFruit_Id.Text + ".jpg";
               Pb_VegFruit_Pic.Image = Image.FromFile("image\\" + Txt_VegFruit_Id.Text + ".jpg");
           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.Message);
           }

بكده سيتم حل مشكلة حذف الصورة عند اتمام حذف البيان 

ملحوظة اخيرة فقط
ان تجعل البرنامج يعمل على بيئة 32Bit

لكونك تستخدم الاتصال بقاعدة البيانات 
PHP كود :
Microsoft.Jet.OLEDB.4.0 

فهو يعمل على بيئة 32Bit فقط
لم يحدث اى مشكلة لديك لكون جهازك على بيئة 32Bit
واذا قمت باختبار البرنامج بعد الانتهاء على بيئة 64Bit لن يعمل
الا اذا مكنت السورس ان يكون على بيئة 32Bit

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد
تم الشكر بواسطة: ابراهيم ايبو , asemshahen5
#5
السلام عليكم اخي حريف برمجة
 الصورة مخزنة في مجلد الصور  وعند عرض البيانات في datagridView  اقوم بجلب اسم الصورة واضعه في مربع نص الاسم
والصورة ايضا اجلبها وفق الكود التالي لعرضها في pictureBox هذا هو الاستخدام فقط ولاحاجة لعمل فتح صورة عن طريق openfileDialog
اريد فقط حذف الصورة مع السجل المراد حذفه بعني ارتباط الصورة مع السجل وعند حذف السجل تنحذف الصورة 
على كل حال ذهني غير صاف مشغول على امي واختي سلم الله غواليكم  أشكرك مرة اخرى ولاغنى عنك وعن رأيك ومشورتك
سأجد الحل ان شاء الله دمت بخير صدبقي
كود :
Txt_ImgePath.Text = "image\\" + Txt_VegFruit_Id.Text + ".jpg";
               Pb_VegFruit_Pic.Image = Image.FromFile("image\\" + Txt_VegFruit_Id.Text + ".jpg");

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







الرد
تم الشكر بواسطة: asemshahen5
#6
راجع ردي الاخير اخى الحبيب
وستتمكن من حل المشكلة تماماً

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد
#7
السلام عليكم اخوتي الكرام 
اخي وحبيبي Elgokr تحية لك من القلب
انا لم الحظ ردك لانني عكفت على كتابة الحل وبتوفيق من الله تمكنت من ذلك 
حيث قمت بتعديل كود الحذف وعرفت متغير يحمل قيمة حقل الترقيم  ووضعت بعد كود حذف السجل  استدعاء الداتا ثم كود حذف الصورة
وعدلت كود Dgv_VF_SelectionChanged
يحيث استدعيت الصورة وحولتها الى مصفوفة ووضعتها في FileStream  ثم حملتها في مربع الصورة
ووضعت الحل ليستفيد منه الجميع



كود :
   private void Btn_Delete_Click(object sender, EventArgs e)
       {
          int EmpNum = int.Parse(Txt_VegFruit_Id.Text);
           try
           {
               if (MessageBox.Show("هل انت متأكد من حذف السجل؟", "Alert", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
               {
                   Delete_VegFruits(Convert.ToInt32(Txt_VegFruit_Id.Text));
                  // تمت اضافة هذا السطر
                   SelectAll_VegFruits();    // اعادة تحميل الداتا قبل حذف الصورة

                   File.Delete("image\\" + EmpNum + ".jpg");
              }
               else
               {
                   return;
               }
           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.Message, "alert", MessageBoxButtons.OK, MessageBoxIcon.Information);
           }
           Cleardata_VegFruits();
           SelectAll_VegFruits();

       }

       private void Btn_New_Click(object sender, EventArgs e)
       {
           Cleardata_VegFruits();
       }

       private void Dgv_VF_SelectionChanged(object sender, EventArgs e)
       {
           try
           {
               Txt_VegFruit_Id.Text = Dgv_VF.CurrentRow.Cells[0].Value.ToString();
               Txt_VegFruit_Name.Text = Dgv_VF.CurrentRow.Cells[1].Value.ToString();
               Cmb_VegFruit_Type.Text = Dgv_VF.CurrentRow.Cells[2].Value.ToString();
               Txt_VegFruit_About.Text = Dgv_VF.CurrentRow.Cells[3].Value.ToString();
               Txt_Notes.Text = Dgv_VF.CurrentRow.Cells[4].Value.ToString();
               Txt_ImgePath.Text = "image\\" + Txt_VegFruit_Id.Text + ".jpg";
               //Pb_VegFruit_Pic.Image = Image.FromFile("image\\" + Txt_VegFruit_Id.Text + ".jpg");
               // ثم تحميلها في مربع الصورة  (fs) هنا جلب الصورة وتحويلها الى بايت مصفوفة ثم وضعها في
               FileStream fs = new FileStream(Txt_ImgePath.Text, FileMode.Open, FileAccess.Read);
               byte[] filebytes = new byte[fs.Length];
               fs.Read(filebytes, 0, Convert.ToInt32(fs.Length));
               Pb_VegFruit_Pic.Image = Image.FromStream(new System.IO.MemoryStream(filebytes));
               fs.Close();
               fs = null;
               }
           catch (Exception ex)
           {
               MessageBox.Show(ex.Message);
           }
       }


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







الرد
تم الشكر بواسطة: حريف برمجة , elgokr , asemshahen5


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مساعده فى رفع قاعده البيانات على استضافه maxruined 1 27 , 02:58 AM
آخر رد: asemshahen5
  [C#.NET] تشغيل فديو من قاعده البيانات ssayed111 2 170 23-04-20, 03:15 PM
آخر رد: سعود
  [سؤال] طريقة برمجة زرار اخذ نسخة احتياطية من قاعدة بيانات sql بلغة فيجول ahmeddor 3 204 28-03-20, 05:16 PM
آخر رد: asemshahen5
  [سؤال] ماهي طريقة الاتصال بقاعدة البيانات بتقنية Entity Framework اثناء تشغيل البرنامج younass 3 307 24-01-20, 11:06 PM
آخر رد: جميل5
  [C#.NET] كيف عمل قاعدة بيانات mysql ورفعها ع سيرفر وربط البرنامج بلسيرفر GeRoO 0 275 18-01-20, 05:38 PM
آخر رد: GeRoO
  حفظ صورة في قاعدة بيانات عبدالكريم رشدان 0 221 17-01-20, 01:14 PM
آخر رد: عبدالكريم رشدان
  استشارة بشراء استضافة لرفع قاعدة بيانات sql server Rabeea Qbaha 0 236 21-12-19, 05:09 AM
آخر رد: Rabeea Qbaha
  مساعدة فى الاستعلام من قاعدة البينات لاكثر من جدول issamsaidd 9 544 23-11-19, 04:58 PM
آخر رد: asemshahen5
  مساعدة باعادة تصميم قاعدة بيانات. Rabeea Qbaha 5 456 17-11-19, 07:25 AM
آخر رد: new2016
Thumbs Up [C#.NET] كيف أحفظ الصورة في مسار وربطه بقاعدة البيانات Sqlserverثم إعادة قرائته مرة اخرى محمد جمعه 1 313 29-10-19, 01:16 PM
آخر رد: asemshahen5

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم