View Full Version : grid و نمایش چند رکورد
IC_prog
سه شنبه 27 شهریور 1386, 09:48 صبح
چگونه میتوان برای یک گرید که به یک dbf متصل است مشخص نمود که رکوردهای خاصی را نمایش دهد . در واقع معادل با browse key id1.
مثلا اگر بخواهیم تعداد رکوردهای فاکتور خرید یک مشتری را از بین هزاران رکورد ببینیم و مثلا کد مشتری همان کد آیدی باشد.:گیج:
rahro
سه شنبه 27 شهریور 1386, 10:35 صبح
چگونه میتوان برای یک گرید که به یک dbf متصل است مشخص نمود که رکوردهای خاصی را نمایش دهد . در واقع معادل با browse key id1.
مثلا اگر بخواهیم تعداد رکوردهای فاکتور خرید یک مشتری را از بین هزاران رکورد ببینیم و مثلا کد مشتری همان کد آیدی باشد.:گیج:
آیا RecordSource رو به جدول و ControlSource رو به فیلد جدول خود تنظیم کرده ای
لازمه بعد از این عمل grid خود را refresh کنی .
IC_prog
سه شنبه 27 شهریور 1386, 10:59 صبح
آیا RecordSource رو به جدول و ControlSource رو به فیلد جدول خود تنظیم کرده ای
لازمه بعد از این عمل grid خود را refresh کنی .
اگر ممکنه بیشتر توضیح بدید.
من میخوام تعداد رکوردهای خاصی از dbf نمایش داده بشه .
آیا باید در recordesource شرطی را قرار دهم ؟
لطفا راهنمایی کنید.:ناراحت:
rahro
چهارشنبه 28 شهریور 1386, 07:16 صبح
اگر ممکنه بیشتر توضیح بدید.
من میخوام تعداد رکوردهای خاصی از dbf نمایش داده بشه .
آیا باید در recordesource شرطی را قرار دهم ؟
لطفا راهنمایی کنید.:ناراحت:
سلام
نه عرض کردم در RecordSource نام جدول خود را قرار ده . اگر میخوای تعداد خاصی از رکوردهای یک جدول به نمایش در بیاد قبل از آن با دستورات خاصی مثل set filter آنها رو محدود کن البته همانطور که ذکر شد حتما باید ControlSource هر یک از column رو هم مقدار دهی کنی ور بعد گرید خود را refresh کنی .
یک نمونه زیبا در این تاپیک http://barnamenevis.org/forum/showthread.php?t=72018&page=3
جناب شیری گذاشتن . ببنید چطور جدول رو به گرید متصل کرده
سعید حمیدیانفر
چهارشنبه 28 شهریور 1386, 07:39 صبح
سلام علیکم
من میخوام تعداد رکوردهای خاصی از dbf نمایش داده بشه .
آیا باید در recordesource شرطی را قرار دهم ؟
روشهای مختلفی وجود داره یکیش که فکر میکنم از بقیه راحت تره اینه
1- استفاده از set filter to
select <نام جدول>
set filter to <شرط مورد نظر>
thisform.grid1.refresh
البته قبلش باید جدول رو تو dataenvaironment فرم اضافه کنید
IC_prog
چهارشنبه 28 شهریور 1386, 09:07 صبح
با تشکر از اساتید .
اگر خاطرتون باشه در فاکس تحت داس ما از set filter استفاده نمیکردیم چون با بالا رفتن حجم dbf خیلی کند میشد . آیا این مسئله در vfp هم هست ؟
آیا روشی هست که با index یا چیزی شبیه به آن این کار را انجام داد مانند browse key
rahro
چهارشنبه 28 شهریور 1386, 09:23 صبح
با تشکر از اساتید .
اگر خاطرتون باشه در فاکس تحت داس ما از set filter استفاده نمیکردیم چون با بالا رفتن حجم dbf خیلی کند میشد . آیا این مسئله در vfp هم هست ؟
آیا روشی هست که با index یا چیزی شبیه به آن این کار را انجام داد مانند browse key
تا جایی که حقیر اطلاع دارم در جاهایی سرعت فرمان set filter با هیچ دستوری قابل قیاس نیست . ولی میتوانید از فرامین SQL استفاده کنید البته اگر شرط شما ترکیبی میباشد.
تست کنید و بهترین را انتخاب کنید.
IC_prog
چهارشنبه 28 شهریور 1386, 10:28 صبح
تا جایی که حقیر اطلاع دارم در جاهایی سرعت فرمان set filter با هیچ دستوری قابل قیاس نیست .
dbf های من بیش از 300000 هزار رکورد دارن اگر تخت داس بود و از set filter استفاده میکردم
یعنی فاجعه !!.
آیا بطور کلی در grid نمی توان رکوردها را محدود کرد یعنی این جزء قابلیتهای grid نیست ؟
mehran_337
چهارشنبه 28 شهریور 1386, 10:32 صبح
همان set filter کافیه و جواب می ده
rahro
چهارشنبه 28 شهریور 1386, 12:24 عصر
dbf های من بیش از 300000 هزار رکورد دارن اگر تخت داس بود و از set filter استفاده میکردم
یعنی فاجعه !!.
آیا بطور کلی در grid نمی توان رکوردها را محدود کرد یعنی این جزء قابلیتهای grid نیست ؟
شاید اشتباه میکنید این طور که من تست کردم در یک جدول تحت Dosبا 276522 رکورد و در سیستم با CPU هزارو صد این عملیات کمتر از 4 ثانیه طور میکشد البته من سعی کردم یک محدوده تاریخ را از بین این رکوردها فیلتر کنم .
در مورد سوال 2 هم جواب منفی ست زیرا که گرید یه object است نه دستور!
arashkhaan2002
پنج شنبه 29 شهریور 1386, 16:07 عصر
بهترین راه عملی که من خودم استفاده میکنم اینه که شما GRID رو نه به یک Table اصلی بلکه به یک تیبل موقت متصل کنید .
سپس با استفاده از دستور SELECT - SQL رکوردهای مورد نظر خود رو در یک کرزر بریزید ، سپس با دستور Append from... نتایج رو از کرزر درون Table موقت بریزید .
این روش برای Table های بزرگ بسیار کارساز و سریع عمل میکنه ، خصوصا با ویرایش VFP 7.
rezamim
پنج شنبه 29 شهریور 1386, 17:36 عصر
خوب چرا دیگه نتایج کرسر رو به تیبل بریزیم. همون کرسر رو به گرید وصل کنید
IC_prog
شنبه 31 شهریور 1386, 13:02 عصر
شاید اشتباه میکنید این طور که من تست کردم در یک جدول تحت Dosبا 276522 رکورد و در سیستم با CPU هزارو صد این عملیات کمتر از 4 ثانیه طور میکشد البته من سعی کردم یک محدوده تاریخ را از بین این رکوردها فیلتر کنم .
با تشکر از راهنمایی کلیه اساتید.
اولا این زمان بر روی شبکه بیشتر خواهد بود . ثانیا 4 ثانیه معطلی برای کسی که روزانه
یک دو ساعت با برنامه کارکنه شاید بد نباشه ولی کسی که مدام 8 ساعت بخواد اینقدر
معطل بشه جالب نیست .
من معمولا حتی سعی میکنم تعداد کلیدهایی که کاربر باید بزنه تا به حدفش برسه رو کاهش
میدم تا راهتر بتونه کارکنه . من بیشتر روی برنامه های فروشگاهی کار میکنم و در این تیپ
برنامه ها کاهش 1 ثانیه هم مهمه.
البته من جوابم رو گرفتم و از همون SQL استفاده خواهم کرد.:چشمک:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.