ورود

View Full Version : کد رکورد ماقبل آخر و مابعد اول



look20
یک شنبه 01 فروردین 1389, 19:53 عصر
با سلام و تبریک سال نو ببخشید با چه کدی میشه رکورد دوم و رکورد ماقبل اخر رو بدست آورید مثلا ما برای رکورد اول اخر میگیمEOF و BOF حالا می خوام اگه این کد من باشه

Ado.Recordset.EOF

Ado.Recordset.BOF
بجای اونها چی بزارم

HjSoft
دوشنبه 02 فروردین 1389, 10:22 صبح
از MoveNext و MovePre نمی تونی استفاده کنی ... یعنی روی اون رکورد اخر رفتی MovePrev ( دقیقا اسمش رو یادم نیست ولی شبیه این بود ) استفاده کن و برای رکورد دوم هم برو روی رکورد اول و MoveNext بده .

look20
دوشنبه 02 فروردین 1389, 10:34 صبح
از MoveNext و MovePre نمی تونی استفاده کنی ... یعنی روی اون رکورد اخر رفتی MovePrev ( دقیقا اسمش رو یادم نیست ولی شبیه این بود ) استفاده کن و برای رکورد دوم هم برو روی رکورد اول و MoveNext بده .
نه دوست عزیز مشکل من اینه که میخوام مثلا اگه توی رکورد اول بودم دکمه preview غیر فعال بشه و اگه توی رکورد اخر بودم دکمهnext غیر فعال باشه ولی جواب نمیده یعنی وقتی از eof و bof استفاده می کنم توی این رکورد ها این دکمه ها غیرفعال نیستند حالا می خوام برای رکورد ماقبل اخرومابعد اول این کار انجام بشه شاید این دکمه ها غیر فعال بشه

look20
دوشنبه 02 فروردین 1389, 10:45 صبح
منظورم اینکه مثلا اگه بخواهیم بگیم رکورد دوم و ماقبل اخر چی باید بگیم از چی کدی استفاده کنیم

HjSoft
دوشنبه 02 فروردین 1389, 11:20 صبح
از vsflex استفاده کن ، در یکی از ایونت ها می باشد که میتونید بعد از اینکه رکورد جا به جا شد ، یک کد رو اجرا کنید ، اونجا اگر همین BOF یا EOF رو بذارید ، فکر کنم درست کار کنه ! چون شما توی برنامه ای که نوشتین به غیر از تایمر نمی تونید بفهمید دقیقا الان روی چه رکوردی هستین ، یعنی رکورد الانی رو نشون نمیده ، قبلش رو نشون میده ... امیدوارم متوجه شده باشی .

look20
سه شنبه 02 آذر 1389, 20:09 عصر
توی فایل ضمیمه زیر میخام کارهای زیر انجام بشه
وقتی تو رکورد آخر (حسن احمدی) میخام وقتی این رکورد اومد دکمه bnext و bLast مخفی بشه و
همین طور وقتی تو رکورد اول هستم (حسین رضایی) میخام دکمه bprev و bFirst مخفی بشه

ممنون میشم کمکم کنید
با تشکر

programming70
چهارشنبه 03 آذر 1389, 11:56 صبح
توی فایل ضمیمه زیر میخام کارهای زیر انجام بشه
وقتی تو رکورد آخر (حسن احمدی) میخام وقتی این رکورد اومد دکمه bnext و bLast مخفی بشه و
همین طور وقتی تو رکورد اول هستم (حسین رضایی) میخام دکمه bprev و bFirst مخفی بشه

ممنون میشم کمکم کنید
با تشکر

درود بر تو دوست برنامه نویس من;
شما الگوریتم برنامه رو طوری تنظیم کن که وقتی رکورد آخر ظاهر شد دکمه مورد نظر Enable اون False بشه و در غیر این صورت با گذاشتن دستور else حالت Enable اون True بشه ;
همین کار رو برای رسیدن به اولین رکورد هم بزار;

look20
چهارشنبه 03 آذر 1389, 13:40 عصر
مشکل منم همینه چطور رکورد آخر و اول رو تعریف کنم
bof و eof فقط مربوط انتها و اول کانکشنه ولی برای رکورد اول و اخر از چه کدی استفاده کنم!!!
یاری دهنده ای نیست که مرا یاری کند

xxxxx_xxxxx
چهارشنبه 03 آذر 1389, 17:58 عصر
سلام،
همونطور که تو پیغام خصوصی خدمتون گفتم از متود Move استفاده کنید. چون متودهای MoveNext و MovePrevious اطلاعاتی از موقعیت فعلی Recordset به ما نمیده، بنابراین نمی تونیم از این دو متود استفاده کنیم. مگر یک حرکت ابلهانه ای انجام بدیم بدین شرح:
زمانی که دکمه Previous زده میشه:


Private Sub bPrev_Click()
SetButtons4 True
Adodc1.Recordset.MovePrevious
Adodc1.Recordset.MovePrevious
If Adodc1.Recordset.BOF Then SetButtonsFirstLast True
Adodc1.Recordset.MoveNext
End Sub
!!!
یعنی دو بار MovePrevious کنیم و بعد BOF رو بررسی کنیم، اگر به ابتدای Recordset رسیدیم دکمه ها رو Invisible کنیم و بعد حتماً یک بار MoveNext کنیم تا رکوردها به ترتیب پیمایش بشه (نه یکی در میون)

همین کار هم برای دکمه Next میشه انجام بدید.
اما هرگز این کارو انجام ندید. اصلاً روش کارآمدی نیست. انجام سه حرکت بجای یک حرکت!

برای همین باید از متود Move استفاده کنید.
یک متغیر عددی تو بخش General تعریف میکنیم با نام cPos (از این متغیر برای نگه داشتن موقعیت جاری Recordset استفاده می کنیم).
برای دکمه Next


Private Sub bnext_Click()
SetButtons4 True
cPos = cPos + 1
Adodc1.Recordset.Move 1
If cPos + 1 = Adodc1.Recordset.RecordCount Then SetButtonsFirstLast False
End Sub
و برای دکمه Previous


Private Sub bPrev_Click()
SetButtons4 True
cPos = cPos - 1
Adodc1.Recordset.Move -1
If cPos = 0 Then SetButtonsFirstLast True
End Sub
موفق باشید/