PDA

View Full Version : خطای No value given for one or more required parameters



f_naderi
یک شنبه 23 خرداد 1395, 01:31 صبح
با عرض سلام خدمت تمام دوستان
من می خوام یک ستون رو داخل شرط select قرار بدم و کدم رو به این صورت نوشتم:

str = "select distinct nomre as n from table1 order by nomre desc";
da = new OleDbDataAdapter(str, con);
da.Fill(ds_load);
str = "select (select count(*) from table1 where t1.nomre<"+d1.Columns[0]+")+1 as rank,id,nomre from table1 as t1";
da1 = new OleDbDataAdapter(str, con);
da1.Fill(ds1);
زمان اجرا این خطا رو میده No value given for one or more required parameters. هر مشکلی هست از طرف d1.columns[0] . وقتی خطا میده در قسمت string connection رو select (select count(*) from table1 where t1.nomre<n)+1 as rank,id,nomre from table1 as t1 می نویسه.
پیشاپیش ممنون از توجهتون

f_naderi
دوشنبه 24 خرداد 1395, 02:41 صبح
دوستان اگر توضیحاتم بد بوده لطفا بگید فقط ممنون میشم راهنمایی کنید .می خوام ستون column[0] رو بشناسه و مقادیرش رو در select دوم مورد استفاده قرار بده.این error رو در خط da.fill(ds1) میده. خیلی فوریه

f_naderi
سه شنبه 25 خرداد 1395, 14:21 عصر
دوستان این خط رو اضافه کردم
decimal[] arr = d1.AsEnumerable().Select(r => Convert.ToDecimal(r[0])).ToArray();
در قسمت select دوم هم به جای d1.column[0] متغیر arr رو قرار دادم حالا این error رو میده:
Syntax error in query expression '(select count(*) from table1 where t1.nomre<System.Decimal[])+1'.
چیکارش کنم که تمام محتویات آرایه رو یکجا بهم بده بدون حلقه.
کمکککککک لطفا

systam
دوشنبه 31 خرداد 1395, 21:16 عصر
میتونی برنامه رو بزاری

f_naderi
دوشنبه 31 خرداد 1395, 23:46 عصر
OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|f.accdb");
private void button1_Click(object sender, EventArgs e)
{
con.Open();
ds_load.Clear();
ds1.Clear();
DataTable d1 = new DataTable();
string str = string.Empty;
str = "select distinct nomre as n from table1 order by nomre desc";
da = new OleDbDataAdapter(str, con);
da.Fill(ds_load);
d1=ds_load.Tables[0];
decimal[] arr = d1.AsEnumerable().Select(r => Convert.ToDecimal(r[0])).ToArray();
dataGridView1.DataSource = ds_load;
dataGridView1.DataMember = ds_load.Tables[0].ToString();
str = string.Empty;
str = "select (select count(*) from table1 where t1.nomre<" + arr + ")+1 as rank,id,nomre from table1 as t1";
da1 = new OleDbDataAdapter(str, con);
da1.Fill(ds1);
dataGridView1.DataSource = ds1;
dataGridView1.DataMember = ds1.Tables[0].ToString();
con.Close();
}
برنامه رو شروع نکردم هنوز دارم در مورد طراحیش فکر میکنم. این قطعه کد رو توی یه فرم گذاشتم که روش یه دیتاگرید و یه دکمه هست. می خوام برنامه مدرسه بنویسم و توی برنامه رتبه بندی کنم به این صورت که 20 20 19 18 17 20 برای این اعداد رتبه هاشون به اینصورت باشه 1 1 2 3 4 1 اگه با اسکیوال بود با تابع rank مینوشتم ولی چون با اکسس هست باید با این دو دستور select رتبه بندی انجام بدم . حالا مشکل من اینه که ستون بدست اومده از طریق select اول رو می خوام کل ستونش رو قرار بدم در دستور select دوم ولی برنامه error میده همونطور که قبلا عرض کردم نمی خوام از حلقه استفاده کنم .