ورود

View Full Version : سوال در مورد lookup



klm555
دوشنبه 23 خرداد 1390, 20:12 عصر
سلام
من چندین سال پیش دلفی کار می کردم بنا به دلایلی دلفی رو گذاشتم کنار ، ولی الان برای کاری مجددا اومدم سراغ دلفی و دارم کتاب و جزوه و ... که قبلا داشتم رو مطالعه می کنم یه مشکلی پیش اومده ممنون میشم راهنمایی کنید

lookup برای چه منظوری و چطوری استفاده میشه؟ الان قسمت lookup گیر کردم:ناراحت:
من روی یه adotable کلیک راست می کنم و newField میزنم ، ولی بخش LookUp Definion رو نمی دونم چطوری باید پر کنم!:ناراحت:

drstrike
سه شنبه 24 خرداد 1390, 10:19 صبح
Lookup یه تابع ست که فیلد مبدا،مقدارش و فیلد مقصد رو میگیره و مقدار فیلد مقصد رو بر میگردونه
function Lookup(const KeyFields: string; const KeyValues: Variant; const ResultFields: string): Variant; override;
مثال:
ADOTable1.lookup('name','ali','famil');
این تابع مقدار علی رو تو فیلد name سرچ می کنه، اگه پیدا کرد، مقدار فیلد famil (تو همون رکورد) رو بر می گردونه

Mask
سه شنبه 24 خرداد 1390, 14:06 عصر
Lookup یه تابع ست که فیلد مبدا،مقدارش و فیلد مقصد رو میگیره و مقدار فیلد مقصد رو بر میگردونه
function Lookup(const KeyFields: string; const KeyValues: Variant; const ResultFields: string): Variant; override;
مثال:
ADOTable1.lookup('name','ali','famil');
این تابع مقدار علی رو تو فیلد name سرچ می کنه، اگه پیدا کرد، مقدار فیلد famil (تو همون رکورد) رو بر می گردونه
ممنون.
دو تا سوال برام پیش اومد.
1- یعنی این دستور یه جورایی مثل کوئری عمل میکنه؟
2- اگه دوتا رکورد مقدارشون شبه به هم بود ، چه عکس العملی نشون میده.؟

klm555
سه شنبه 24 خرداد 1390, 14:14 عصر
ممنون ، تونستم به صورت کد ازش استفاده کنم

سوال:
وقتی روی AdoTable کلیک راست و newField رو میزنیم ، قسمتی که تو شکل زیر مشخص کردم چه مواردی رو باید وارد کنیم؟

http://032.img98.net/out.php/i401955_nm.PNG

تو جزوه ای که من دارم نوشته:

keyField : نام فیلدی که قرار است lookup شود از جدول اصلی
Dataset : نام جدولی که قرار است اطلاعات مربوط به آن فیلد را نمایش دهد
lookupKeys : نام فیلد مشابه(مرتبط) از جدول فرعی
Result Field: نام فیلدی که قرار است اطلاعات آن نمایش داده شود


lookUp چه کاربردی داره؟ و چه مواقعی میشه ازش استفاده کرد؟ اگه بشه یه مثال بگید واقعا کمک بزرگی به من می کنید

vcldeveloper
چهارشنبه 25 خرداد 1390, 02:02 صبح
سوال:
وقتی روی AdoTable کلیک راست و newField رو میزنیم ، قسمتی که تو شکل زیر مشخص کردم چه مواردی رو باید وارد کنیم؟
این با اون چیزی که در پست قبلی درباره متد LookUp گفته شد، فرق داره؛ اینجا شما دارید یک فیلد جدید برای یک دیتاست تعریف می کنید که فیلد جدید شما میتونه یک فیلد Lookup باشه. فیلد Lookup فیلدی هست که محتوای نمایش داده شده برای آن از یک جدول دیگه خوانده میشه؛ مثلا شما در یک جدول نام استان های کشور و کد مربوط به هر استان را دارید، در سایر جداول هر وقت که نیاز به فیلد استان دارید، کد مربوط به اون استان از جدول اول را درج می کنید. حالا میخواید در برنامه شما، وقتی داده های اون جدول نمایش داده میشه، به جای کد استان، نام استان از جدول اول درج بشه. مثلا هر رکوردی که مقدار فیلد استانش 1 بود، به جاش کلمه تهران نوشته بشه؛ یا اگر کاربر از لیست استان ها تهران را انتخاب کرد، به طور خودکار در جدول مربوطه کد 1 ثبت بشه. این کار رو می تونید با فیلدهای Lookup انجام بدید.

حالا با این توضیح؛ توضیحاتی که برای اون عنوان ها در جزوء مورد اشاره شما اومده، معنی پیدا میکنه. KeyField همون فیلدی هست که مقدارش به صورت کد (یا هر چیز دیگه) هست، و شما میخواید به جای اون مقادیر، اسامی دیگه ایی نمایش بدید. Dataset اسم جدول (یا هر دیتاستی) هست که مقادیر قابل نمایش را در خودش داره (مثلا لیست استان ها). LookupKeys نام فیلدی در همون جدول دوم هست که باید مقدارش با مقدار KeyField شما مطابقت داشته باشه (مثلا اگر در جدول استان ها مقدار این فیلد برای استان تهران 1 هست، باید در جدول شما هم مقدار فیلد متناظر آن 1 باشه، تا عبارت تهران نمایش داده بشه). Result Field هم اسم فیلدی در جدول دوم هست که باید مقدار آن به جای کد KeyField به کاربر نمایش داده بشه.

drstrike
چهارشنبه 25 خرداد 1390, 07:58 صبح
دو تا سوال برام پیش اومد.
1- یعنی این دستور یه جورایی مثل کوئری عمل میکنه؟
2- اگه دوتا رکورد مقدارشون شبه به هم بود ، چه عکس العملی نشون میده.
1- اره تقریبا
2- طبیعتا اولین رکوردی که پیدا کنه رو انتخاب می کنه و مقدار فیلد ResultFields رو برمی گردونه.

ADOTable1.lookup('name','ali','famil');
فرض کنید تو این مثال 10تا رکورد باشه که مقدار فیلد 'name' شون برابر با 'ali' باشه.تابع lookup تمام اون 10تا رو پیدا میکنه اما بسته به اینکه کدومو اول پیدا نتیجه فرق میکنه.