View Full Version : استفاده از جداول كدينگ
FiACKER
پنج شنبه 20 آبان 1389, 01:24 صبح
سلام
فرض كنيد يك جدول داريم كه در اون يكسري ايتم (هر چي) ذخيره ميكنيم. و يكي از فيلد هاي اين جدول رو به صورت عددي گذاشتيم و متنش رو از جدول كدينگ كه به شكل زير هست مي كشيم بيرون و كاربر فقط متن رو ميبينه نه اون عدد رو :
1 = علي
2 = رضا
3 = حسن
در دلفي چطور بايد اين قضيه رو مديريت كرد ؟
مثلا وقتي مي خوايم اين سه اسم بالا در يك كومبوباكس ليست بشن و وقتي كاربر مثلا رضا رو انتخاب كرد، كده 2 در اون جدول اصلي بشينه! نه اسمه رضا.
لطفا راهنمايي كنيد از چه ابزارهايي استفاده كنم.
khoshblagh
پنج شنبه 20 آبان 1389, 06:55 صبح
سلام
فرض كنيد يك جدول داريم كه در اون يكسري ايتم (هر چي) ذخيره ميكنيم. و يكي از فيلد هاي اين جدول رو به صورت عددي گذاشتيم و متنش رو از جدول كدينگ كه به شكل زير هست مي كشيم بيرون و كاربر فقط متن رو ميبينه نه اون عدد رو :
1 = علي
2 = رضا
3 = حسن
در دلفي چطور بايد اين قضيه رو مديريت كرد ؟
مثلا وقتي مي خوايم اين سه اسم بالا در يك كومبوباكس ليست بشن و وقتي كاربر مثلا رضا رو انتخاب كرد، كده 2 در اون جدول اصلي بشينه! نه اسمه رضا.
لطفا راهنمايي كنيد از چه ابزارهايي استفاده كنم.
با سلام
از dblookupcombobox استفاده نمائید.
مراحل کار به شرح زیر است:
1- listSource رو برابر DataSource جدول فوق قرار میدهید.
2- ListField را به فیلدی که اسامی در آن میباشد قرار میدهید.
3- KeyField را برای آن فیلدی که اعداد در آن میباشد قرار میدهید.
اگر قرار است نتیجه در جدول دیگر درج گردد مراحل زیر را هم اضافه نمایید.
1- DataSurce را به DataSurce مقصد قرار بده .
2- Data Field را به فیلد مقصد در جدول جدول مقصد قرار بدهید.
لازم به ذکر است مطالب فوق را یکی از دوستان(اسم ایشان خاطرم نیست) قبلا در همین سایت عنوان نموده است که در همین جا از ایشان تشکر میکنم.
FiACKER
پنج شنبه 20 آبان 1389, 12:48 عصر
ممنون
اما چطور مي تونم محتواي يك فيلد رو بگيرم؟
مثلا وقتي "رضا" رو انتخاب كردم، بتونم كد 2 رو دريافت كنم ؟
alinikaein
پنج شنبه 20 آبان 1389, 15:28 عصر
ممنون
اما چطور مي تونم محتواي يك فيلد رو بگيرم؟
مثلا وقتي "رضا" رو انتخاب كردم، بتونم كد 2 رو دريافت كنم ؟
سلام؛
با استفاده از KeyValue ميتوني مقداري مربوط به كليدي كه انتخاب كردي را به دست بياري.
يا علي... موفق باشي...
Felony
پنج شنبه 20 آبان 1389, 18:01 عصر
ADOTable و ADOQuery متدی با نام FieldByName دارن ، شما وقتی کاربر یک اسم رو انتخاب کرد به وسیله متد Locate اول اون رکورد رو پیدا میکنی و کرسر به اون رکورد منتقل میشه و بعد به وسیله FieldByName هر فیلدی از اون رکورد که روش هستی رو بازیابی میکنی ، مثلا :
if ADOTable1.Locate('Name', 'Ali', [loPartialKey]) then
ShowMessage(IntToStr(ADOTable1.FieldByName('Number ').AsInteger));
@ اگر میخواین تو بانکتون اون عملیات رو پیاده سازی کنید Relationship ها برای همین در بانک های اطلاعاتی طراحی شده اند ، در موردشون تحقیق کنید .
FiACKER
جمعه 21 آبان 1389, 15:19 عصر
ممنون اقاي مجتبی تاجیک
اما من راهه پيشرفته تره اين كارو كردم(يه تابع ساختم كه تيبل رو + فيلد + مقدار رو ميگيره كد رو بر ميگيردونه) اما دائم برام مشكل پيش مياد و برام خيلي هزينه بر هستش.
اين چيزي كه khoshblagh گفت بهتره و برام ساده تر هست. البته هنوز وقت نكردم كامل تستش كنم ... اين كنكور ميزاره مگه !!
در مورده Relationship هم كه از ورود اطلاعات اشتباه كه در بانك وجود نداشته باشه جلوگيري ميكنه. البته يكي از كاربردهاش...
Felony
جمعه 21 آبان 1389, 19:56 عصر
در مورده Relationship هم كه از ورود اطلاعات اشتباه كه در بانك وجود نداشته باشه جلوگيري ميكنه. البته يكي از كاربردهاش...
مبحث Relationship خیلی گسترده هست ، اون کار مورد نظرتون هم تو بانک با همون Relationship قابل پیاده سازی هست .
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.