View Full Version : نمایش 10 رکورد از 1000 رکورد
delafarin
سه شنبه 28 شهریور 1391, 13:12 عصر
با سلام و خسته نباشید
چطور میتونم در دلفی 7 کاری انجام دهم که در dbgride از 1000 رکورد 10 رکورد را نمایش دهد بطوریکه با
نوشتن کدی در یک دکمه 10 تای بعدی را نمایش دهد
BORHAN TEC
سه شنبه 28 شهریور 1391, 14:06 عصر
سلام
روشهای مختلفی وجود داره ولی ای کاش می گفتید که از چه روشی برای برقراری ارتباط با پایگاه داده استفاده می کنید(dbExpress ، ADO و یا ...). ولی یکی از روشهای رایجی که باید به آن توجه داشته باشید این است که به RDBMS بگویید که از کدام رکورد و به چه تعداد رکورد برگرداند. به عنوان مثال در FireBird می توانید از دستور زیر برای برگرداندن 10 رکورد آخر استفاده کنید:
select skip ((select count(*) - 10 from People))
id, name from People
order by name asc
و برای برگرداندن رکوردهای 81 تا 100 می توانید از کد زیر استفاده کنید:
select first 20 skip 80 id, name from People
order by name asc
delafarin
چهارشنبه 29 شهریور 1391, 08:36 صبح
سلام
روشهای مختلفی وجود داره ولی ای کاش می گفتید که از چه روشی برای برقراری ارتباط با پایگاه داده استفاده می کنید(dbExpress ، ADO و یا ...). ولی یکی از روشهای رایجی که باید به آن توجه داشته باشید این است که به RDBMS بگویید که از کدام رکورد و به چه تعداد رکورد برگرداند. به عنوان مثال در FireBird می توانید از دستور زیر برای برگرداندن 10 رکورد آخر استفاده کنید:
select skip ((select count(*) - 10 from People))
id, name from People
order by name asc
و برای برگرداندن رکوردهای 81 تا 100 می توانید از کد زیر استفاده کنید:
select first 20 skip 80 id, name from People
order by name asc
-------------------------------------------------------------------------
با سلام و تشکر
ممنون از پاسخ شما - من از ADO استفاده میکنم (پایگاه داده sql)
وقتی دستور بالا را در commandtext دلفی استفاده میکنم روی کلمه skip ارور میده
ad1.Close;
ad1.CommandText:='select skip((select count(*)-10 from vpay)) cc,v1 from vpay';
ad1.Open;
ممنون میشم اگر راهنمایی کنید.
کامروا
چهارشنبه 29 شهریور 1391, 10:40 صبح
-------------------------------------------------------------------------
با سلام و تشکر
ممنون از پاسخ شما - من از ADO استفاده میکنم (پایگاه داده sql)
وقتی دستور بالا را در commandtext دلفی استفاده میکنم روی کلمه skip ارور میده
ad1.Close;
ad1.CommandText:='select skip((select count(*)-10 from vpay)) cc,v1 from vpay';
ad1.Open;
ممنون میشم اگر راهنمایی کنید.
در SQL 2005 به بعد به این شکل میشه نوشت:
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY IdCustomer) as row FROM Customer
) a WHERE row > 5 and row <= 10
delafarin
چهارشنبه 29 شهریور 1391, 11:15 صبح
در SQL 2005 به بعد به این شکل میشه نوشت:
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY IdCustomer) as row FROM Customer
) a WHERE row > 5 and row <= 10
با سلام و تشکر مجدد
ولی متاسفانه من SQL 2000 استفاده کردم
کامروا
چهارشنبه 29 شهریور 1391, 12:06 عصر
SQL 2000 تابع ()ROW_NUMBER رو نداره
یکی از روش هاش به این صورت میشه :
رکوردهای 80 تا 90
SELECT TOP 11 *
FROM Customers p1
WHERE (IdCustomer NOT IN (SELECT TOP 79 IdCustomer FROM Customers p2))
delafarin
پنج شنبه 30 شهریور 1391, 22:42 عصر
SQL 2000 تابع ()ROW_NUMBER رو نداره
یکی از روش هاش به این صورت میشه :
رکوردهای 80 تا 90
SELECT TOP 11 *
FROM Customers p1
WHERE (IdCustomer NOT IN (SELECT TOP 79 IdCustomer FROM Customers p2))
با سلام و تشکر مجدد
دستور بالا مشکل من رو حل کرد ولی موردی که هست اینه که وقتی در این دستور از AND همراه با order by استقاده میکنم برای بار اول 10 تا رو نشان میده
ولی 10 تای بعدی را نشان نمیده و فقط همون 10 تا رو نشان میده
پیشا پیش از راهنمایی شما اساتید متشکرم.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.