PDA

View Full Version : سوال: کپی جدول تو یه جدول دیگه-SQL کاراش جواب بدن



saman_itc
دوشنبه 06 خرداد 1387, 13:15 عصر
ol_cm = New OleDbCommand("insert into Factor_F (Radif,ID_Shali,ID,noe,Tedad_Tabdil,Vazn_tabdil,Fi ,kol) Values ( select (Radif,ID_Shali,ID,noe,Tedad_Tabdil,Vazn_tabdil,Fi ,kol) from Factor_F_T )", ol_cn)

این کد چرا خطا میده؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
Syntax error. in query expression 'select (Radif,ID_Shali,ID,noe,Tedad_Tabdil,Vazn_tabdil,Fi ,kol) from Factor_F_T'.

ir_programmer
دوشنبه 06 خرداد 1387, 13:33 عصر
چرا از Cursor استفاده نمي كني؟

Sub Zero
دوشنبه 06 خرداد 1387, 15:54 عصر
شکل صحیح انتقال اطلاعات از یه جدول به جدول دیگه به این صورته :

Insert INTO DestTable (YourFiels)
Select YourFiels From SourceTable
حتما باید فیلدهای جدول مبدا با جدول مقصد هم نوع و به یه تعداد باشند.


چرا از Cursor استفاده نمي كني؟
با این حرف شما کاملا موافقم در جداول با تعداد رکورد بالا فوق العادس

rezaei manesh
دوشنبه 06 خرداد 1387, 16:01 عصر
برای استفاده از این دستور باید فیلد هایی رو که از جدول 1 انتخاب می کنید و می خواهید به جدول 2 ببرید باید از نظر نام و تعداد و نوع کاملا یکسان باشد اگر نام ها فرق می کنند می توانید نام مستعار بدین
(نام مستعارas نام)

rezaei manesh
دوشنبه 06 خرداد 1387, 16:04 عصر
چرا از Cursor استفاده نمي كني؟

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

Sub Zero
دوشنبه 06 خرداد 1387, 18:42 عصر
اگه مشکل شما با کپی کردن یک جدول در یک جدول دیگر حل می شود حتی در صورتی که در دستورتون شرط های زیادی داشته باشین من توصیه می کنم که از همین روش استفاده کنین و از کرسر استفاده نکنین
جناب رضایی منش لطفا دلیل یا دلایل عدم استفاده از کرسر رو بیان کنید؟ با توجه به اینکه با استفاده از همین کرسرها مدت زمان ادغام 2 جدول رو ( براساس شرایطی خاص) از 3 دقیقه به 10 ثانیه رسوندم .حتی از نظر مصرف حافظه هم در مقابل روش قبلی بهتر عمل کرد .:متفکر:

rezaei manesh
دوشنبه 06 خرداد 1387, 19:04 عصر
سلام
من چندین جا خوندم که باید در حد امکان از کرسر استفاده نکرد مثلا اگه جایی با join کار ما راه می اوفته هرگز از کرسر استفاده نکنیم.
http://barnamenevis.org/forum/showpost.php?p=481646&postcount=3
http://barnamenevis.org/forum/showpost.php?p=422264&postcount=3
http://barnamenevis.org/forum/showpost.php?p=422371&postcount=5

saman_itc
دوشنبه 06 خرداد 1387, 20:10 عصر
با تشکر از دوستان



ol_cm = New OleDbCommand("INSERT INTO Factor_F_t (Radif, ID_Shali, ID, noe, Tedad_Tabdil, Vazn_tabdil, Fi, kol) SELECT Radif, ID_Shali, ID, noe, Tedad_Tabdil, Vazn_tabdil, Fi, kol FROM(Factor_F) where id = " & id.Text & " ", ol_cn)

نکته ای که وجود داره استفاده نشدن از Values و به راحتی جواب میده
وقتی دستور به این راحتی هست که استاندارد هم هست نیاز به ... نیست

saman_itc
دوشنبه 06 خرداد 1387, 20:15 عصر
Sub Zero (http://barnamenevis.org/forum/member.php?u=20250) جان کاش اشکال کدم بهم میگفتی
خودم تو ServerExplorer تو Insert Results inserts the query result into the target you supply. درش اوردم.ولی خیلی ازت ممنونم
دمه VS گرم با اینServerExplorer

bahar_engineer
یک شنبه 10 خرداد 1388, 14:47 عصر
می خوام بدونم من الان جدولم رو به این صورت توی یه جدول دیگه کپی می کنم :



string s;
s = " insert into users(name,pic,sex,sleep,born) select name,pic,sex,sleep,born from (login) where code=1";
OleDbCommand cmd1 = new OleDbCommand(s, con);
con.Open();
cmd1.ExecuteNonQuery();
con.Close();
این کد توی رویداد کلیک picturebox1 نوشته و اجرا می شه ...

من می خوام اگه روی picturbox2 کلیک کردم حالا بیاد همین کار رو انجام بده اما شرطش باشه where code=2 و البته می خوام جدول users در واقع update بشه ... یعنی جدول users تنها و تنها یک رکورد داشته باشه که با کلیک روی هر picturbox طبق شماره اون به روز رسانی بشه ...

راهنمایی لطفاً:متفکر:

ma1246
سه شنبه 12 خرداد 1388, 13:10 عصر
کاربران عزیز یه چیزیو در Copy کردن اطلاعات از یه جدول به جدول دیگه باید توجه داشته باشید که خیلی مهمه اونم اینه که فیلد هایی از جدول که دارای خاصیت Calculate هستند یعنی محاسباتی اند و یا Identity آنها Yes می باشد شما مجبور هستید بجای استفاده از * نام تک تک فیلدها بجز فیلد های ذکر شده باید نام برده شود.