View Full Version : سوال: مشکل در اضافه کردن رکورد با insert into
hasandrw
شنبه 01 مرداد 1390, 23:51 عصر
سلام
دو جدول مشابه هم با فیلدهای kalaid,nkala,ckala دارم و می خوام با گذاشتن شرط رکوردها رو از جدول یک به جدول دو انتقال بدم.من این دستورات رو نوشتم ولی خطا می گیره.
with ADOQuery3 do begin
Close;
ADOQuery3.SQL.Text:='insert into table1 select * from kala where kalaid='+Edit1.Text+'';
Open;
end;
اگه میشه راهنماییم کنین
یوسف زالی
یک شنبه 02 مرداد 1390, 08:47 صبح
سلام.
خطاش رو بگذارید اما حدس می زتم اشکال در Identity Insert باشه.
Identity جدول دوم یا باید برداشته شه یا اینکه * را یرداشته و نام فیلدها رو بنویسید البته بدون انتخاب ID.
موفق باشید.
hasandrw
یک شنبه 02 مرداد 1390, 12:23 عصر
اول این خطا میده
current provider does not support returning multiple recordsets a single execution
بعدش هم این خظا میده
Adoquery3:command text does not return a result set
شما میگین Identity منظورتون چیه من نمی دونم؟
یوسف زالی
یک شنبه 02 مرداد 1390, 13:04 عصر
ارور اول شما می گه برای اینسرت باید هر ردیف رو جداگانه اینسرت کنید.
ارور دوم شما هم مربوط هست به سلکتی که اصلا واردش نشدید.
به بیان دیگر ، برای انجام کار به جای Open کردن باید ExecSQL رو استفاده می کردید.
البته اینها رو حدسی دارم می گم.
Identity همون AutoNumber هست...
وقتی داری در جدولی اینسرت می کنی نباید فیلد دارای خاصیت Indentity رو مقدار بدی.
اما شما به نظر می رسه با استفاده از SP این کار رو راحت تر بتونید انجام بدید.
hasandrw
یک شنبه 02 مرداد 1390, 17:33 عصر
حالا چکار کنم را حل بهتری به ذهنتون نمی رسه؟
جدولی دارم که دارای رکوردهای زیادی هستند می خوام رکوردهای خاصی باشرط رو به جدول دیگه انتقال بدم.مثلا:رکوردهایی که CustomID=1 است.
در کل برای ویرایش کردن فاکتور های ذخیره شده می خوام این کار رو انجام بدم.یعنی می خوام هرطوری باشه که بتونم هر فاکتور رو جداگانه ویرایش کنم .
اگه کاری از دستتون ساخته است راهنمایی ام کنین.
متشکرم
یوسف زالی
یک شنبه 02 مرداد 1390, 19:37 عصر
دوست من تشکر دکمه داره!
خدمتتون عرض کردم که با SP این کارها راحت تره و در یک سشن انجام میشه.
اینجا رو ببینید.
http://barnamenevis.org/showthread.php?296719-آموزش-کار-با-SP
اگر سوالی موند بپرسید.
hasandrw
یک شنبه 02 مرداد 1390, 23:12 عصر
تاپیک قبلی که زده بودی نگاه نکرده بودم.حالا فهمیدم از این به بعد تشکر برام دکمه داره!
این لینک نگاه کردم ولی چند سوال برام پیش اومده!
Create Procedure SPName as blabla
تو قطعه کد بالا منظورتان از blabla چیه؟
تو همون لینک منظورتان از UI چیه؟
و تو کنترل ADOStoredProc اکتیو کردن هم هر کاری می کنم بلند نیستم!اگه خاصیتی داره که متوجه نمی شم اگه میشه راهنمایی ام کنین؟
ممنونم
یوسف زالی
دوشنبه 03 مرداد 1390, 01:08 صبح
نکنه بابت هر تشکر یارانه اضافی می دن؟!:قهقهه:
معامله که نیست. اگر هم تشکر نکنی جواب می دیم اما شما با تشکر در حقیقت قدردانی خودتون رو نشون می دید و خستگی ما رو از بین می برید.
در زبان انگلیسی BlaBla یعنی فلان و فلان...
منظور من این بوده که کد های خودتون رو به جاش بگذارید.
UI هم مخفف User Interface یا همون برنامه EXE ای هست که باهاش به دیتابیس وصل می شید.
تو کنترل ADOStoredProc اول باید Connection اون رو ست کنی. که بلدی.
بعد اسم پروسیجر رو براش تنظیم کنی.
اگر پارامتر داره براش پارامتر هاشو ست کن.
در آخر هم Close و Open کن.
اما اگر برای نمایش داده ها نمی خواهی از اون استفاده کنی و می خواهی اتفاقی در داده ها بیفته باید از ExecProc استفاده کنی.
موفق باشی.
hasandrw
سه شنبه 04 مرداد 1390, 10:06 صبح
من کانکشنش و اسم پروسیجر رو ست کردم ولی.ولی اسم پروسیجرکجا برامون کارایی داره؟یعنی هر اسمی رو ست منیم مشکی نداره؟
ولی پارامتر هر کاری می کنم ست نمی شه.میشه یک کمی در مورد پارامت بیشتر توضیح بدین که چیه و جچوری باید تنظیم کرد.
و Closeو Open رو باید با کد نویسی بنویسم؟
ExecProc هم توقسمت کامپوننت ها وجود نداره.
یوسف زالی
سه شنبه 04 مرداد 1390, 11:08 صبح
از شی TADOStoredProc استفاده کنید.
خاصیتی به نام ProcedureName داره که لیستی از پروسیجرها رو نشون می ده.
بعد از انتخاب اون، روی خاصیت پارامتر ، سه نقطه کلیک کنید تا پارامتر هاش خود به خود اضافه شه.
حالا در برنامه نویسی مثلا این جور رفتار کنید:
برای اجرای SP برای دستکاری داده:
SPName.Parameters.ParamByName('@P1').Value := 10; // masalan
SPName.ExecProc;
برای اجرای SP که توش سلکت هست:
SPName.Close;
SPName.Parameters.ParamByName('@P1').Value := 10; // masalan
SPName.Open;
ExecProc یک متد از شی ADOStoredProc هست.
موفق باشید.
hasandrw
سه شنبه 04 مرداد 1390, 18:53 عصر
ولی وقتی رو Combo Box جلوی ProcedureName کلیک می کنم لیست پروسیجرها را نشون نمی ده؟
یوسف زالی
سه شنبه 04 مرداد 1390, 22:04 عصر
اگر شما کانکشن مربوطه رو درست ست کرده باشید باید بده.
کانکشنتون رو تست کنید.
hasandrw
چهارشنبه 05 مرداد 1390, 01:21 صبح
من کانکشن رو تست کردم ولی دیگه هم چیزی نمیاد؟
منظورتان از پروسیجر و پارامترچیه ؟ شاید چیزی است که من نمی دونم می خواد تنظیمش کنن. تا من اونا رو بررسی کنم.
fakhravari
جمعه 11 شهریور 1390, 13:44 عصر
DM.Query.Close;
DM.Query.SQL.Clear;
DM.Query.SQL.Add('insert into Customer (Name,Family,Tell,Sherkhat,BedehKhar,Bestankhar) values ('+QuotedStr(sMaskEdit1.Text)+' , '+QuotedStr(sMaskEdit2.Text)+' , '+ QuotedStr(sMaskEdit3.Text)+' , '+QuotedStr(sMaskEdit4.Text)+' , '+QuotedStr(sMaskEdit5.Text)+' , '+QuotedStr(sMaskEdit6.Text)+')');
DM.Query.ExecSQL;
hasandrw
جمعه 11 شهریور 1390, 21:56 عصر
QuotedStr اینجا چه کاری انجام میده؟
fakhravari
شنبه 12 شهریور 1390, 12:51 عصر
تبدیل رشته string - integer
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.