PDA

View Full Version : توی Locate رکورد های تکراری یه سوالی دارم! یکی از اساتید کمک کنه!!



saliatso
جمعه 06 آذر 1388, 23:59 عصر
سلام به اساتید عزیز
فرض کنید یه Table دارم که یکی از فیلد ها، فیلد "نام" هستش. حالا میخوام تو برنامم کلیدی بذارم بنام "جستجو" که هر رکوردی رو که فیلد "نام" اون علی هست رو برام پیدا کنه البته دونه به دونه (( یعنی برای بار اول که کلید جستجو رو زدم اولین رکوردی که فیلد "نام" اون علی هست رو نشون بده و بعد اگه دوباره خواستم کلید جستجو رو بزنم همینطور بترتیب یکی یکی روکوردهایی رو که فیلد "نام" اونا علی هست رو بهم نشون بده و بعد از آخرین رکوردی که پیدا کرد دوباره بره به اولین رکوردی که فیلد "نام" اون علی هست.))
یعنی یه چیزی تو مایه های find next اکثر برنامه ها..!!!
نمیدونم شاید با دستو دیگری این کار امکان پذیره ولی در کل شدیدا لنگ این قضیه هستم.
ممنون از همه بزرگواران...

merced
شنبه 07 آذر 1388, 00:35 صبح
AdoTable1.Filter = 'company like ' + QuotedStr( Edit1.Text +'%') ;
ADOTable1.FindNext ;

توجه كني كه خطاهاي رسيدن به ابتداي جدول و انتهاي اون رو هندل كني

saliatso
شنبه 07 آذر 1388, 11:04 صبح
AdoTable1.Filter = 'company like ' + QuotedStr( Edit1.Text +'%') ;
ADOTable1.FindNext ;
توجه كني كه خطاهاي رسيدن به ابتداي جدول و انتهاي اون رو هندل كني




دوست عزیز، من این رو توی یه Button نوشتم ؛

ADOTable1.Filter := 'Continent'+QuotedStr(edit1.Text+'%');
ADOTable1.FindNext

ولی بار اول که دکمه رو میزنم این ارور رو میده:


Arguments are of the wrong type, are out of acceptable rang, or are in conflict with on another
/ok


و بعد هر بار که میزنم همه رکورد ها رو دونه دونه میره جلو (همه رکوردها حتی اونایی که تو محدوده فیلتر ما نیستند..!!!)

نمیدونم اشکال کار کجاست لطفا بیشتر توضیح بدید.
و اینکه گفتید " توجه كني كه خطاهاي رسيدن به ابتداي جدول و انتهاي اون رو هندل كني " یعنی چی؟ چه جوری میشه اینکار رو کرد؟؟

mehdimdp
شنبه 07 آذر 1388, 11:19 صبح
سلام
فکر کنم این مساوی رو جا انداخته بودی



ADOTable1.Filter := 'Continent='+QuotedStr(edit1.Text+'%');
ADOTable1.FindNext

mehdimdp
شنبه 07 آذر 1388, 11:26 صبح
البته این پیام خطا در زمانی که اسم فیلد رو هم اشتباه بنویسی ظاهر میشه
و ضمنا به جای علامت مساوی میتونی از عبارت like هم استفاده بکنی (البته خروجیش یکم متفاوته)

saliatso
شنبه 07 آذر 1388, 11:48 صبح
سلام mehdimdp (http://barnamenevis.org/forum/member.php?u=14175) عزیز
شما درست گفتید مساوی رو جا انداخته بودم ولی بعد از گذاشتن مساوی این ارور رو میده:
Either BOF or EOF is true, or the current record has been deleted. Requested operation requires a current record.
و زمانی که بجای = از like استفاده میکنم درست عمل میکنه تا زمانی که به آخرین رکورد دلخواه میرسه! و اونجا ثابت میمونه یعنی دیگه به اول جدول نمیاد.
خواهشم اینه که میتونید یه سمپل برام بنویسید یا بذارید که کامل باشه و من به هدفم برسم.؟؟

خیلی ممنونم از توجهتون..

alinikaein
یک شنبه 08 آذر 1388, 20:12 عصر
يعني مي‌خواهيد در صورتي كه به ركورد آخر رسيده بود و دكمه بعدي را زد، دوباره بپره سر ركورد اول؟

در اين صورت كافيه شرط زير را بذاريد:

if DataSource1.DataSet.Eof then
DataSource1.DataSet.First;

در اين حالت، در صورتي كه به ركورد آخر برسه، به صورت اتوماتيك مي‌پره به ركورد اول.


يا علي... موفق باشيد...

saliatso
یک شنبه 08 آذر 1388, 22:17 عصر
يعني مي‌خواهيد در صورتي كه به ركورد آخر رسيده بود و دكمه بعدي را زد، دوباره بپره سر ركورد اول؟

در اين صورت كافيه شرط زير را بذاريد:

if DataSource1.DataSet.Eof then
DataSource1.DataSet.First;

در اين حالت، در صورتي كه به ركورد آخر برسه، به صورت اتوماتيك مي‌پره به ركورد اول.


يا علي... موفق باشيد...

سلام دوست من
عزیزم این کد رو میدونستم، ولی مشکل اینجاست که شاید آخرین رکورد محدوده فیلتر آخرین رکورد جدول نباشه..!!!
به هر حال ممنونم از پاسخت..