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


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







الرد }}}
تم الشكر بواسطة: عبد العزيز البسكري , 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
راجع ردي الاخير اخى الحبيب
وستتمكن من حل المشكلة تماماً

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

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو , asemshahen5
#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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  هل الكود هذا صحيح خاص بالربط مع قاعدة بيانات SQL server تركي احمد 0 200 15-02-24, 10:04 AM
آخر رد: تركي احمد
  مشكلة في المشاركة الدولية او خارج الشبكة issamsaid 1 442 22-11-23, 03:03 AM
آخر رد: HASAN6.0
  [تم الحل] مشكلة الاتصال بقاعده بيانات SQL على الشبكة maxruined 5 4,233 08-11-23, 01:00 AM
آخر رد: الحزين اليماني
  [سؤال] احتاج الى مساعدة فى تعديل مشروع خاص C# وقاعدة البيانات SQL Server كتكوت المصري 1 497 15-08-23, 02:02 AM
آخر رد: WAEL ABED
  [C#.NET] جلب البيانات من اليوزر كنترول Heemo 1 644 02-06-23, 12:57 AM
آخر رد: G20
  كيفية قراءة وعرض ملفات pdf مخزنة في داتا كرد فيو من خلال زر بتن وبدون open file dialo مرتضى 0 607 31-10-22, 12:53 AM
آخر رد: مرتضى
  انشاء قاعدة بيانات عن طرق الكود amonem 3 1,349 07-10-22, 12:51 PM
آخر رد: asemshahen5
  [سؤال] ازي احفظ قيم فارغة في قاعدة البيانات mazentq 4 1,672 04-10-22, 11:15 AM
آخر رد: رضوان الجماعي
Sad [C#.NET] تطبيق الويندوز لا يستطيع تحديد قاعدة البيانات المثبتة معى التطبيق عند تشغيله على حاسو Kamel Soltani 1 826 03-10-22, 04:09 PM
آخر رد: asemshahen5
  ارجاع نوع صورة من الكلاس Mtaktak 7 1,293 08-07-22, 01:54 PM
آخر رد: Mtaktak

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


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