PDA

View Full Version : سوال در مورد ورود در اطلاعات



سیروس مقصودی
سه شنبه 05 مهر 1384, 07:32 صبح
با سلام

من چگونه میتوانم اطلاعاتم را در یک Grid وارد کنم به طوریکه چند ردیف از اطلاعات را وارد کنم و پس زدن دکمه ذخیره اطلاعات چند ردیف همزمان در Table ذخیره شود . مثلا اطلاعات یک سند حسابداری را میخواهم در table ذخیره کنم پس از اینکه اطلاعات کل یک سند وارد شد اطلاعات یکجا ذخیره شود .

لازم به ذکر است که من از Sql Server و ADO استفاده مینمایم .

با تشکر

Kamyar.Kimiyabeigi
سه شنبه 05 مهر 1384, 08:17 صبح
شما میتونین قبل از Insert , اون dataset رو DisableControls کنین و در یک حلقه چند رکوردتونو Insert کنین و در انتها EnableControls کنین

سیروس مقصودی
سه شنبه 05 مهر 1384, 13:05 عصر
شما میتونین قبل از Insert , اون dataset رو DisableControls کنین و در یک حلقه چند رکوردتونو Insert کنین و در انتها EnableControls کنین

من تمام مراحل گفته شده را انجام دادم ولی هنگام Disable نمودن رکورد قفل شده و امکان ویرایش داده نمیشود و همینطور امکان ایجاد یک رکورد جدید وجود ندارد . لطفا مرا راهنمائی فرمائید .

Kamyar.Kimiyabeigi
سه شنبه 05 مهر 1384, 16:54 عصر
من براتون یک مثال مینویسم


ADOTableDinner.DisableControls;
for i := 0 to CustomerOrderCount - 1 do
begin
ADOTableDinner.Insert;
//Set Fields
ADOTableDinner.Post;
end;
ADOTableDinner.Active := Close;
ADOTableDinner.Active := Open;

ADOTableDinner.EnableControls;

vcldeveloper
چهارشنبه 06 مهر 1384, 02:06 صبح
من چگونه میتوانم اطلاعاتم را در یک Grid وارد کنم به طوریکه چند ردیف از اطلاعات را وارد کنم و پس زدن دکمه ذخیره اطلاعات چند ردیف همزمان در Table ذخیره شود . مثلا اطلاعات یک سند حسابداری را میخواهم در table ذخیره کنم پس از اینکه اطلاعات کل یک سند وارد شد اطلاعات یکجا ذخیره شود .
خصوصیت LockType از شی DataSet خودتون را روی ltBatchOptimistic تنظیم کنید و برای ذخیره تمامی تغییرات بصورت یکجا از متد UpdateBatch استفاده کنید.


شما میتونین قبل از Insert , اون dataset رو DisableControls کنین و در یک حلقه چند رکوردتونو Insert کنین و در انتها EnableControls کنین
DisabledControls فقط باعث میشه که DataSet کامپوننت های Data-aware ایی که بهش متصل هستند را از تغییرات بوجود آمده در داده ها با خبر نکنه. این متد ربطی به سوال پرسیده شده نداره.

m-khorsandi
چهارشنبه 06 مهر 1384, 07:39 صبح
درود
در تکمیل توضیحات آقای کشاورز باید بگم شما میتونید از به روز رسانی های دسته ای استفاده کنید،
در این صورت تغییراتی که روی رکوردهایتان ایجاد میکنید در حافظه اعمال میشوند و پس از مدتی
میتوان آنها را به صورت کلی روی DataBase اعمال کرد.

LockType را برابر با ltBatchOptimistic قرار دهید تا به روزرسانی دسته ای فعال شود.(البته قبل از اینکه جدول رو
فعال کنید)
CursorLocation را برابر با clUseClient قرار دهید.
از این به بعد تمام تغییرات شما در حافظه اعمال میشود تا زمانی که تصمیم بگیرید تغییرات رو روی DataBase اعمال کنید.
از متد UpdateBatch برای اعمال تغییرات از حافظه به DataBase استفاده کنید.
از متد CancelUpdate برای لغو تغییرات استفاده کنید.
با متد UpdateStatus میتوانید تشخیص دهید که روی رکورد جاری چه عملیاتی انجام شده( ویرایش، درج،حذف)