PDA

View Full Version : سوال: کپی کردن داده های جدول در sql



زیبا بستان
دوشنبه 24 شهریور 1393, 23:49 عصر
سلام ،نیاز فوری به کمک شما دوستان دارم.
من یک جدول دارم که کلاس های دانشگاه در آن ذخیره میشود. می خواهم با کلیلک روی دکمه "کلاس ها از ترم قبل کپی شود" تمام فیلدهای جدول با تغییر مقدار فیلد ترم به ترم جاری ام در همان جدول کپی شود .
ممنون میشم بهم کمک کنید.

mohammad reza beizavi
دوشنبه 24 شهریور 1393, 23:53 عصر
درود بر شما
منظور شما اینه که میخواید یه سری اطلاعات رو از یه جدول بگیرید یه فیلدش رو تغییر بدید و دوباره داخل همون جدول بذارید. درست فهمیدم؟

زیبا بستان
سه شنبه 25 شهریور 1393, 00:09 صبح
بله درسته
فقط نمی خوام اطلاعات قبلی ام آپدیت بشه.

mohammad reza beizavi
سه شنبه 25 شهریور 1393, 00:30 صبح
فقط Id جدول رو توی select نذارید. نه توی select و نه توی Insert
توی این کوئری PrevoiusTermNo شماره ترم قبل و NewTermNo شماره ترم جدیده




INSERT INTO Table1(feild1,feild2,feild3,PrevoiusTermNo)
Select feild1,feild2,feild3,NewTermNo FROM Table1 Where ...

زیبا بستان
سه شنبه 25 شهریور 1393, 01:00 صبح
فقط Id جدول رو توی select نذارید. نه توی select و نه توی Insert
توی این کوئری PrevoiusTermNo شماره ترم قبل و NewTermNo شماره ترم جدیده




INSERT INTO Table1(feild1,feild2,feild3,PrevoiusTermNo)
Select feild1,feild2,feild3,NewTermNo FROM Table1 Where ...


ببخشید من کئوری اینطور نوشتم ولی جواب نمیده.
insert into t_Class(location,facilities,capacity,status,TermYe ar)
select location,facilities,capacity,status,931 as termnow from t_Class
می تونید بیشتر راهنمایی ام کنید.ممنون میشم

mohammad reza beizavi
سه شنبه 25 شهریور 1393, 01:06 صبح
این کوئری رو تست کردم،
جواب نمیده رو متوجه نمیشم
اگه خطا میده پیامش رو بذارید

زیبا بستان
سه شنبه 25 شهریور 1393, 01:11 صبح
این کوئری رو تست کردم،
جواب نمیده رو متوجه نمیشم
اگه خطا میده پیامش رو بذارید

متاسفانه خطا نمیده ، اطلاعات رو هم در جدول کپی نمیکنه. من این دستورات درون دکمه ام نوشتم ولی هیچ کار خاصی رو انجام نمیده


string Query = "insert into t_Class(location,facilities,capacity,status,TermYe ar) select location,facilities,capacity,status,931 as termnow from t_Class";
SqlConnection co = new SqlConnection(ConfigurationManager.ConnectionStrin gs["managementConnectionString"].ConnectionString);


SqlDataAdapter da = new SqlDataAdapter(Query, co);
DataTable dt = new DataTable();



da.Fill(dt);


ببخشید

mohammad reza beizavi
سه شنبه 25 شهریور 1393, 01:19 صبح
اول اینکه برای تست کوئری بهترین راه اجرای اون توی خود دیتابیس هست.
دوم اینکه موقعی که نمی خواید از کوئری مقدار خروجی بگیرید دیگه نیازی به استفاده از SqlDataAdapter و DataSet نیست.
فک کنم کدتون رو به این تغییر بدید درست بشه. ولی ترجیحا شما تذکر اول رو همیشه گوش کنید


SqlCommand cmd = new SqlCommand("insert into t_Class(location,facilities,capacity,status,TermYe ar) select location,facilities,capacity,status,931 from t_Class");
SqlConnection co = new SqlConnection(ConfigurationManager.ConnectionStrin gs["managementConnectionString"].ConnectionString);
co.Open();
cmd.ExecuteNonQuery();
co.Close();

زیبا بستان
سه شنبه 25 شهریور 1393, 01:31 صبح
اول اینکه برای تست کوئری بهترین راه اجرای اون توی خود دیتابیس هست.
دوم اینکه موقعی که نمی خواید از کوئری مقدار خروجی بگیرید دیگه نیازی به استفاده از SqlDataAdapter و DataSet نیست.
فک کنم کدتون رو به این تغییر بدید درست بشه. ولی ترجیحا شما تذکر اول رو همیشه گوش کنید


SqlCommand cmd = new SqlCommand("insert into t_Class(location,facilities,capacity,status,TermYe ar) select location,facilities,capacity,status,931 from t_Class");
SqlConnection co = new SqlConnection(ConfigurationManager.ConnectionStrin gs["managementConnectionString"].ConnectionString);
co.Open();
cmd.ExecuteNonQuery();
co.Close();


ببخشید انقدر مزاحمتون میشم.متاسفانه sql روی سیستمم نصب نمیشه که کوئری اونجا اجرا کنم و ناچارا با sql ویژال کار میکنم.
شرمنده کدهام رو تغییر دادم ولی ارور میده.
ExecuteNonQuery: Connection property has not been initialized.

هیچ موقع کانکشن دستی ایجاد نکردم و همیشه با استور پروسیژر و ویزارد کار کردم به خاطر همین الان انقدر مشکل دارم.
خیلی خیلی ممنونم

mohammad reza beizavi
سه شنبه 25 شهریور 1393, 01:39 صبح
بسیار خب
شما Connection string رو دستی بهش بده نه اینکه از app.conf بیاریش. اینجوری:


SqlConnection co = new SqlConnection("Data Source=.\sqlexpress;Initial Catalog=TestDB;User ID=sa;Password=beizavi");
SqlCommand cmd = new SqlCommand("insert into t_Class(location,facilities,capacity,status,TermYe ar) select location,facilities,capacity,status,931 from t_Class",co);
co.Open();
cmd.ExecuteNonQuery();
co.Close();


البته فکر کنم کد قبلی که گذاشتم هم مشکل داره. این رو تست کنید. فقط connection string رو اصلاح کنید و کد خودتون رو بگذارید

mohammad reza beizavi
سه شنبه 25 شهریور 1393, 01:51 صبح
یه نکته: این روشی که Conncetion string رو از app.conf می خونید روش خوبیه و این توصیه قبلی برای تست بود نه اینکه همیشه این کار رو انجام بدید.

زیبا بستان
سه شنبه 25 شهریور 1393, 01:51 صبح
بسیار خب
شما Connection string رو دستی بهش بده نه اینکه از app.conf بیاریش. اینجوری:


SqlConnection co = new SqlConnection("Data Source=.\sqlexpress;Initial Catalog=TestDB;User ID=sa;Password=beizavi");
SqlCommand cmd = new SqlCommand("insert into t_Class(location,facilities,capacity,status,TermYe ar) select location,facilities,capacity,status,931 from t_Class",co);
co.Open();
cmd.ExecuteNonQuery();
co.Close();


البته فکر کنم کد قبلی که گذاشتم هم مشکل داره. این رو تست کنید. فقط connection string رو اصلاح کنید و کد خودتون رو بگذارید

ببخشید می خوام دستورات با رویداد کلیک دکمه اتفاق بیافته.همونطور که شما فرمودید این دستورات نوشتم


protected void Button1_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand("insert into t_Class(location,facilities,capacity,status,TermYe ar) select location,facilities,capacity,status,931 from t_Class");
SqlConnection co = new SqlConnection(ConfigurationManager.ConnectionStrin gs["managementConnectionString"].ConnectionString);
co.Open();
cmd.ExecuteNonQuery();
co.Close();
}

ولی ارور زیر را میده نمیدونم باید چیکارش کنم.


ExecuteNonQuery: Connection property has not been initialized.Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: ExecuteNonQuery: Connection property has not been initialized.

:ناراحت::ناراحت:

mohammad reza beizavi
سه شنبه 25 شهریور 1393, 01:58 صبح
توی پست #10 اصلاح کردم از اون استفاده کنید

زیبا بستان
سه شنبه 25 شهریور 1393, 02:08 صبح
توی پست #10 اصلاح کردم از اون استفاده کنید

خیلی خیلی ممنونم ، درست شد. واقعا لطف کردید.
فقط ببیخشید الان قبل از اینکه روی دکمه کلیک کنم همه اطلاعات قبلی(کلاس های ترم قبل) در گریدم نشون میده و با کلیک روی دکمه ام به جدول ضافه میشه.
نمیشه کاری کنم که اطلاعات قبلی تا قبل از کلیک روی دکمه بهم نشون نده.
نمیدونم منظورم واضح گفتم یا نه؟:ناراحت:

زیبا بستان
سه شنبه 25 شهریور 1393, 02:22 صبح
توی پست #10 اصلاح کردم از اون استفاده کنید
درست شد.
یه دنیا ممنونم.
مرسی
انشاالله همیشه و در همه مراحل موفق باشید.