منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : استيراد بيانات اصناف من الاكسيل لقاعدة بيانات البرنامج sql
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته.
نقاشي حول كيفية استيراد بيانات اصناف مثلا موجود بملف اكسيل للبرنامج بتاعي.
مثال: 
ان عندي برنامج بقاعدة بيانات سكوال سيرفر وعندي جدول اسمه product المنتاجات وفيه عدة
 اعمده (كود، اسم ، سعر شراء ، سعر البيع ، الخ...).
وموجود عندي ملف اكسيل فيه مثلا حوالى 2000 صنف 
فا انا عاوز اعمل استيراد للملف ده وبعدين هختار اسم الجدول بتاعي من قاعده البيانات الي عاوز ضيف فبه المنتاجات الي هو product هختار من list box وبعدين هيكون فيه مجموعة list box تاني بتظهر معايا بعدد الاعمده بتعت الجدول بتاعي وفي المقابل كمان بتظهر اعمدة الاكسيل.
لان طبعا ملف الاكسيل مش هيكون نفس ترتيب الجدول بتاعي بالنسبة لترتيب الاعمده فبالتالي ان هقدر اختار من ال list box بتعت اعمدة جدولي واعمده الاكسيل بحيث اقدر اطابق الاتنين ببعض علشان لما اعمل عملية الاستيراد كل بيانات الاكسيل تنزل في الاماكن المخصصة ليها في الجدول بتاعي.
اسف لو طولت في الشرح بس علشان تكون التفاصيل واضحه 
هل فيه طريقة نقدر نعمل بيها الكلام ده لاني دورت كتير مش لاقي اغلب الطرق الي موجوده اني اعرض الاكسيل في داتا جريد فيو بس 
ياريت لو حد عنده طريقة او شرح بيتكلم عن كده يفدني وشكرا.
(29-12-21, 06:45 PM)mazentq كتب : [ -> ]السلام عليكم ورحمة الله وبركاته.
نقاشي حول كيفية استيراد بيانات اصناف مثلا موجود بملف اكسيل للبرنامج بتاعي.
مثال: 
ان عندي برنامج بقاعدة بيانات سكوال سيرفر وعندي جدول اسمه product المنتاجات وفيه عدة
 اعمده (كود، اسم ، سعر شراء ، سعر البيع ، الخ...).
وموجود عندي ملف اكسيل فيه مثلا حوالى 2000 صنف 
فا انا عاوز اعمل استيراد للملف ده وبعدين هختار اسم الجدول بتاعي من قاعده البيانات الي عاوز ضيف فبه المنتاجات الي هو product هختار من list box وبعدين هيكون فيه مجموعة list box تاني بتظهر معايا بعدد الاعمده بتعت الجدول بتاعي وفي المقابل كمان بتظهر اعمدة الاكسيل.
لان طبعا ملف الاكسيل مش هيكون نفس ترتيب الجدول بتاعي بالنسبة لترتيب الاعمده فبالتالي ان هقدر اختار من ال list box بتعت اعمدة جدولي واعمده الاكسيل بحيث اقدر اطابق الاتنين ببعض علشان لما اعمل عملية الاستيراد كل بيانات الاكسيل تنزل في الاماكن المخصصة ليها في الجدول بتاعي.
اسف لو طولت في الشرح بس علشان تكون التفاصيل واضحه 
هل فيه طريقة نقدر نعمل بيها الكلام ده لاني دورت كتير مش لاقي اغلب الطرق الي موجوده اني اعرض الاكسيل في داتا جريد فيو بس 
ياريت لو حد عنده طريقة او شرح بيتكلم عن كده يفدني وشكرا.

ياجماعة الى عندة اي فكره عن الموضوع ده ياريت يفيدنى علشان بدور علي الطريقة وشكرا
السلام عليكم ورحمة الله وبركاته
اخي الكريم 
قم بالتعامل مع ملف الاكسل كقاعدة بيانات واجلب البيانات الى داتاغرايد ثم مخصصة الاعمدة حسب قاعد بيانات السيكوال 
فمثلا في ملف الاكسل نفترض يوجد اسم المنتج والباركود والسعر وفي جدول السيكوال يوجد الاي دي (ترقيم تلقائي) الاسم والباركود والسعر وأعمدة أخرى
قم بانشاء الداتاغرايد بأعمدة مثل السكوال   واجلب بيانات الاكسل ثم قم بجملة حفظ صفوف الداتاغرايد عبر حلقة For  بدون الاي دي في جدول السيكوال
افضل من الليست بوكس
(03-02-22, 10:39 PM)ابراهيم ايبو كتب : [ -> ]السلام عليكم ورحمة الله وبركاته
اخي الكريم 
قم بالتعامل مع ملف الاكسل كقاعدة بيانات واجلب البيانات الى داتاغرايد ثم مخصصة الاعمدة حسب قاعد بيانات السيكوال 
فمثلا في ملف الاكسل نفترض يوجد اسم المنتج والباركود والسعر وفي جدول السيكوال يوجد الاي دي (ترقيم تلقائي) الاسم والباركود والسعر وأعمدة أخرى
قم بانشاء الداتاغرايد بأعمدة مثل السكوال   واجلب بيانات الاكسل ثم قم بجملة حفظ صفوف الداتاغرايد عبر حلقة For  بدون الاي دي في جدول السيكوال
افضل من الليست بوكس

طيب الترتيب بتاع الاعمدة طبيعي مش هيكون مطابق لجدول الاصناف الي في قاعدة البيانات عندي فانا بستخدم ال ليست بوكس علشان اطابق كل عمود في الاكسيل مع الجدول بتاعي 
هل فيه مثال عملى علي الكلام ده موجود اقدر احمله
السلام عليكم ورحمة الله وبركاته
اخي الكريم 
هذا مثال بسيط لجلب بيانات من الاكسيل وعرضها في الداتاغرايد العلوية تعرض الحقول حسب الاكسل
ثم نحفظ البيانات فقط حقلي الاسم والراتب  في قاعدة البيانات (اخترت الاكسس  للسهولة ويمكنك التغيير الى السيكوال)
بعدها يتم عرض البيانات التي حفظت في الاكسس في الداتاغرايد السفلية
(04-02-22, 02:00 AM)ابراهيم ايبو كتب : [ -> ]السلام عليكم ورحمة الله وبركاته
اخي الكريم 
هذا مثال بسيط لجلب بيانات من الاكسيل وعرضها في الداتاغرايد العلوية تعرض الحقول حسب الاكسل
ثم نحفظ البيانات فقط حقلي الاسم والراتب  في قاعدة البيانات (اخترت الاكسس  للسهولة ويمكنك التغيير الى السيكوال)
بعدها يتم عرض البيانات التي حفظت في الاكسس في الداتاغرايد السفلية

الف شكر يا غلى هحاول ان اعدل فيهم علشان يتم الاستيراد بناء على الاختيار من ليست بوكس
السلام عليكم ورحمة الله وبركاته
اخي الكريم انت لست بحاجة الى ليست بوكس لتضع فيها السجلات وتختار منها
قم بعمل التالي :
اضف عمود الى الداتاغرايد العلوية وأسمه "Selec" والعنوان ايضا "Selec" واجعله من نوع CheckBox بحيث يمكنك اختيار السجلات التي تريد حفظها
ثم استبدل كود الحفظ السابق بالتالي :
كود :
private void Btn_SaveToAccess_Click(object sender, EventArgs e)
   {
       OleDbCommand Cmd = new OleDbCommand();
       bool aa;
       for (int i = 0; i < DGV_TableExcel.Rows.Count; i++)
       {
           aa=Convert.ToBoolean(DGV_TableExcel.Rows[i].Cells["Selec"].Value);
           if (aa == true)
           {

           Cmd = new OleDbCommand("insert into Table1(Cv_Name,Cv_Salary) Values(@Cv_Name,@Cv_Salary)", Con);
           Cmd.Parameters.Add(new OleDbParameter("@Cv_Name", OleDbType.VarWChar)).Value = DGV_TableExcel.Rows[i].Cells["Kh_Name"].Value.ToString();
           Cmd.Parameters.Add(new OleDbParameter("@Cv_Salary", OleDbType.Decimal)).Value = DGV_TableExcel.Rows[i].Cells["Kh_Salary"].Value;
           if (Con.State == ConnectionState.Closed) Con.Open();
           Cmd.ExecuteNonQuery();
           Con.Close();
           }
       }

       MessageBox.Show("تم حفظ البيانات بنجاح", "حفظ", MessageBoxButtons.OK, MessageBoxIcon.Information);
       SelectAll_Table1();
   }
(04-02-22, 10:54 PM)ابراهيم ايبو كتب : [ -> ]السلام عليكم ورحمة الله وبركاته
اخي الكريم انت لست بحاجة الى ليست بوكس لتضع فيها السجلات وتختار منها
قم بعمل التالي :
اضف عمود الى الداتاغرايد العلوية وأسمه "Selec" والعنوان ايضا "Selec" واجعله من نوع CheckBox بحيث يمكنك اختيار السجلات التي تريد حفظها
ثم استبدل كود الحفظ السابق بالتالي :
كود :
private void Btn_SaveToAccess_Click(object sender, EventArgs e)
   {
       OleDbCommand Cmd = new OleDbCommand();
       bool aa;
       for (int i = 0; i < DGV_TableExcel.Rows.Count; i++)
       {
           aa=Convert.ToBoolean(DGV_TableExcel.Rows[i].Cells["Selec"].Value);
           if (aa == true)
           {

           Cmd = new OleDbCommand("insert into Table1(Cv_Name,Cv_Salary) Values(@Cv_Name,@Cv_Salary)", Con);
           Cmd.Parameters.Add(new OleDbParameter("@Cv_Name", OleDbType.VarWChar)).Value = DGV_TableExcel.Rows[i].Cells["Kh_Name"].Value.ToString();
           Cmd.Parameters.Add(new OleDbParameter("@Cv_Salary", OleDbType.Decimal)).Value = DGV_TableExcel.Rows[i].Cells["Kh_Salary"].Value;
           if (Con.State == ConnectionState.Closed) Con.Open();
           Cmd.ExecuteNonQuery();
           Con.Close();
           }
       }

       MessageBox.Show("تم حفظ البيانات بنجاح", "حفظ", MessageBoxButtons.OK, MessageBoxIcon.Information);
       SelectAll_Table1();
   }
تمام بس ان انشاء الله هعمل حاجة متقدمة شوية يعني مثلا مش عاوز اكتب في الكود اسماء الاعمدة في الاكسيل ان بتاعمل مع اي ملف عادي وبيجبلي اي اعمدة اي كانت وشكرا علي مجهودك

(04-02-22, 10:54 PM)ابراهيم ايبو كتب : [ -> ]السلام عليكم ورحمة الله وبركاته
اخي الكريم انت لست بحاجة الى ليست بوكس لتضع فيها السجلات وتختار منها
قم بعمل التالي :
اضف عمود الى الداتاغرايد العلوية وأسمه "Selec" والعنوان ايضا "Selec" واجعله من نوع CheckBox بحيث يمكنك اختيار السجلات التي تريد حفظها
ثم استبدل كود الحفظ السابق بالتالي :
كود :
private void Btn_SaveToAccess_Click(object sender, EventArgs e)
   {
       OleDbCommand Cmd = new OleDbCommand();
       bool aa;
       for (int i = 0; i < DGV_TableExcel.Rows.Count; i++)
       {
           aa=Convert.ToBoolean(DGV_TableExcel.Rows[i].Cells["Selec"].Value);
           if (aa == true)
           {

           Cmd = new OleDbCommand("insert into Table1(Cv_Name,Cv_Salary) Values(@Cv_Name,@Cv_Salary)", Con);
           Cmd.Parameters.Add(new OleDbParameter("@Cv_Name", OleDbType.VarWChar)).Value = DGV_TableExcel.Rows[i].Cells["Kh_Name"].Value.ToString();
           Cmd.Parameters.Add(new OleDbParameter("@Cv_Salary", OleDbType.Decimal)).Value = DGV_TableExcel.Rows[i].Cells["Kh_Salary"].Value;
           if (Con.State == ConnectionState.Closed) Con.Open();
           Cmd.ExecuteNonQuery();
           Con.Close();
           }
       }

       MessageBox.Show("تم حفظ البيانات بنجاح", "حفظ", MessageBoxButtons.OK, MessageBoxIcon.Information);
       SelectAll_Table1();
   }
شيئ مثل هذا الفيديو :


برنامج المحاسب العقاري