مشاهده نسخه کامل
: ارور در کار با DBGrid ؟
سلام
دوستان من بانکم رو به یک DBGrid وصل کردم .اما متاسفانه در موقع کار همش با ارور Row can not be located for updating مواجه میشم .
خاصیت adCriteriaKey رو هم تنظیم کردم اما افاقه نکرد .
من میخوام که در این DBGrid بشه رکورد اضافه کرد ، رکورد حذف کرد و رکورد رو ویرایش کرد .(توی خودش)
همچنین مقدار یکی از ستون ها با توجه به مقدار ستون قبلیش محاسبه بشه(Master/Deties )
این جدول 5 تا ستون داره
1-ServiceCode -Key
2-RegDate-Key
3-ServiceName
4-Count
5-Amount
با شروع برنامه جدول Main و ServicesData رو Active میکنم .
برای اینکه بتونم مقدار (Amount ) رو محاسبه کنم بایست تعداد(Count )در جدول ذخیره شده باشه:پس بعد از وارد کردن تعداد و زدن دکمه Enter دستور Edit و بعدش Post رو میدم .
برای حذف رکورد هم از Edit و بعدش Delete استفاده میکنم .
مشکل کجاست؟
delphianddotnet
26-01-2008, 09:04
سلام
سورس برنامه رو اینجا بزار تا ببینیم مشکلش چیه.
F A R H A D
26-01-2008, 09:10
با سلام
قبل از تنظيم adCriteriaKey اين خط رو هم اضافه كن:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
tablename نام جدول مورد نظر براي update هست
سلام مجدد
اینم کداش
با شروع برنام رکورد های مربوط به تاریخ روز جاری که ممکنه چند ساعت قبلش ذخیره شده باشه از جدول Main به جدول TempMain انتقال پیدا میکنه
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
قبلا خیلی با جدول اصلی ور رفتم اما به جایی نرسیدم . چون تو جدولم دو تا کلید تعریف کرده (ServiceCode,RegDate( گفتم اگه اطلاعات رو توی یک جدول دیگه ذخیره کنم و با ذخیره شدن اطلاعات بین این دوتا جدول ردو بدل بشه مشکل حل میشه .برای همین یک جدول از جنس جدول اصلی انتخاب کردم .
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
فکر کنم توی جدول پارادکس بود که اگر جدولم خالی بود و من دکمه حذف رو میطدم اروری نمیداد . اما اینجا این ارور خیلی اذیتم میکنه برای همین تو بلاک گذاشتمش
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در این قسمت جدول سرویس های پیش فرض با سرویس های موجود در جدول TempMain مقایسه میشه و اون سرویس هایی که در جدول TempMain نیست بهش اضافه میشه
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
چون من به جمع تمام سطر ها و ستون ها نیاز دارم بایستی اطلاعات وارد شده در جدول ذخیره بشن تا بتونم با یک Query جمعشون رو بدست بیارم و تا زمانی که اطلاعات وارد شده ذخیره نشن Query چیزی رو بر نمیگردونه برای همین دستور زیر رو نوشتم
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
دوستان من هر کاری میکنم یه جای کار میلنگه .
ذخیره رو درست میکنم حذف کردن ارور میده ، حذف رو درست میکنم رکورد اضافه کردن ارور میده ، اونو درست میکنم مقدار مبلغ رو با توجه به تعداد بدست نمیاره
لطفا راهنمایی کنید خیلی وقته دارم باهاش کلنجار میرم (شاید دو ما) دیگه داره ازش بدم میاد
سلام
آقا یکی پیدا نمیشه یه نمونه DBGrid برای ما بزاره که توش هم بشه ویرایش کرد هم حذف و هم اضافه بدون این ارور ها
F A R H A D
27-01-2008, 10:51
سلام
آقا یکی پیدا نمیشه یه نمونه DBGrid برای ما بزاره که توش هم بشه ویرایش کرد هم حذف و هم اضافه بدون این ارور ها
با سلام
قبل از تنظيم adCriteriaKey اين خط رو هم اضافه كن:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
tablename نام جدول مورد نظر براي update هست
تست كردي؟
اگر جواب مثبته سورس رو بذار. مطمئنا كسي نمياد كد و ديتابيس شما رو پياده سازي كنه تا متوجه شه كه مشكل كجاست. براي مشكلاتي از اين قبيل بهتره كه سورس رو بذاري تا زودتر جواب بگيري
سلام
لره اون کارو کردم اما فرقی نکرد
نمونه برنامه رو میزارم . دوستان اونو طوری تغییر بدین که وقتی چند تا رکورد اضافه کردیم و به یکی دیگه از دکوردا با موس حرکت کردیم ارور نده .
یا فیلدایی رو بدون اینکه دکمه ذخیره رو بزنیم بصورت رندومی تغییر بدیم
ممنون
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
NoneForce
27-01-2008, 11:15
سلام
لره اون کارو کردم اما فرقی نکرد
نمونه برنامه رو میزارم . دوستان اونو طوری تغییر بدین که وقتی چند تا رکورد اضافه کردیم و به یکی دیگه از دکوردا با موس حرکت کردیم ارور نده .
یا فیلدایی رو بدون اینکه دکمه ذخیره رو بزنیم بصورت رندومی تغییر بدیم
ممنون
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام
كامپوننتهايي را كه در پروژه استفاده كرديد را ذكر كنيد.
مسير ديتابيس را بصورت static تعريف نكنيد.
F A R H A D
27-01-2008, 11:47
قبل از اينكه كامپوننت مورد استفاده رو بگي، تست كن ببين با dbgrid استاندارد هم همين مشكل رو داري؟
چون بعضي از مشكلات به خاطر استفاده از كامپوننتهاي خاص بوجود مياد!
سلام
دوستان عزیز این نمونه ای رو که گذاشتم بدون هیچ کامپوننت خاص تستش کردم بازم ارور داد(شما dbgrid شرکتehlib رو حذف کنید و مال دلفی رو بزارین) فرقی نمیکنه
خیلی ساده بگم:شما یه DBGrid روی فرمتان بزارین بعد اجرا کنید چند تا رکورد بهش اضافه کنید و بصورت رندمی در فیلد های مختلف کلید کنید ببینید ارور میده یا نه ؟(از حالت Bachupdate استفاده نکنید چون در این حالت تا دستور سیو رو ندین اطلاعات در بانک ذخیره نمیشن و من نمیتونم از یکی از فیلدها جهت Master/Detiles استفاده کنم)
ممنون
مرد مباح
27-01-2008, 18:43
دوست عزيز.
اين چيزي كه ميخواي كار سختي نيست.
اينم نمونه سرس كاملش.
ولي دوستان لطفا سعي كنيد خودتون بيشتر دنبال اين چيزا بگرديد.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام مجدد
مرد مباح عزیز ممنونم که سری زدی و نمونه هم گزاشتی . اما من میخواهم که با ADO به Access وصل بشم نه Paradox. اتفاقا برنامم قبلا با Paradox بود و اصلا از این مشکلا نداشتم . اما حالا که میخواهم با Access و بعدش هم SQLSERVER کار کنم به این مشکل بر خوردم .
شاید نزدیک دو ماهه که با این مشکل دارم کلنجار میرم . کلی تو اینترنت جوستجو کردم چه فارسی و چه انگیلیسی (تا اونجا که سر در میاوردم ) رو خوندم اما مشکل حل نشد . مثل اینکه کسی تا بحال توی خود DBGrid مقادیر رو ویرایش نکرده و همشون در مورد اینکه اطلاعات یک رکورد رو توی DBEdit ویرایش کنیم صحبت کردن .
بازم ازت ممنونم . اگه میتونی یه نمونه مثل همین اما با بانک Access برام بزاری خیلی ممنون میشم
یا حق و منتظرم
مرد مباح
28-01-2008, 00:31
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام
مرد مباح عزیز شما در این برنامه ای که فرستادین 4 تا رکورد رو پشت سر هم اضافه کنید و بعد به دو تا رکورد قبلی برگردید و یکی از فیلدارو تغییر بدین وبعدش بدون اینتر زدن با موس به یکی دیگه از رکورد ها حرکت کنید.
آیا با ارور مواجه میشین یا نه؟
MasterData
28-01-2008, 09:11
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ببين اين يکي بدرد کارت ميخوره
دوست عزیز MasterData ممنون از جوابت
اما تو برنامه شما 1- فیلد کلید تعریف نکردید 2-من میخوام کاربر با زدن کلیدهای جهت دار کیبرد رکوردی رو اضافه کنه و اگر این کار رو در برنامه شما بکنه بازم همون ارور رو میده(یعنی اگه به یکی دیگه از رکوردها بپره ارور میده)
F A R H A D
28-01-2008, 11:24
اگر كاربر فيلد كليد رو در حين ويرايش تغيير بده مطمئنا اين error پيش مياد. از اونجا كه فيلد كليد شما در يك رابطه master/detaol هم شركت داره بهترين راه اجازه ندادن به كاربر براي ويرايش اين فيلد هست. با فيلدهايي كه كليد نيستند مطمئنا اين مشكل پيش نمياد
مرد مباح
28-01-2008, 15:28
دوست عزيز.
دوستان لطف كنيد و خودتون هم يك كمي ور برين . سورس آماده با يك تغيير خيلي كوچيك كامل ميشه ولي اونم زحمت نميكشيد ؟؟
ضمنا شما نبايد فيلد اصلي كليد رو در اختيار بزارين چون دقيقا همون مشكلي كه فرهاد جان گفتند پيش مياد.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام مجدد
دوست عزیز مرد مباح : حالا بر فرض اینکه من فیلد کلیدی از نوع Autonumber تعریف کنم اونوقت چطور نذارم که در یک تاریخ مشخص 2 تا ServiceCode نداشته باشیم ؟یعنی اگه در تاریخ 01/01/1386 دو تا سرویس با شماره های 52 و52 وارد کنیم ایراد بگیره اما اگه اولی با تاریخ 01/01/1386 و دومی با تاریخ 02/01/1386 باشه ایراد نگیره ؟
بازم ممنون
F A R H A D
29-01-2008, 08:09
خب از يك كليد مركب استفاده كن مشكل حل ميشه
كليد مركب تركيبي از فيلدها هست كه هميشه منحصر به فرد هست
سلام
خوب منم همین کار رو کرده بودم . ServiceCode,RegDate اما مشکل اینه که مقدار تاریخ بر اساس روز کاری مشخص میشه و اون یکی توسط کاربر (پس هردوتاش در هر روز تغییر میکنه) در صورتیکه یکی از بچه ها گفت این مقدار ها در حین کار نباید تغییر کنه .
F A R H A D
02-02-2008, 08:15
دو تا سرویس با شماره های 52 و52 وارد کنیم ایراد بگیره اما اگه اولی با تاریخ 01/01/1386 و دومی با تاریخ 02/01/1386 باشه ایراد نگیره ؟
من بر اساس گفته شما كليدي مركب از اين دو فيلد رو پيشنهاد دادم. اگر قرار هست كه با مقادير تكراري زيادي سر و كار داشته باشيم بايد كليد رو عوض كني. مثلا يك فيلد auto increasment رو با يكي از فيلد ها تركيب كن و مقادير فيلد ديگه رو زمان ورود چك كن
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.