View Full Version : مبتدی: insert
majid2230
دوشنبه 04 مرداد 1389, 12:53 عصر
سلام
من از adoquery و دیتابیس اکسس استفاده میکنم و با دستور
ADOQuery.insert([Value])
استفاده کردم ولی برخلاف اسم تابع بعد از اجرای دستور به جای insert کردن رکورد ، رکورد جدید رو در انتهای رکوردها اضافه می کند ، چه جوری می تونم رکورد جدید رو بالای رکورد select شده اضافه کنم نه در انتها .
البته من یه Query نوشتم که رکوردها رو فیلتر میکنه و فقط یه تعداد خاصی نمایش داده میشه .
ممنون
pezhvakco
دوشنبه 04 مرداد 1389, 13:04 عصر
درود :
شما بهتره برای کار های مانند این (اضافه، حذف، ویرایش و ...) بر روی جدول های بانک اطلاعاتی اگه نمی خوای از کد دستور های SQL استفاده کنی از ابزار ADOTable با ADODataSet استفاده کنی .
DataSet1.First;
DataSet1.Insert;
DataSet1.Edit;
DataSet1.FieldByName('Name').AsString:='Name';
DataSet1.Post;
فکر خوش .
vcldeveloper
دوشنبه 04 مرداد 1389, 14:04 عصر
ولی برخلاف اسم تابع بعد از اجرای دستور به جای insert کردن رکورد ، رکورد جدید رو در انتهای رکوردها اضافه می کند
Insert تابع ایندکس موجود روی دیتاست شما ست، و رکورد جدید رو با توجه به ایندکس مربوطه اضافه میکنه. برای مثال اگر شما یک فیلد Auto Inc داشته باشید که ایندکس شما باشه، رکورد جدید دارای بالاترین مقدار برای این فیلد خواهد بود، پس در دیتاست شما به آخر لیست اضافه میشه.
Felony
دوشنبه 04 مرداد 1389, 16:18 عصر
درود :
شما بهتره برای کار های مانند این (اضافه، حذف، ویرایش و ...) بر روی جدول های بانک اطلاعاتی اگه نمی خوای از کد دستور های SQL استفاده کنی از ابزار ADOTable با ADODataSet استفاده کنی .
DataSet1.First;
DataSet1.Insert;
DataSet1.Edit;
DataSet1.FieldByName('Name').AsString:='Name';
DataSet1.Post;
فکر خوش .
وقتی Table رو به حالت Edit میخواید ببرید نیازی به فراخوانی متد Insert نیست .
pezhvakco
دوشنبه 04 مرداد 1389, 17:24 عصر
وقتی Table رو به حالت Edit میخواید ببرید نیازی به فراخوانی متد Insert نیست .
سپاس جناب تاجیک .
ولی من نمی خواستم جدول رو به حالت ویرایش (Edit ) به برم . می خواستم یک ردیف جدید اضافه کنم و برای این کار بعد از فرمان Insert ، برای آماده سازی جدول برای مقدار دهی فرمان ویرایش رو نوشتم .
فکر خوش .
mofrad
دوشنبه 04 مرداد 1389, 17:58 عصر
حالا چه فرقی میکنه ابتدای جدول اضافه کنه یا انتها؟! مهم اینه که اضافه بشه!:متفکر:
فقط کافیه موقع خروجی بر طبق فیلد موردنظرت Sort کنی.
مثلا نزولی Sort کن تا از انتها به اول خونده بشه (Order by ID DESC)
Felony
دوشنبه 04 مرداد 1389, 23:39 عصر
سپاس جناب تاجیک .
ولی من نمی خواستم جدول رو به حالت ویرایش (Edit ) به برم . می خواستم یک ردیف جدید اضافه کنم و برای این کار بعد از فرمان Insert ، برای آماده سازی جدول برای مقدار دهی فرمان ویرایش رو نوشتم .
فکر خوش .
باز هم نیازی به نوشتن Edit نبود ، وقتی جدول به حالت Insert میره آماده درج رکورد جدید میشه ، پس نیازی به Edit کردن نیست ، البته شاید من منظورتون رو درست متوجه نشدم .
majid2230
سه شنبه 05 مرداد 1389, 15:51 عصر
ممنون از جوابها ولی تا اونجایی که من فهمیدم جوابها مبنی بر این بود که به جای ADOQuery از ADOTable استفاده کنم ولی من از کامندهای SQL برای فیلتر کردن رکوردها و نمایش تعداد خاصی از اونها استفاده می کنم ، در نتیجه امکان استفاده از ADOTable نیست .
راه حلی نداره ؟؟
Felony
سه شنبه 05 مرداد 1389, 16:29 عصر
ممنون از جوابها ولی تا اونجایی که من فهمیدم جوابها مبنی بر این بود که به جای ADOQuery از ADOTable استفاده کنم ولی من از کامندهای SQL برای فیلتر کردن رکوردها و نمایش تعداد خاصی از اونها استفاده می کنم ، در نتیجه امکان استفاده از ADOTable نیست .
راه حلی نداره ؟؟
جواب ها مبنی بر چیزی نیست ، ADOQuery تمام قابلیت های ADOTable رو داره + قبول دستورات TSQL ولی در کل دوستان جواب سوال شما رو ندادن ، تا جایی که من میدونم نمیشه بین 2 رکورد موجود رکورد جدیدی درج کرد ( تست نکردم ) ، ولی راهی که به ذهنم میرسه این هست که یا بعد از درج جدولت رو مرتب کنی یا اینکه با یک حلقه از رکورد مورد نظر تا آخرین رکورد بخونی و هرکدوم رو یکی شیفت بدی جلو که راه فنی نیست و در بانک های بزرگ ...
mofrad
سه شنبه 05 مرداد 1389, 17:08 عصر
http://www.codestyle.org/java/faq-JDBC.shtml#insertsequence
bootshow
سه شنبه 05 مرداد 1389, 22:16 عصر
فکر کنم اگه رکورد فعلی را به اول جدول انتقال دهید و از insert استفاده کنید مشکلتون حل میشه.(امتحان نکردم ولی احتمالا باید درست باشه).البته اگه در صورتی بنا به گفته های آقای کشاورز روی جدول ایندکس تعریف نکرده باشید.چون وجود ایندکس ترتیب قرار گیری رکوردها (هنگام نمایش) را تغییر میدهد.البته در لینک بالایی منظورش دستورات sql هست که همیشه رکورد جدید در آخر جدول ذخیره میشه
adotable1.first;
adotable1.insert ...
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.