PDA

View Full Version : سوال: مشکل در کمبو باکس



pooriajojo
چهارشنبه 20 اسفند 1393, 11:45 صبح
من این کد را نوشتم که با انتخاب ایتم از کمبو باکس بر اساس انتخاب اطلاعات از دیتا بیس خوانده و در درتا گرید نمایش دهد


SqlConnection myconn = new SqlConnection("Data Source=(local);Initial Catalog=khadamat;Integrated Security=True");
SqlDataAdapter da = new SqlDataAdapter("select * from mehmansara where no='" + cbidvam.Text + "' ", myconn);
DataSet ds = new DataSet();
ds.Clear();
da.Fill(ds, "Table");
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "Table";
myconn.Close();

ولی نمایش نمیده هیچی . error نمیده ولی انگار نمیتونه مثلا ایتم "پوریا" که انتخاب شده را مثلش را که در دیتا بیس هست پیدا کنه . نمیدونم چجوری توضیه بدم خدا کنه مهفومما فهمیده باشن

ببینین این از textbox میگیره میتونه بخونه


SqlConnection myconn = new SqlConnection("Data Source=(local);Initial Catalog=khadamat;Integrated Security=True");
SqlDataAdapter da = new SqlDataAdapter("select * from mehmansara where id='" + txid.Text + "' ", myconn);
DataSet ds = new DataSet();
ds.Clear();
da.Fill(ds, "Table");
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "Table";
myconn.Close();

ولی اون نمیتونه .
این کمبو باکس را باید چیکار کرد که آیتم انتخاب شده را بخونه
راستی از اینم استفاده کردم ولی نشد


cbidvam.SelectedItem.ToString()

ولی یه چیز جالب اگه آیتم های کمبو باکس عدد باشه میتونه اطلاعاتا پیدا کنه و نمایش بده ولی اگه حروف باشه نمیتونه

امیر مهرشاد
چهارشنبه 20 اسفند 1393, 12:36 عصر
شاید وقتی میگید اعداد جواب میده ولی حروف نه مشکل فاصله داشته باشید با متد tRIM این فاصله ها زو از کمبو بردارید و امتحان کنید و نتیجه رو بگید تا دوباره راهنمایی کنم

مثلا اینو امتحان کنید



cbidvam.SelectedValue.ToString().Trim();

pooriajojo
چهارشنبه 20 اسفند 1393, 12:47 عصر
نشد ای error را میده
Object reference not set to an instance of an object.

اخه جالبیش اینجاست من از همین طریق اطلاعاتا از کمبو باکس میگیرم و در دیتا بیس ذخیره میکنم . این موقه این کارا انجام میده و نامی که انتخاب شده مثلا "پوریا" داخل دیتا بیس میره . ولی برای select کردن نمیشناسه نمیتونه پیدا کنه
همین مشگلا با radioButton هم داراما

Mofid.m
چهارشنبه 20 اسفند 1393, 13:47 عصر
اسم و نوع فیلد های جدول مهمانسرا رو میتونی بزاری؟
برو تو Sql و رو اون جدول راست کلیک کن Design رو بزن بعد از صفحه عکس بگیر بزار اینجا

pooriajojo
چهارشنبه 20 اسفند 1393, 14:15 عصر
129353
اینم عکس

Mofid.m
چهارشنبه 20 اسفند 1393, 14:25 عصر
این کدو به جای کد جستجوی کمبو بزار


SqlDataAdapter da=new SqlDataAdapter("select * from mehmansara where no=@no",MyConn);
da.SelectCommand.CommandType=CommandType.Text;
da.SelectCommand.Parameters.AddWithValue("@no",comboBox1.Text);
DataTable dt=new DataTable();
da.Fill(dt);
DataGridView1.DataSource=dt;

pooriajojo
چهارشنبه 20 اسفند 1393, 14:33 عصر
آقا دمت گرم . شد . جواب داد .
حالا یه مشگل دیگه من سر در نمیارم . همیجا تو یه فرم دگه گذاشتم جواب داده تو یه فرم دیگه error میده
این error :
The parameterized query '(@id nvarchar(8),@gozarname nvarchar(4000),@idg nvarchar(4000),@' expects the parameter '@gozarname', which was not supplied.
اینم برنامه


string con = @"Data Source=(local);Initial Catalog=khadamat;Integrated Security=True";
SqlConnection co = new SqlConnection(con);
SqlCommand cmm = new SqlCommand("insert into gozarname values (@id,@gozarname,@idg,@datasodor,@dataengheza,@maha l,@idggh)", co);
co.Open();
cmm.Parameters.Add(new SqlParameter("@id", txid.Text));
cmm.Parameters.Add(new SqlParameter("@gozarname", a));
cmm.Parameters.Add(new SqlParameter("@idg", idg.Text));
cmm.Parameters.Add(new SqlParameter("@datasodor", datasodor.Text));
cmm.Parameters.Add(new SqlParameter("@dataengheza", dataengheza.Text));
cmm.Parameters.Add(new SqlParameter("@mahal", mahal.Text));
cmm.Parameters.Add(new SqlParameter("@idggh", idggh.Text));

cmm.ExecuteNonQuery();
co.Close();

اینم عکس پایگاه داده

Mofid.m
چهارشنبه 20 اسفند 1393, 14:39 عصر
شما با پارامتر ها مشکل داری
به جای Add کردن پارامتر ها از AddWithValue استفاده کن، احتمالا درست میشه.
درست مثل کد بالا

pooriajojo
چهارشنبه 20 اسفند 1393, 14:54 عصر
این کارم کردم دوباره همان error

Mofid.m
چهارشنبه 20 اسفند 1393, 15:08 عصر
احتمالا مشکلت از پارامتر هاست
ببین تو کد جایی که نوشتی


cmm.parameters.AddwithValue(@id",txid.Text);

بنویس



cmm.Parameters.AddWithValue("@id",int.parse(txid.Text));

pooriajojo
چهارشنبه 20 اسفند 1393, 15:11 عصر
parse را نمیشناسه

Mofid.m
چهارشنبه 20 اسفند 1393, 15:14 عصر
قبلش int بزار
میشناسه
int.Parse
کپی نکن. بنویس.
من همینجا نوشتم حروف بزرگ و کوچیک رو رعایت نکردم

pooriajojo
چهارشنبه 20 اسفند 1393, 15:15 عصر
ببین این کدای این باتن من است . update را انجام میده insert را اون error میده


private void button1_Click(object sender, EventArgs e)
{
SqlConnection connection1 = new SqlConnection();
connection1.ConnectionString = @"Data Source=(local);Initial Catalog=khadamat;Integrated Security=True";
SqlCommand command1 = new SqlCommand("select count(*) from gozarname where id='" + txid.Text + "'", connection1);
connection1.Open();
int result;
result = Convert.ToInt32(command1.ExecuteScalar());
if (result != 0)
{
//update

if (dard.Checked)
{
a = dard.Text;
}
else
{
if (nadarad.Checked)
{
a = nadarad.Text;
}
else
{
a = "نامعلوم";
}
}

string con1 = @"Data Source=(local);Initial Catalog=khadamat;Integrated Security=True";
SqlConnection co1 = new SqlConnection(con1);
SqlCommand cmm1 = new SqlCommand("update gozarname set id=@id,gozarname=@gozarname,idg=@idg,datasodor=@da tasodor,dataengheza=@dataengheza,mahal=@mahal,idgg h=@idggh where id='" + txid.Text + "'", co1);
co1.Open();
cmm1.Parameters.AddWithValue("@id", txid.Text);
cmm1.Parameters.AddWithValue("@gozarname",a);
cmm1.Parameters.AddWithValue("@idg", idg.Text);
cmm1.Parameters.AddWithValue("@datasodor", datasodor.Text);
cmm1.Parameters.AddWithValue("@dataengheza", dataengheza.Text);
cmm1.Parameters.AddWithValue("@mahal", mahal.Text);
cmm1.Parameters.AddWithValue("@idggh", idggh.Text);

cmm1.ExecuteNonQuery();
co1.Close();
//txid.Text = "";

}
else
{
string con = @"Data Source=(local);Initial Catalog=khadamat;Integrated Security=True";
SqlConnection co = new SqlConnection(con);
SqlCommand cmm = new SqlCommand("insert into gozarname values (@id,@gozarname,@idg,@datasodor,@dataengheza,@maha l,@idggh)", co);
co.Open();
cmm.Parameters.AddWithValue("@id", txid.Text);
cmm.Parameters.AddWithValue("@gozarname", a);
cmm.Parameters.AddWithValue("@idg", idg.Text);
cmm.Parameters.AddWithValue("@datasodor", datasodor.Text);
cmm.Parameters.AddWithValue("@dataengheza", dataengheza.Text);
cmm.Parameters.AddWithValue("@mahal", mahal.Text);
cmm.Parameters.AddWithValue("@idggh", idggh.Text);
cmm.ExecuteNonQuery();
co.Close();



}

MessageBox.Show("اطلاعات گذرنامه ثبت شد");
}

pooriajojo
چهارشنبه 20 اسفند 1393, 15:18 عصر
آخه پارامتر های من int نیستند string هستن

Mofid.m
چهارشنبه 20 اسفند 1393, 15:25 عصر
توی عکسی که گذاشتی از جدول گذرنامه فیلد id نوعش مگه int نیست؟
نگاه کن int ه

Mofid.m
چهارشنبه 20 اسفند 1393, 15:28 عصر
کد هاتو چرا درهم مینویسی
یه کانکشن سراسری بنویس
یه کلاس هم برای کانکشن استرینگ تعریف کن تا کد هات اینقد سخت نشه
هم سرعت کارتو بالا میبره و هم اگر بخوای تغییری تو کانکشن استرینگ بدی راحت این کارو انجام میدی.

pooriajojo
چهارشنبه 20 اسفند 1393, 15:29 عصر
فقط همان یکی inte

Mofid.m
چهارشنبه 20 اسفند 1393, 15:31 عصر
خوب وقتی int گذاشتی باید یه پارامتر از نوع int بهش بدی

Mofid.m
چهارشنبه 20 اسفند 1393, 16:20 عصر
در ضمن تو دستور insert قبل از کلمه values یه پرانتز باز کن و اسم فیلد هاتو اونجا بنویس