PDA

View Full Version : حذف سطرهایی از dbgrid بدون حذف از table



m_tabari
دوشنبه 12 تیر 1385, 18:00 عصر
سلام
من یه dbgrid دارم که به یه query و یا جدول فیلتر شده مربوط به یه table وصله میخوام هر وقت که لازم باشه سطرهایی از این dbgrid رو حذف کنم ولی رکورد مورد نظر از جدول اصلی پاک نشود. این که میگویم از dbgrid حذف شود منظورم اینست که از جدول فیلتر شده یا query هم پاک شود ولی از table اصلی پاک نشود

Mahyaa
دوشنبه 12 تیر 1385, 19:26 عصر
با فیلتر کردن میتونی این کار رو انجام بدی .
در واقع تمام رکوردهایی که شما در DBGrid حذف میکنید باید دارای یک مقدار مشترک در یک فیلد باشند تا بتونی همه را فیلتر کنی .

من نمیدونم این کار رو به چه منظوری می خواهی انجام بدی اما به نظر میآد باید فیلدی در جدول داشته باشی که وضعیت این رکورد رو نگه داره .
با حذف رکورد از Grid مقدار اون فیلد رو دستکاری کنی .

m_tabari
دوشنبه 12 تیر 1385, 22:18 عصر
ببین برنامه واسه یه اموزشگاهه که میخواهیم از یکسری از کارآموزان که ثبت نام قطعی کرده اند گزارش بگیریم و من برای این کار یه query گرفتم که با توجه به وضعیت ثبت نام این کار رو انجام میده حالا فرض کن که user میخواد از query حاصل یه تعداد رو بدلخواه حذف کنه و من نمیخوام این حذف به پاک شدن از table منجر بشه.راجع به filter هم که گفتید این کارو کردم به این صورت
.Qstudent.Filter:='id<>'+IntToStr(Qstudent.fieldbyname('id').AsInteger
منتها مشکل اینجاست که با این کد یک کارآموز از لسیت حذف میشود و اگر دوباره این کارو با یه کاراموز دیگه بکنم کارآموز قبلی دوباره نشون داده میشه یعنی من میخوام یجور فیلتر رو روی فیلتر قبلی اعمال کنم و فیلتر قبلی از بین نره که البته با نوشتن این کد:
.Qstudent.Filter:=Qstudent.Filter+'id<>'+IntToStr(Qstudent.fieldbyname('id').AsInteger
برای دومین مرتبه فیلتر با پیغام خطا مواجه میشم
و دیگه اینکه نمیخوام دیگه به جدولم فیلد جدید اضافه کنم

mzjahromi
سه شنبه 13 تیر 1385, 06:49 صبح
با فیلتر هم میشه این کار کری ولی أخه برای چند نفر
یکی از راههاش اینه که یه جدول اضافی تعریف کنی و لیست اونائی که می خوان حذف بشن رو داخل اون بریزی و از این دوتا جدول کوئری بگیری.اینجوری کنترلت خیلی بیشتره

vcldeveloper
سه شنبه 13 تیر 1385, 07:01 صبح
خصوصیت LockType را روی BatchOptimistic بزارید؛ به این ترتیب حذف یا ویرایش داده ها فقط در حافظه انجام میشه و روی بانک تاثیری نداره. برای ثبت تغییرات نهایی در بانک باید از متد UpdateBatch استفاده کنید.