PDA

View Full Version : سوال: اضافه کردن فیلدی از جدول یک در جدول دو، با خطا مواجه می شود. چرا؟



rabi213
شنبه 04 اردیبهشت 1389, 08:32 صبح
سلام
من میخوام دوتا فیلد رو از دو تا table مقایسه کنم و یکی از فیلدهای table1 رو تو یکی از فیلدهای table2 وارد کنم
اما رکوردی که وارد میشه 0 هست نمیدونم چرا؟!:ناراحت:

string bnum = " select [DriverInfo].BusNumber " +
"from DriverInfo,BusLocation
where [DriverInfo].PhoneNumber=[BusLocation].PhoneNumber";


این مقدار رو به string تبدیل کردم..درسته یا نه؟


OleDbCommand cmdS = new OleDbCommand(bnum);
con.Open();
cmdS.Connection = con;

string num = cmdS.ExecuteNonQuery().ToString();

و بعد با insert وارد table بعدی کردم..
من نمیدونم اصلا درسته این راه یا نه..یکی راهنمایی کنه لطفا:افسرده:
ممنون

ozzy_mra
شنبه 04 اردیبهشت 1389, 08:49 صبح
به جای executeNonQuery.Tostring() از ()executeScaler استفاده کن شاید درست شه. ولی من روش زیر رو پیشنهاد می کنم :
به جای کوئریت از کوئری زیر استفاده کن

Insert Into Table1 Set Field1 = (select Field2 From Table2 WHERE....)
و بعد پارامترتو پاس بده و در آخر ExecuteNonQuery کن
موفق باشید

behnam25214
شنبه 04 اردیبهشت 1389, 08:55 صبح
راجع به سوال دومت که اونو نباید به String تبدیل کنی.
حالا چرا اونو به string تبدیل میکنی؟

rabi213
شنبه 04 اردیبهشت 1389, 09:21 صبح
به جای executeNonQuery.Tostring() از ()executeScaler استفاده کن شاید درست شه. ولی من روش زیر رو پیشنهاد می کنم :
به جای کوئریت از کوئری زیر استفاده کن

Insert Into Table1 Set Field1 = (select Field2 From Table2 WHERE....)و بعد پارامترتو پاس بده و در آخر ExecuteNonQuery کن
موفق باشید
این ارور رو بهم میده : Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'.


" INSERT INTO BusLocation set BusNumber = {SELECT BusNumber " +
"from DriverInfo where DriverInfo.PhoneNumber=BusLocation.PhoneNumber}"
:متفکر:

ozzy_mra
شنبه 04 اردیبهشت 1389, 09:29 صبح
این ارور رو بهم میده : Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'.


" INSERT INTO BusLocation set BusNumber = {SELECT BusNumber " +
"from DriverInfo where DriverInfo.PhoneNumber=BusLocation.PhoneNumber}"
:متفکر:

اینجوری اصلاحش کن :

" INSERT INTO BusLocation (BusNumber) values (SELECT d.BusNumber " +
"from DriverInfo d inner join BusLocation B On d.PhoneNumber=b.PhoneNumber)"
امیدوارم درست شه
همون کد قبلیتم اگه از executeScaler به جای executeNonQuery.Tosting استفاده کنی فکر می کنم درست شه

ozzy_mra
شنبه 04 اردیبهشت 1389, 09:32 صبح
جای {} هم باید از ( ) استفاده کنی

exlord
شنبه 04 اردیبهشت 1389, 09:46 صبح
به جای executeNonQuery.Tostring() از ()executeScaler استفاده کن شاید درست شه. ولی من روش زیر رو پیشنهاد می کنم :
به جای کوئریت از کوئری زیر استفاده کن

Insert Into Table1 Set Field1 = (select Field2 From Table2 WHERE....)و بعد پارامترتو پاس بده و در آخر ExecuteNonQuery کن
موفق باشید
:قهقهه: ببخشید ها این query که شما نوشتی ماله update هستش نه insert

insert into table1 (field1) values(select id from table2 where ...)
ExecutenoneQuery برای delete , update , insert هستش و مقداری بر نمیگردونه ... اگه میخوای فقط یک مقدار برگردونه باید از executescalar استفاده بکنی ...
برای مقایسه 2 تا جدول هم باید اونارو join بکنی....

select field1 from table1 as t1 inner join table2 as t2 on t1.x=t2.x where ....

ozzy_mra
شنبه 04 اردیبهشت 1389, 09:54 صبح
:قهقهه: ببخشید ها این query که شما نوشتی ماله update هستش نه insert

insert into table1 (field1) values(select id from table2 where ...)

:خجالت::بامزه: راست میگی :لبخند: شما به بزرگی خودتون ببخشید کلا امروز یکم سرحال نیستم :گیج:

rabi213
شنبه 04 اردیبهشت 1389, 10:20 صبح
برای delete , update , insert هستش و مقداری بر نمیگردونه ... اگه میخوای فقط یک مقدار برگردونه باید از executescalar استفاده بکنی ...
برای مقایسه 2 تا جدول هم باید اونارو join بکنی....

select field1 from table1 as t1 inner join table2 as t2 on t1.x=t2.x where ....
قاطی کردم من:ناراحت::لبخند:
همه رو امتحان کردم اما باز هم Syntax ارور میده!

"INSERT INTO BusLocation set BusNumber = (SELECT d.BusNumber " +
"from DriverInfo as d INNER JOIN BusLocation as B on d.PhoneNumber=b.PhoneNumber)"دیگه where هم میخواد بنویسم؟!

exlord
شنبه 04 اردیبهشت 1389, 10:35 صبح
قاطی کردم من:ناراحت::لبخند:
همه رو امتحان کردم اما باز هم Syntax ارور میده!

"INSERT INTO BusLocation set BusNumber = (SELECT d.BusNumber " +
"from DriverInfo as d INNER JOIN BusLocation as B on d.PhoneNumber=b.PhoneNumber)"دیگه where هم میخواد بنویسم؟!

"INSERT INTO BusLocation ( BusNumber ) values (SELECT d.BusNumber " +
"from DriverInfo as d INNER JOIN BusLocation as B on d.PhoneNumber=b.PhoneNumber)"

ozzy_mra
شنبه 04 اردیبهشت 1389, 10:36 صبح
"INSERT INTO BusLocation (BusNumber) values (SELECT d.BusNumber " +
"from DriverInfo d inner join BusLocation B On d.PhoneNumber=b.PhoneNumber)"
این باید کار کنه دیگه
این برای اینزرت یه فیلدشه مسلماً اگر فیلد های دیگه ای هم داره باید قرار بدی (اگه not null باشند) من ازتون عذر می خوام کد اولم رو با آپدیت قاطی کرده بودم ولی کد بالا صورت دیگه ی همون کوئری شماست
اگه شرط دیگه ای هم دارید تو بخش where بنویسید والا اگه شرطتون همون تساوی دو تا فیلد باشه کد بالا کفایت می کنه

rabi213
شنبه 04 اردیبهشت 1389, 11:11 صبح
خواهش میکنم
کپی پیست کردم من اما نمیدونم چرا باز همون ارور رو میده:
Syntax error. in query expression 'SELECT d.BusNumber from DriverInfo as d INNER JOIN BusLocation as b on d.PhoneNumber=b.PhoneNumber'.

:افسرده:
ممنون به هر حال..:خجالت:

ozzy_mra
شنبه 04 اردیبهشت 1389, 11:21 صبح
خواهش میکنم
کپی پیست کردم من اما نمیدونم چرا باز همون ارور رو میده:
Syntax error. in query expression 'SELECT d.BusNumber from DriverInfo as d INNER JOIN BusLocation as b on d.PhoneNumber=b.PhoneNumber'.

:افسرده:
ممنون به هر حال..:خجالت:

دوست عزیز Values رو بردار فکر کنم درست شه