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

[تنبيه - عنوان غير مناسب : ]ما الخطا فى هذا الكود

بدأه shosho842000 في 17 يونيو 2010 · 7 رد · 744 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمته الله وبركاته

لدى سؤالين فى هذا الكود هو كالاتى يتم اضافه الخانات من خلال الشاشة ثم اضافه بعض الحقول فى جدول فرعى اخر

يعنى هو بياخذ قيمه القسط وتاريخ البداية ومقدار السلفه من الشاشة ويتم اضافتها فى جدول اخر قيمه السلفه والشهر

If cn.State = ConnectionState.Open Then cn.Close()

cn.Open()

cmd.CommandType = CommandType.StoredProcedure

cmd.CommandText = "insertamount1"

cmd.Parameters.Add("@emp_id", SqlDbType.Int).Value = TextBox1.Text

cmd.Parameters.Add("@start", SqlDbType.DateTime).Value = TextBox3.Text

cmd.Parameters.Add("@price", SqlDbType.Decimal).Value = TextBox4.Text

cmd.Parameters.Add("@end", SqlDbType.DateTime).Value = TextBox5.Text

cmd.Parameters.Add("@num", SqlDbType.Int).Value = TextBox6.Text

cmd.Parameters.Add("@mony", SqlDbType.Decimal).Value = TextBox7.Text

cmd.Parameters.Add("@name1", SqlDbType.Int).Value = ComboBox1.SelectedIndex

cmd.ExecuteNonQuery()

MessageBox.Show("تم الحفظ ")

وهذا هو الstored

CREATE PROCEDURE insertamount1

-- Add the parameters for the stored procedure here

@emp_id int,

@start datetime,

@price decimal (5,3),

@end datetime,

@num int,

@mony decimal (5,3),

@name1 int

AS

BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

SET NOCOUNT ON;

-- Insert statements for procedure here

INSERT INTO amount1 VALUES (@emp_id,@start, @price, @end, @num, @mony, @name1)

WHILE (SELECT a.num FROM amount1 a WHERE emp_id=@emp_id AND a.start=@start)>0

BEGIN

INSERT INTO childamount VALUES (@emp_id,@mony,dateadd(mm,1,@start))

END

END

GO

عند التنفيذ يتم اظهار هذا الخطا

Procedure or function insertamount1 has too many arguments specified.

ما معنى هذا الخطا

السؤال التانى عايزاه وهو بيحفظ من خلال combox يحفظ كود الاسم المختار مش اسمه

cmd.Parameters.Add("@name1", SqlDbType.Int).Value = ComboBox1.SelectedIndex

وشكرااااااااااااااااااااا

#2

السلام عليكم

فى المشكلة الاولى

من الواضح ان عدد البرامترز المرسلة أكثر من البرامترز التى يستقبلها الستورد بروسيدجر

اما بالنسبة للسؤال الخاص بالكومبو

فاذا اردتى تسجيل رقم الاى دى الخاص بالكلمة المختارة من الكومبو فسوف يكون

ComboBox1.ValueMember

وان شاء الله بالتوفيق

#3

شكرا على الرد ولكن عدد الparameter فى الحالتين واحد وهو 7

؟؟؟؟؟؟

#4

هل الحقل emp_id حقل أساسي؟ إذا كان كذلك فلا يجب عمل insert له

#5

الأخ الكريم/الأخت الكريمة

السلام عليكم ورحمة الله وبركاته

مرحباً بكم في منتدى الفريق العربي للبرمجة

نود تنبيهك أن العنوان غير مناسب.

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

وفي حال التكرار سيتعرض موضوعك للإغلاق والحذف!!!

قواعد المشاركة

/index.php?showtopic=29343

شاكرين لكم حُسن تعاونكم

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#6

بعد اذنك اكس

WHILE (SELECT a.num FROM amount1 a WHERE emp_id=@emp_id AND a.start=@start)>0

اخي الكريم انت تضع شرط غير منتهي

دقق جيدا واعد النظر

اتوقع ان المشكلة منها

بالتوفيق

تم تعديل هذه المشاركة بواسطة X-File في 18 يونيو 2010 في 23:01

In bad state

#7

الشرط صحيح ... لا توجد به مشاكل ..

هل تستخمين نفس الكوماند cmd من أجل عمليات أخرى؟ربما تقومين بعملية أخرى و تنسين مسح البارمترات. لو كان ظني صحيحا" أضيفي هذا الكود:

cmd.Parameters.Clear()

قبل إضافة البارمترات في كودك السابق، أيضا" نسيتي تعيين كائن الإتصال لكائن الكوماند

cmd.Connection=cn
#8

او استخدم هذا احذف بعض او كل القيم

For i = 0 To s.Parameters.Count - 1
            s.Parameters.Remove(i)
        Next i

تم تعديل هذه المشاركة بواسطة KARIMSOFT في 20 يونيو 2010 في 00:23

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…