PDA

View Full Version : سوال: جستجوی چند فیلد



hamedjim
پنج شنبه 03 اردیبهشت 1394, 00:11 صبح
سلا به همه اساتید.
دوستان من با ADO و بانک اکسس کار می‌کنم و در قسمتی از برنامه‌م نیاز دارم قبل از insert کردن یک رکورد، روالی به صورت زیر انجام بشه:

جستجو در Query موجود و پیدا کردن رکوردی که فیلد 'Checked'ش برابر با No و فیلد 'ID' اون برابر با مقدار مورد نظر ( که قصد insert کردنش رو داریم) باشه.


اگر نتیجه جستجو True بود، مقدار Checked رو Yes کنه و رکورد مورد نظر insert بشه.

اگر نتیجه جستجو False بود، پیغام خطایی نشون داده بشه و خروج از زیربرنامه.



در نوشتن کد این روال سوال من در مورد دستور Locate هست.
آیا برای سرچ دو مقدار از دو فیلد جداگانه در یک رکورد از این دستور استفاده میشه؟ (مثلا Checked=No , ID=93025 )




if (ADOQueryGate.Locate('Checked','No',[])) and
(ADOQueryGate.Locate('ID',EditID.Text,[])) Then







ممنون میشم راهنمایی کنید.

یوسف زالی
پنج شنبه 03 اردیبهشت 1394, 00:30 صبح
سلام. نه! دستوری که شما نوشتید دو بار لوکیت غیر مرتبط به همه و در حقیقت لوکیت آخر لوکیت جاری خواهد بود.
صرف نظر از درستی یا نادرستی روال کارتون، برای چنین لوکیت هایی باید از کدی شبیه به این استفاده کنید:


ADO.Locate('Field1, Field2, .., Field10', VarArrayOf([Value1, Value2, .., Value10]), [])

hamedjim
پنج شنبه 03 اردیبهشت 1394, 08:25 صبح
ممنون از راهنمایی.
با این روش به نتیجه رسیدم. که البته Syntax دستوری که نوشتین Error داد و متوجه شدم باید به این شکل باشه:



ADO.Locate('Field1; Field2; ...; Field10', VarArrayOf([Value1, Value2, .., Value10]), [])


اما


صرف نظر از درستی یا نادرستی روال کار..

این حرف یعنی روشم اشتباهه؟

یوسف زالی
شنبه 05 اردیبهشت 1394, 10:48 صبح
اون تکه کد رو از حفظ نوشتم، ایرادتون وارده.

اما بهتر بود در همون کوئری شرط رو می گذاشتید لازم نشه دو بار به بانک دسترسی داشته باشید. همه کارهای شما در قالب یک کوئری انجام شدنیه.