الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ممكن حل المشكلة من خبراء المنتدى

بدأه الزهراوى222 في 2 ديسمبر 2013 · 4 رد · 322 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

انا بصمم مشروع عن المشتريات والمبيعات بلغة c# وقاعدة بيانات sql server

 

صممت اول 3 فورم تمام وعملت test عليهم 

الباقى بعمل test بيطلع خطأ ولم استطع اكتشافه 

 

ممكن الحل 

مشروع.rar

#2

أخي الكريم
المشكلة الأساسية هي بكتابة Query إلى قاعدة البيانات، في Form4 ضمن أخر الـ Query هناك إشارة فاصلة زائدة قبل نهاية القوس.

ولكن المشكلة الأساسية في طريقة كتابة القيم. فإذا كانت القيمة المدخلة نصية String نضعها بالـ Query ضمن علامتي ' '

أما إذا كانت عدد لا نضعها ضمن هذين الإشارتين. ندخلها فقط مباشرة. 

أي يجب أن يكون الشكل لديك كالتالي:

            comm.CommandText = @"insert into Itm  values(" + textBox1.Text + ",'" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + comboBox1.Text + "','" + textBox5.Text + "'," + textBox6.Text+ ",'" + textBox7.Text + "','" + textBox8.Text + "','" + textBox9.Text + "')";

لاحظ أننا قمنا بإزالة تلك العلامتين من أول الـ Query. لان اول قيمة تدل على id.

 

1. بالطبع طريقة الكتابة هذه خاطئة وغير محببة، كونها تمكن الأخرين من التلاعب مباشرة بالـ Query الذاهبة إلى قاعدة البيانات.

فيجب استخدام الـ Parameters مثلا:

comm.CommandText = "INSERT INTO Itm VALUES (@id, @name, @price)";
            comm.Parameters.AddWithValue("@id", 10);
            comm.Parameters.AddWithValue("@name", "some name");
            comm.Parameters.AddWithValue("@price", 20.7);

لا حظ كيف نعرف المدخلات ضمن النص، ثم نقوم بإسناد القيم فيما بعد.

 

لكن لدي ملاحظة على قاعدة البيانات. 

1. الأسماء غير معبرة إطلاقاً، وهو ما يجعل مراجعة العمل أو متابتعه صعبة، لذلك انصحك باستخدام أسماء معبرة قدر الأمكان.

2. لاحظت أن قاعدة البيانات مصممة على ما يمسى ب 1NF حيث لا يوجد هناك أي مفتاح رئيسي Primary Key، ولا أي علاقة مع الجداول الأخرى

فالمستخدم يجب عليه إدخال رقم الصنف مثلا يدوياً. بينما في الواقع يجب توليده تلقائيا فالمستخدم العادي لا يهمه هذا الرقم ابدأ، وإن كان يهمة رقم أخر، فيمة id كمفتاح رئيسي في الجدول هي من الاهميات والأولويات

 

بالتوفيق.

• • •


[ ربيّ احفظ سوريا الحبيبة]


oFOK7Kd.png

#3
Eng.Tareq Jehad 

شكرااااااااااااا لحضرتك تعبتك معايا كتير 

 

ممكن بس شئ كمان انا عارف انى هزعجك 

 

ممكن تقولى ايه الاخطاء فى فورم 5 و 6 وليه كومبو الاصناف مش بيقرأ الداتا وكود التاريخ مش بيظبط معايا

 

انا اسف جداااا

#4

أخي الكريم

ابتعد قدر الإمكان عن النسخ واللص في كتابة الكود، فأكثر ما يقع به المبرمجون بسبب هذه العمليات، وأن كنت تريد نسخ جزء معين، فيجب عليك مراجعته جيدا بعد وضعة في مكان اخر

السبب في عدم ظهور بيانات الاصناف انك قمتل بتعريف متغيريين من نوع DateSet لتعبنة الجداول، لكن لاحظ ان DataSet الثانية لم تستخدمها، فانت ما زلت تستعمل dt الأولى لتعبة الأصناف. بينما يجب عليك استخدام الثانية

بالطبع يمكنك استخدام DataSet واحدة لكامل المشروع، وهو الحل الأفضل.

 

وتأكد كمان من كتابة Query كما اخبرتك، فأنت ما زلت تضع القيم العديدة ضمن ' '. يجب عليك موافقة القيم المدخلة مع القيم في الجداول.

• • •


[ ربيّ احفظ سوريا الحبيبة]


oFOK7Kd.png

#5

شكرااااااااااااااااا حضرتك جزاك الله خيرا

مواضيع مشابهة