PDA

View Full Version : سوال: مشکل دراضافه کردن رکوردجدیدباDataSet



dr_g
چهارشنبه 17 تیر 1388, 09:31 صبح
با سلام
من میخوام توی یه برنامه ساده یه کوردجدید به جدول اضافه کنم.یه Dataset دارم که جدول رو توش قراردادم.یه Query برای Insert کردن هم توی دیتاست نوشتم..حالا توی فرم یه دیتاگریدویو دارم که به جدول متصل شده ویه دکمه و یه تکست باکس می خوام وقتی روی دکمه کلیک کردم محتوی تکست باکس به جدول اضافه شه.من کدزیررو نوشتم


private void button1_Click(object sender, EventArgs e)
{
DataSetTableAdapters.QueriesTableAdapter qta = new AddRecordWithDataSet.DataSetTableAdapters.QueriesT ableAdapter();
qta.Insert2Table(textBox1.Text);
tableAdapter.Update(dataSet.Table1);
tableAdapter.Fill(dataSet.Table1);
dataSet.Table1.AcceptChanges();
}


.اطلاعات به جدول اضافه میشه وتوی گرید نشون داده میشه اما به طورموقت.یعنی وقتی ازبرنامه خارج میشیم اطلاعات هم ازبین میره یعنی save نمیشه.خیلی باهاش وررفتم.کلافه ام.دوستان کمکم کنن.اگه متوجه منظورم نشدین برنامه روupload کردم.میتونین ببینین.

__Genius__
چهارشنبه 17 تیر 1388, 11:46 صبح
مشکل اینه که روی database باید کلیک کنی F4 بزنی ، توی قسمت Output to directory بزنی و Copy If newer رو انتخاب کنی ...
روی dataset هم همین کارو بکن ...

alihassanabadi
چهارشنبه 17 تیر 1388, 18:09 عصر
[quote=dr_g;752727]با سلام
من میخوام توی یه برنامه ساده یه کوردجدید به جدول اضافه کنم.یه Dataset دارم که جدول رو توش قراردادم.یه Query برای Insert کردن هم توی دیتاست نوشتم..حالا توی فرم یه...

سلام
منظورت اینه که یک رکورد رو به جدول اضافه کنی سپس تو گرید ویو نمایشش بدی
میتونی برای این کار از bindingsource استفاده کنی من کدش رو مینویسم البته میتونی به صورت wizard هم انجام بدی
برای این کار ابتدا با استفاده از دستورات رکورد رو به جدول اضافه کن سپس با یه select تمام رکوردها رو نمایش بده
البته ناگفته نمونه کد زیر یه کم غیر معمول به نظر میرسه
اضافه کردن رکورد


SqlDataAdapter adapter1 = newSqlDataAdapter("insert into tblname(field)values('"+text1.text.trim()+"')", connectionstring);
DataSet dataset1 = newDataSet();
adapter1.Fill(dataset1, "input");


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


SqlDataAdapter adapter2 = new SqlDataAdapter("select *from tblname", "Data Source=(local);Initial Catalog=databasename;Integrated Security=True");
DataSet dataset1 = new DataSet();
adapter2.Fill(dataset1, "tblname");
BindingSource bs = new BindingSource(dataset1, "tblname");
dataGridView1.DataSource = bs;

با تشکر
سعادت دیگران بخش مهمی از خوشبختی ماست.

dr_g
پنج شنبه 18 تیر 1388, 23:03 عصر
مشکل اینه که روی database باید کلیک کنی F4 بزنی ، توی قسمت Output to directory بزنی و Copy If newer رو انتخاب کنی ...
روی dataset هم همین کارو بکن ...

با این کارمشکل بالا حل شد.اما یه مشکله دیگه هنوزباقیه.وقتی ازپنجرهServer Explorer جدولمو Refresh می کنم.رکوردهای جدیدی که ظاهرا به جدول اضافه وجود نداره یعنی دیتابیس خالیه.دوستان لطفا کمکم کنن

dr_g
جمعه 19 تیر 1388, 19:09 عصر
دوستان خواهش می کنم کمکم کنین
من فکرمی کنم یه مشکل سادست واسه دوستای C# کار

__Genius__
جمعه 19 تیر 1388, 19:31 عصر
توی data base اطلاعاتی نیست ، آیا اون موقع هنوز اطلاعات داخل data set وارد میشن !؟

dr_g
شنبه 20 تیر 1388, 09:45 صبح
با تشکرازشما Geniusعزیز
جدولم خالی خالیه.یعنی هیچ رکوردی توش ثبت نیست.وقتی با برنامه ررکوردهایی رو بهش اضافه می کنم،همون موقع بهش اضافه میشه.وبا راه حلی که شما گفتی بعد ازخروج از برنامه هم اطلاعات از بین نمی ره.اما وقتی ازطریق پنجره Server Explorer جدولمو Refresh می کنم.یا جدولمو باز می کنم و Execute SQL رو اجرا می کنم همه اون اطلاعاتی که از طریق برنامه اضافه شده بودن از بین می رن.درواقع دیتابیس خالی می شه.منتظر راهنمایی شما Genius عزیزهستم

peymanjon
چهارشنبه 19 اسفند 1388, 22:49 عصر
دوست عزیز این که مشکلی نیست ، وقتی شما با wizard به دیتا بیس وصل میشی اطلاعات شما بصورت موقت در فایل های Database1 و Database1_log (منظور از database1 اسمس میباشد که در هنگام ساخت دیتا بیس به آن اختصاص داده اید)واقع در پوشه برنامهتون قرار میگیره ولی با خارج شدن از برنامه و وارد شدن دوباره به برنامه اطلاعاتتون پاک شده است،و اما راه حل:
وقتی شما اطلاعاتتون را وارد برنامه میکنید و برنامه را میبندید فایل هایی به همان اسم هایی که ذکر شد(database1 & database1_log) علاوه در پوشه برنامه تون در فولدری به اسم bin واقع در همان محل خواهی دید ، شما باید این دو فایل واقع در bin را کپی کرده و در پوشه برنامهتون paste کنید که تبیعتا از شما میپرسه که به جای 2 فایلی که به همین نام وجود داره جایگزین شود یا خیر؟! که با جایگزین کردن این فایلها اگر دوباره وارد برنامهتون بشید اطلاعات خود را خواهی دید.
البته اگر شما برنامهتون را بصورت setup درآورده و نصب و اجرا کنید دیگر این دیتا بیس موقت را ندارید و اطلاعات در همان بار اول وارد دیتا بیس میشود.