View Full Version : مشکل نمایش بعضی از رکوردها در DBgrid .
hex161
سه شنبه 30 فروردین 1390, 19:45 عصر
سلام
زمانی که رکوردهایم زیاد میشود، زمانی که رکورد بعدی رو ثبت میکنم ، در DBgrid نمایش داده نمیشود. درصورتی که اطلاعات در دیتابیس بخوبی ثبت شده. و برای دیدن رکورد جدید مجبور میشوم یکبار برنامه را ببندم و مجددا باز کنم.
من از DBgrid خود دلفی 2010 استفاده میکنم. وقتی تعداد رکوردها بیشتر از 15 تا میشود این مشکل پیدا میشود.
ممنون میشم کمکم کنید.
با تشکر
pezhvakco
چهارشنبه 31 فروردین 1390, 11:24 صبح
سلام :
DBgrid به خودی خود مشکلی نداره .
با چه کد دستوری داده ها در بانک ذخیره می کنین .
hex161
چهارشنبه 31 فروردین 1390, 14:29 عصر
من برای ثبت اطلاعات به این شکل عمل میکنم :
table1.insert;
table1name.text:=edit1.text;
table1.post;
developing
دوشنبه 19 اردیبهشت 1390, 12:19 عصر
با سلام.
اگه هربار بعد از هر کار بر روی بانک اون رو تازه کنی ( Refresh) درست میشه.
البته دستور درجت (Insert) اشتباه است. برای درج بهتره از این دستور استفاده کنی.
ADOTable1.Edit;
کدهای مربوطه
ADOTable1.Insert;
و زمانی از ارسال (Post) استفاده می کنیم که ویرایش (Update) انجام داده باشیم.
به هرحال در زمانی که اطلاعات می خواهند نمایش داده شوند(مخصوصا در DBGrid) یک بار بانک را تازه کن.(Refresh)
اگر مشکل رفع نشد باید یک بار بانک را بسته و دوباره انرا باز کنی یه چیزی مثل کد زیر
ADOTable1.Append;
کدهای مربوط به درج
ADOTable1.Insert;
ADOTAble1.Active := False;
ADOTable1.Active := True;
امیدوارم مشکلت حل بشه.
اگه جواب نگرفتی بازهم دقیق تر مشکلت رو بگو.
vcldeveloper
دوشنبه 19 اردیبهشت 1390, 19:59 عصر
و زمانی از ارسال (Post) استفاده می کنیم که ویرایش (Update) انجام داده باشیم.
چیزی که شما نوشتید، اشتباه هست، نه کدی که اون کاربر نوشته بود! متد Edit یک دیتاست رو به مد Edit بر روی رکورد فعلی میبره، و متد Insert یک رکورد جدید در دیتاست درست میکنه، و اون رکورد رو به عنوان رکورد فعلی در نظر میگیره، و رکورد جدید رو آماده ویرایش میکنه. متد Post تغییرات اعمال شده بر روی یک رکورد رو در بانک ثبت میکنه. پس اگر کسی بخواد رکوردی رو درج کنه، ابتدا متد Insert رو باید فراخوانی کنه، تا یک رکورد جدید ایجاد بشه، سپس به فیلدهای این رکورد جدید مقدار بده، و در نهایت این تغییرات رو با Post ذخیره کنه.
اگر مشکل رفع نشد باید یک بار بانک را بسته و دوباره انرا باز کنی یه چیزی مثل کد زیر
این کد هم اشتباه هست! Append و Insert هر دو یک کار انجام میدند، فقط Append سعی میکنه رکورد رو بعد از آخرین رکورد موجود درج کنه، ولی Insert سعی میکنه رکورد جدید رو بعد از رکورد فعلی درج کنه. پس، معنی نداره که شما یک بار Append رو فراخوانی کنید، یک بار هم Insert رو!
disiba
سه شنبه 25 تیر 1392, 18:55 عصر
سلام
منم مشکلی شبیه این دوستمون دارم . از طریق ado با بانک اکسس ارتباط برقرار کردم و اطلاعات جدول اکسس رو توی dbgrid نمایش میدم . وقتیکه اطلاعاتی به جدول اضافه می کنم در dbgrid نمایش داده نمیشه و با بستن برنامه و اجرای دوباره ان اطلاعات نمایش داده میشه . از دستورات dbgrid1.refresh و dbgrid1.update هم استفاده کردم ولی مشکلم حل نشد . اشکال کار من کجاست ؟ ممنون
alaveh
سه شنبه 25 تیر 1392, 19:35 عصر
اگر مشکل رفع نشد باید یک بار بانک را بسته و دوباره انرا باز کنی یه چیزی مثل کد زیر
ADOTAble1.Active := False;
ADOTable1.Active := True;
پاسخ این دوستمون درسته و کاملا هم جواب میده . هیچ کس به قسمت مفیدش توجه نکرد :)
یک بار کویری یا تیبل رو ببندید و دوباره باز کنید . درست میشه .
disiba
سه شنبه 25 تیر 1392, 21:35 عصر
پاسخ این دوستمون درسته و کاملا هم جواب میده . هیچ کس به قسمت مفیدش توجه نکرد :)
یک بار کویری یا تیبل رو ببندید و دوباره باز کنید . درست میشه .
ممنون . مشکل حل شد .
یوسف زالی
سه شنبه 25 تیر 1392, 22:19 عصر
دستورات refresh و update هردو مربوط به ساختار خود گرید می شه نه داده های درون اون.
می تونید از Close - open یا در حالتی که پارامتری ندارید از Requery استفاده کنید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.