PDA

View Full Version : سوال: دستور خود دلفی برای پیداکردن رکورد



Fastdesign
پنج شنبه 08 دی 1390, 11:53 صبح
سلام
آیا دلفی دستوری هم داره که بشه باهاش عمل جستجو در جدول بدون دستورات SQL انجام داد؟

یوسف زالی
پنج شنبه 08 دی 1390, 13:50 عصر
سلام.
در شی ADO با دستور Locate می تونید این کارو کنید.
با دستور Filter هم می تونید محدودتر کنید.

Fastdesign
پنج شنبه 08 دی 1390, 22:33 عصر
اگه میشه یک نمونه کد بزارید

سعید صابری
پنج شنبه 08 دی 1390, 23:05 عصر
با اجازه جناب you-see

if ADOTable1.Locate('نام فیلد جستجو','مقدار جستجو',[]) then
begin
///code
/// code
end
else
ShowMessage('not found'');

beray F

ADOTable1.Filter:='field = '+'مقدار';
ADOTable1.Filtered:=True;


در فیل.ت شرط ها مانند sql و ... می باشد

Fastdesign
پنج شنبه 08 دی 1390, 23:14 عصر
داخل براکت نیاز نیست مقدار دهی بشه؟

اصلا اون برای چیه؟

یوسف زالی
پنج شنبه 08 دی 1390, 23:48 عصر
داخل براکت برای اینه که این مقدار دقیقا وجود داره یا بخشی از مقدار اصلی هست؟
مثل لایک

سعید صابری
پنج شنبه 08 دی 1390, 23:51 عصر
بستگی به نیاز شما داره در کل 3 تا آپشن داره [loPartialKey] or [loCaseInsensitive] و []
که از اسمشون مشخصه هر کدام
[]خالی جستجوی دقیق یعنی برابر با مقدار جستجوی شما از هم لحاظ

rez6rez6
پنج شنبه 29 دی 1390, 21:19 عصر
سلام.
دستور كلي
[o] Table1.Locate('Field1', VarArray, [loPartialKek, loCaseInsensitive]); [o]
مثال
[o] MyTable.Locate('Name', MyEdit.Text, [loPartialKey]); [o]
اگه نيازي باشه بيشتر هم توضيح ميدم ولي بهترين نوع جستجو از جدول اين حالت مي باشد.

pezhvakco
جمعه 30 دی 1390, 20:07 عصر
ولي بهترين نوع جستجو از جدول اين حالت مي باشد.
اگه درست فهمیده باشم دستور Locate برای بردن اشاره گر جدل داده ها به ردیف با شرط مورد نظر بکار میره .

نمیگم نمیشه برای جستجو باهاش کار کرد چون یه جور پیدا کردن ردیف داده مورد نظر است ولی رو ایراد بزرگ داره :
1 - در شبکه کاربرد نداره
2 - در گرفتن گروه داده (چند ردیف دارای مشخصه خاص) کاربرد نداره

Fastdesign
سه شنبه 04 بهمن 1390, 14:34 عصر
اگه میشه یک نمونه کد از دستور Filter بزارید .
ADOTable1.Filter:='field = '+'مقدار';
ADOTable1.Filtered:=True;


با تشکر

سعید صابری
سه شنبه 04 بهمن 1390, 17:52 عصر
همینکه خودت نوشتی درسته و خودش مثاله!

Fastdesign
سه شنبه 04 بهمن 1390, 22:46 عصر
من برای فیلتر یک فیلد به این صورت نوشتم :
ADOQuery1.Filter:='Bedehkar = '+Edit1.Text+'';
ADOQuery1.Filtered:=True;
حالا اگه بخوام برای بیشتر از دو فیلد، مثلا برای دو فیلد بنویسم باید براش چجوری بنویسم .
بینش علامت (,) گذاشتم جواب نداد

یوسف زالی
سه شنبه 04 بهمن 1390, 23:28 عصر
and رو امتحان کنید.