View Full Version : سوال: ثبت موقت در گرید
پوریا_م
سه شنبه 25 مرداد 1390, 09:59 صبح
با سلام خدمت دوستان
من نیاز دارم اطلاعات رو در یک گرید خالی بصورت موقت ثبت کنم و در صورت نیاز اون رو در جدول مربوطه ذخیره کنم. مثل ثبت فاکتور یا سند مالی در یک گرید خالی و بعد ثبت اون در بانک اطلاعاتی.
بهترین راهکار از نظر شما چیه ؟ (از نظر انتخاب شیء ها و راهکار ثبت موقت و انتقال به جداول بانک)
با تشکــــــر
یوسف زالی
سه شنبه 25 مرداد 1390, 13:00 عصر
سلام.
شما می تونید مد هایی مثلا مثل تایید نشده و تایید شده داشته باشید که در تایید نشده status صفر باشه و در گزارشات و غیره فیلتر شه.
بعد با زدن دکمه ای تایید که شد status یک شه و در محاسبات لحاظ شه.
پوریا_م
سه شنبه 25 مرداد 1390, 14:16 عصر
دوست عزیز منظورم این بود که اطلاعاتی که در گرید نوشته میشن در بانک ذخیره نشن و هر وقت کاربر دکمه ثبت رو زد در بانک درج بشن.
سوالم این هست که برای کاری که در بالا عرض کردم از چه شیء استفاده کنم ؟؟؟
Vahid.Shatery
سه شنبه 25 مرداد 1390, 18:12 عصر
سلام
این نمونه کد دقیقا همین کار را انجام می ده . اگه جائیش مبهم بود بگین تا توضیح بدم .
with qrySendToTbl do
begin
close ;
SQL.Text := 'Select * from tblHWGoods where [SelectItems]=1 ' ;
qrySendToTbl.Open;
ExecSQL ;
for i := 0 to qrySendToTbl.RecordCount -1 do
begin
cmd1.CommandText := 'INSERT INTO tblListPrintCard (xGoodsModel_FK , xCode_PK , xSerialNo ) VALUES ' +
'(''' + qrySendToTbl.Fields[2].AsString + ''', ''' + qrySendToTbl.Fields[3].AsString + ''', '''
+ qrySendToTbl.Fields[4].AsString + ''')' ;
cmd1.Execute;
qrySendToTbl.Next;
end;
end ;
MainComponent.qryListPrintCard.Active := False;
MainComponent.qryListPrintCard.Active := True ;
سعید صابری
سه شنبه 25 مرداد 1390, 20:44 عصر
یه راه راحت تر می تونی از virtualtable که در محصولات شرکت Devart است استفاده کنی.اطلاعاتش در حافظه ذخیره میشه
پوریا_م
سه شنبه 25 مرداد 1390, 23:09 عصر
یه راه راحت تر می تونی از virtualtable که در محصولات شرکت Devart است استفاده کنی.اطلاعاتش در حافظه ذخیره میشه
دوست عزیز آیا این کامپوننت رایگانه ؟؟؟
پوریا_م
سه شنبه 25 مرداد 1390, 23:10 عصر
سلام
این نمونه کد دقیقا همین کار را انجام می ده . اگه جائیش مبهم بود بگین تا توضیح بدم .
with qrySendToTbl do
begin
close ;
SQL.Text := 'Select * from tblHWGoods where [SelectItems]=1 ' ;
qrySendToTbl.Open;
ExecSQL ;
for i := 0 to qrySendToTbl.RecordCount -1 do
begin
cmd1.CommandText := 'INSERT INTO tblListPrintCard (xGoodsModel_FK , xCode_PK , xSerialNo ) VALUES ' +
'(''' + qrySendToTbl.Fields[2].AsString + ''', ''' + qrySendToTbl.Fields[3].AsString + ''', '''
+ qrySendToTbl.Fields[4].AsString + ''')' ;
cmd1.Execute;
qrySendToTbl.Next;
end;
end ;
MainComponent.qryListPrintCard.Active := False;
MainComponent.qryListPrintCard.Active := True ;
چیزی که توی این کد می بینم اینه که توسط حلقه یه سری رکورد رو ثبت میکنید.لطفا توضیح بدین که این کد چطور خواسته من رو برآورده میکنه؟؟؟
vcldeveloper
چهارشنبه 26 مرداد 1390, 01:25 صبح
من نیاز دارم اطلاعات رو در یک گرید خالی بصورت موقت ثبت کنم و در صورت نیاز اون رو در جدول مربوطه ذخیره کنم.
اگر جستجو می کردید، قبلا بارها توضیح داده شده بود:
1- تغییر نوع LockType؛ اگر از ADO استفاده می کنید، خصوصیت LockType را بر روی ltBatchOptimistic قرار بدید. در صورتی که این کار را بکنید، تغییرات در داده ها تا زمانی که متد UpdateBatch فراخوانی نشه، به بانک ارسال نمیشه، و در حافظه باقی میمانه.
2- استفاده از ClientDataset؛ این کامپوننت تغییرات در داده ها را فقط به صورت Batch به بانک ارسال میکنه، یعنی هر تغییری که در داده های آن اعمال بشه، فقط با فراخوانی متد ApplyUpdates به بانک اطلاعاتی ارسال میشه.
m.batimar
یک شنبه 26 شهریور 1391, 17:25 عصر
اگر جستجو می کردید، قبلا بارها توضیح داده شده بود:
1- تغییر نوع LockType؛ اگر از ADO استفاده می کنید، خصوصیت LockType را بر روی ltBatchOptimistic قرار بدید. در صورتی که این کار را بکنید، تغییرات در داده ها تا زمانی که متد UpdateBatch فراخوانی نشه، به بانک ارسال نمیشه، و در حافظه باقی میمانه.
2- استفاده از ClientDataset؛ این کامپوننت تغییرات در داده ها را فقط به صورت Batch به بانک ارسال میکنه، یعنی هر تغییری که در داده های آن اعمال بشه، فقط با فراخوانی متد ApplyUpdates به بانک اطلاعاتی ارسال میشه.
سلام همه ی دوستان گلم من یه برنامه نویسی مبتدی هستم.... میشه برای ثبت موقت برام کامل توضیح بدید البته به زبان سی شارپ... من اصلا از اینا چیزی متوجه نشدم ممنونم ازتون....
fahimi
یک شنبه 26 شهریور 1391, 22:22 عصر
http://barnamenevis.org/showthread.php?298560-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-temp-table-%D8%AF%D8%B1-c&highlight=temp+table
mojtaba0912433
دوشنبه 03 مهر 1391, 10:59 صبح
بهترين روش استفاده از يك جدول به صورت موقت در ديتابيس ميباشد.اگر هنگام ثبت برق رفت اطلاعات از بين نره و بتوني ازش استفاده كني .وقتي كار ثبت تموم شد اطلاعات را به جدول اصلي انتقال بده و جدول موقت را پاك كن.هنگام ويرايش هم ميتوني اطلاعات را به جدول موقت فراخواني كني ،ويرايش كني و بعد به جدول دائمي انتقال بدي.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.