PDA

View Full Version : نمایش 10 رکورد



شفیعی
سه شنبه 12 آبان 1383, 19:09 عصر
سلام
در یک DBGRID تعدادی رکورد داریم مثلا 20 رکورد می خواهیم بگوییم تعداد 10 تا را نمایش بدهد یا براساس شماره رکوردها بگوییم 10 رکوردی که دیر تر از بقیه وارد شده اند نمایش داده شود باید چکار کرد

حمیدرضاصادقیان
سه شنبه 12 آبان 1383, 21:46 عصر
خوب فکر کنم میتونی اخرین رکورد رو بگیری.بعد تا 10 تا قبل رو نمایش بدی.ساده ترین راه به نظر من اینه.

vcldeveloper
چهارشنبه 13 آبان 1383, 03:13 صبح
از Query بجای Table استفاده کن و این کار رو با دستورات SQL انجام بده

شفیعی
چهارشنبه 13 آبان 1383, 03:29 صبح
سلام
دوستان لطفا بیشتر توضیح دهید

vcldeveloper
چهارشنبه 13 آبان 1383, 03:56 صبح
مثلا می تونی از یه چیزی شبیه این در خاصیت SQL از Query استفاده کنی:


SELECT TOP 10 * FROM TableName


به این ترتیب Query فقط 10 رکورد اول رو برمیگردونه. می تونه با استفاده از Where روی این نتایج شرط هم بزاری.

خاصیت DataSet اون DBGrid هم روی Query که ساختی تنظیم کن تا نتایج Query رو نمایش بده.

شفیعی
پنج شنبه 14 آبان 1383, 21:38 عصر
سلام
دوست عزیز دستور شما را انجام دادم روی TOP 10 پیغام خطا می دهد خود شما اینکار را تست کرده اید

vcldeveloper
جمعه 15 آبان 1383, 03:24 صبح
دوست عزیز دستور شما را انجام دادم روی TOP 10 پیغام خطا می دهد خود شما اینکار را تست کرده اید
ُُTop n یکی از دستورات SQL هست، ADOQuery با این دستور مشکلی نداره (من آزمایش کردم)، اما ظاهرا TQuery و در واقع BDE این دستور رو نمیشناسه! :متفکر:

m_reza
جمعه 15 آبان 1383, 16:11 عصر
top 10 ده تا رکورد اول را نشان می دهد. اگه بخواهیم 10 تا رکورد آخر را نشان دهد چی باید بنویسیم

شفیعی
جمعه 15 آبان 1383, 19:39 عصر
سلام
باید حتما از QUERY است کرد راه دیگری نیست

vcldeveloper
شنبه 16 آبان 1383, 02:25 صبح
باید حتما از QUERY است کرد راه دیگری نیست
برای هر رکورد یه فیلد ID بسازید (Auto Number یا اگه میخواید خودتون بصورت دستی به هر رکورد یه شماره بدید) بعد می تونید با استفاده از خاصیت Filter به نتیجه ای که میخواید برسید. مثلا:


Table.Filtered := False;
Table.Filter := 'MyRecNum > 1 OR MyRecNum < 10';
Table.Filtered := True;

شفیعی
جمعه 18 دی 1383, 06:40 صبح
سلام
برای این کار می توان از فیلدهای محاسباتی استفاده کرد و یا براساس شماره رکورد فیلتر بزنیم

شنبه 19 دی 1383, 13:25 عصر
سلام

یک راه دیگه استفاده از کامپوننت هایی است که این قابلیت رو دارند تا جایی که یادمه کامپوننت quantomGrid که در سی دی برنامه نویس هم هست و خیلی قوی هم هست و یا کامپوننت IP4000 که اینهم خیلی dbgrid پر قابلیتی توش داره . فکر کنم اینها این قابلیت رو داشته باشند.

FirstLine
یک شنبه 20 دی 1383, 22:59 عصر
با سلام
در ASP کلاسیک انجام این کارها با RecordSet & SQL امکان پذیر است ولی در دلفی نمیشود و من هم چندین بار با عنوانهای مختلف پرسیده ام ولی همچنان بی جواب مانده است. :(
در ضمن همه کامپوننتهای معرفی شده را امتحان کردم و جواب نداده :cry:
و در نهایت جالب اینه که از لحاظ تئوری امکان پذیره و همه راهنمایی میکنند ولی عملا ... :embr:
یعنی دلفی تو این قسمت کم داره؟!.... :confy2:
و اینکه آیا راهی وجود ندارد که بتوان در دلفی جستجویی انجام داد و بر اساس این جستجو مثلا از رکورد 20 ام تا 30 ام کل مجموعه رکوردها که مثلا 100000 رکورد است را نمایش دهد ؟! :sorry:
با تشکر

یک شنبه 27 دی 1383, 11:38 صبح
راه دیگر استفاده از متد های مربوط به شی bde یا ado است اول با متد first به رکورد اول برو بعد با یک متد دیگه که الان یادم نیست به رکورد شماره n برو بعد از اون در یک حلقه هر تعداد خواستی رکورد بکش بیرون و یک table زمان اجرا create کن(یا از ابتدا بساز) و رکورد ها رو بریز توی اون حالا فقط میتونی همونهارو نشون بدی ولی خودم راستش رو بخوای خیلی از این پیشنهاد خودم بدم اومد چرخوندن لقمه دور سر است ترجیح میدم اگه به این مشکل یه روز برخوردم یه sql واسش استفاده کنم .

alidll
دوشنبه 28 دی 1383, 15:02 عصر
با سلام
در ASP کلاسیک انجام این کارها با RecordSet & SQL امکان پذیر است ولی در دلفی نمیشود و من هم چندین بار با عنوانهای مختلف پرسیده ام ولی همچنان بی جواب مانده است. :(
در ضمن همه کامپوننتهای معرفی شده را امتحان کردم و جواب نداده :cry:
و در نهایت جالب اینه که از لحاظ تئوری امکان پذیره و همه راهنمایی میکنند ولی عملا ... :embr:
یعنی دلفی تو این قسمت کم داره؟!.... :confy2:
و اینکه آیا راهی وجود ندارد که بتوان در دلفی جستجویی انجام داد و بر اساس این جستجو مثلا از رکورد 20 ام تا 30 ام کل مجموعه رکوردها که مثلا 100000 رکورد است را نمایش دهد ؟! :sorry:
با تشکر
با سلام به دوستان
در حقیقت آدم شک میکنه که شما دلفی کار باشی ...
عزیز من این همه راه به شما گفته شد و دو راهی که من خودم هم از آنها استفاده کرده ام را جناب مدیر (علی خان کشاورز) و آقای دادوند به شما گفته اند باز شما می گویید نمی شود . دنبال کامپوننت و این چیزای الکی هم نرو . از همون راهایی که دو نفر بالا گفتند برو صد در صد به نتیجه می رسی .
موفق باشی

esi022
چهارشنبه 30 دی 1383, 09:59 صبح
جناب شفیعی من با ado query,ado connection وصل شدم
دستورات آقای کشاورز که گفته بود selec .. top ... بدرستی اجرا شد :confy2:

شفیعی
پنج شنبه 01 بهمن 1383, 20:31 عصر
سلام


جناب شفیعی من با ado query,ado connection وصل شدم


دوست عزیز من می خواستم با QUERY اینکار انجام دهم در ضمن در مورد مطلبی که گفتی اگر نمونه برنامه داری برایم ارسال کن

esi022
یک شنبه 04 بهمن 1383, 04:28 صبح
یه سوال
از چی برای کانکت شدن به db استفاده میکنی؟
ado , dataset , x , y ,?????

شفیعی
یک شنبه 04 بهمن 1383, 04:55 صبح
سلام
از TABLEو DATASET

esi022
یک شنبه 04 بهمن 1383, 14:46 عصر
من یه فایل همراه پست میفرستم - جون من این پارادوکس رو بیخیال شو
من به sql وصل شدم. شما به هرچیزی دیگه تو ado connection میتونی کانکت بشی - تو تب connectionstring
:گیج: