PDA

View Full Version : خواندن رکوردها از SQL به تعداد دلخواه در هر بار



b_mohammadpoor
پنج شنبه 10 مهر 1382, 08:54 صبح
با سلام
کسی میدونه چطوری میشه هنگامی که با ADO به بانک SQL متصل شده ایم و Table را ACTIVE میکنیم
همه بانک خوانده نشه بلکه به تعداد دلخواه از رکوردها باز بشه و اگه بین رکوردها حرکت کردیم و از رکورد
آخری گذشتیم هر بار به تعداد قبلی از رکوردها خوانده شود و به رکوردهای باز اضافه بشه .


با تشکر فراوان

b_mohammadpoor
شنبه 12 مهر 1382, 13:14 عصر
چرا کسی جواب نمیده :cry: یکی کمک کنه دیگه :(

(امید)
شنبه 12 مهر 1382, 15:30 عصر
با سلام
برای مورد اول


select top(n) * from tablename where ..

برای مورد بعدی من متوجه منظورت نشدم. یعنی مثلا اول 20 رکورد انتخاب کنی بعد اگه از 20 رد شدی دوباره به 20 قبلی اضافه بشه؟
یعنی 21 تا select شه و الی آخر؟
به نظر من این کار یه کم غیر عادیه . برای این کار دستور SQL رو باید تو خود برنامه بنویسی


n:=20;
ADOQUERY!.close;
ADOQuery1.SQL.text:='select top ('+#39+inttostr(n)+#39+') * from tablename';
ADOQuery1.open;

حالا اگه به رکورد آخر رسیدیم n رو تو برنامه به n+1 تغییر بدیم.

SReza1
یک شنبه 13 مهر 1382, 18:45 عصر
برای قسمت اول جواب دوستمون درسته!! ولی برای اینکه بخواهیم بطور متوالی بخونیم اون روش جواب نمیده! چون از اول دوباره میخونه!! در ado نکانیزمی هست که به تعداد مورد نظر بخونه و بیاره در حافظه بدون اینکه خودت مدیریت کنی

JavanSoft
دوشنبه 14 مهر 1382, 00:13 صبح
بطور کلی تکنیکهای ADOو BDE از بافر برای نمایش و پردازش استفاده می کنند ... اگر می خواهید که برنامه بدون استفاده از بافر عمل کند می توانید از DbExpressاستفاده کنید اما بیاد داشته باشید که این تکنیک یک طرفه است یعنی فقط رو به جلو حرکت می کند برای اطلاعات و شرح بیشتر به مقاله ذیل رجوع کنید
http://www.javansoft.com/learning119.htm

آیا ممکن است بپرسم چرا می خواهید
همه بانکک خوانده نشده بلکه به تعداد دلخواه از رککوردها باز بشود؟

SReza1
دوشنبه 14 مهر 1382, 23:09 عصر
آقای وکیلی!! خوب اگه تعداد رکوردها خیلی زیاد باشه که 200000 سال طول میکشه تا تمام ذکوردها رو بخونه!!! :lol:

(امید)
سه شنبه 15 مهر 1382, 07:02 صبح
ولی برای اینکه بخواهیم بطور متوالی بخونیم اون روش جواب نمیده! چون از اول دوباره میخونه!! در ado نکانیزمی هست که به تعداد مورد نظر بخونه و بیاره در حافظه بدون اینکه خودت مدیریت کنی

خوب آقا رضا مکانیزمی که گفتی چطور می شه ازش استفاده کرد؟

SReza1
سه شنبه 15 مهر 1382, 21:31 عصر
یم property به نام cashe هست که به تعداد مورد نظر در ram می‌آره!!
البته اگه دلفی کارید باید در adodataset ببینید!! امتحان کنید! :shock: :wink:

JavanSoft
چهارشنبه 16 مهر 1382, 00:15 صبح
شما هم وقتی کتاب را می خوانید تمام کتاب را در دست دارید ولی همه انرا یکجا نمی خوانید .. می توانید برای امتحان در یک حلقه For یک میلیون رکورد را در Table اضافه کنید ...سپس آنرا باز کنید .. اگر حرف شما درست باشد اصلا فایل نباید باز شود ولی خواهید دید که باز می گرددو باسرعت خوبی روی ان حرکت می کنید

SReza1
چهارشنبه 16 مهر 1382, 21:40 عصر
ما که تا حالا ندیدیم کسی این همه رکورد رو بخونه!! شما باید بخشی رو که بخواهید بخونید در حافظه بیارید!!!! اگه تونستی در یک سیستم client-server و یا 3 لایه این کار رو بکنی جایزه داری! :lol:
:twisted:

SReza1
چهارشنبه 16 مهر 1382, 21:51 عصر
راستی یخ چیزه دیگه!! تو که نمی تونی تمام کتاب رو بخونی بلکه اونو صفحه به صفحه می خونی نه همشو!! حالا تو بانکم همینه!!! تا اونجا که لازم داری بخون!! اینطوری که شما میگی خیلی سخته

abolfazl_ja
پنج شنبه 17 مهر 1382, 08:14 صبح
با سلام من هم مشکلی مانند شما دارم فقط با sql
server چون mysql خودش دستوری دارد به نام limit که این عمل را انجام میدهد ولی
sqlserverاین دستور را ندارد اگر شما می دانید به من هم بگویید

JavanSoft
پنج شنبه 17 مهر 1382, 14:22 عصر
آیا ممکن است بطور دقیق مشکل خود را بفرمایید؟

SReza1
پنج شنبه 17 مهر 1382, 17:32 عصر
بابا با cash کار کنید!!!!!!!!!!!!!!!!!!!!!!!!!!!!

(امید)
جمعه 18 مهر 1382, 21:16 عصر
برای قسمت اول جواب دوستمون درسته!! ولی برای اینکه بخواهیم بطور متوالی بخونیم اون روش جواب نمیده! چون از اول دوباره میخونه!! در ado نکانیزمی هست که به تعداد مورد نظر بخونه و بیاره در حافظه بدون اینکه خودت مدیریت کنی

کاملا درسته .

SReza1
شنبه 19 مهر 1382, 11:14 صبح
بابا چه عجب بالاخره یکی پیدا شد!! :oops: