PDA

View Full Version : مشکل در استفاده از dblookupcombobox



DlphIran
سه شنبه 23 خرداد 1385, 19:29 عصر
سلام
من dblookup رو به یه adoquery اتصال دادم که کاملا هم درست است
اما مشکل اینجا است که در موقع استفاده و انتخاب یکی از فیلدهای نمایش داده شده درون dblookup فیلد مورد نظر انتخاب نمی شود یعنی روی فیلد مورد نظر کلیک می کنیم dblookup بسته می شود و فیلد انتخاب شده در lookup نمایش داده نمی شود
با صفحه کلید هم همین مشکل را داریم
تمام فیلدها نمایش داده می شوند اما توانایی انتخاب یکی از آنها را ندارم
لطفا راهنمایی بفرمایید
با تشکر

Nasle Aftab
سه شنبه 23 خرداد 1385, 19:44 عصر
طرز ساختن فیلد lookup اشکال داره .

mzjahromi
چهارشنبه 24 خرداد 1385, 07:14 صبح
KeyField رو درست انتخاب کردید؟

babak869
چهارشنبه 24 خرداد 1385, 07:55 صبح
ببینید کنترل dblookupcombobox دارای 3 خاصیت است که شما بایستی آنها را به درستی تنظیم نمایید :
List Source :
این خاصیت را به دیتا سورس مبدا که اطلاعات بایستی از آنجا خوانده شود وصل کنید
List Field :
این خاصیت را به فیلدی که مقادیر باید در منوی آبشاری نمایش داده شوند تنظیم کنید
Key Field :
این خاصیت را به فیلدی که کد مقادیر را نگهداری میکند تنظیم کنید.مثلا اگر شما برای یک فروشگاه برنامه نویسی میکنید برای هر کالا باید یک نام و یک کد تعریف کنید
Data Source :
به پایگاه داده نهایی که قرار است اطلاعات انتخابی کاربر در آنها ذخیره شود وصل میشود
Data Field :
این خاصیت مربوط به فیلدی است که اطلاعات انتخابی در آن ذخیره میشود
تذکر :
اگر شما همانند بالا عمل کنید باید خاصیت Data Filed را به فیلد کد که در جدول نهایی اطلاعات آیتم انتخاب شده را در خود نگهداری میکند وصل کنید یعنی فیلد کد و برای مشاهده نام کالا باید در خصوصیت OnExit کنترل dblookupcombobox بنویسید :


DBEdit1.Text:=DBLookupComboBox1.Text;

و DbEdit1 رو به فیلد کالا وصل کنید
موفق باشید

DlphIran
چهارشنبه 24 خرداد 1385, 08:51 صبح
تمام قسمتها درست انجام شده اما مشکل این جا است که اگر dblookup را به رکورد دیگری اتصال بدم اطلاعات فیلد مورد نظر براحتی از درون dblookup انتخاب می شود اما وقتی به رکورد مورد نظر و اتصال می دم اطلاعات فیلد مورد نظر از درون dblookup قابل مشاهده است اما وقتی یکی از فیلدها را با کلیک روی آن انتخاب می کنیم و dblookup بسته می شود فیلد مورد نظر نمایش داده نمی شود

ali_divsalar
چهارشنبه 24 خرداد 1385, 12:55 عصر
اگه به مواردی آقایون فرمودند بدرستی عمل کرده باشید و مشکل شما حل نشده ، بدنیست یه سری به table تون بزنید ببینید نوع فیلدی که برای Data Field انتخاب کردید چیه.
من یه بار با این مسئله برخورد کردم.ولی سریع حل شد.علتش هم این بود که من فیلدهای جدیدم رو از طریق دستورات sql تو برنامه ام ایجاد می کنم و برای یه فیلد دستور اضافه کردن رو از دستورات قبلیم برداشتم و یادم رفت که نوع اون فیلد رو که bit بود به int تغییر بدم.تا نوع فیلد رو int کردم مشکلم حل شد
به هر حل نمی خوام بگم دلیلش همین چیزیه که گفتم و لی به هر حل می تونه به فیلدهاتون هم ربط داشته باشه.احتمالا نوع Data Field و نوع فیلد کلیدتون سازگاری نداره

aLiReZa hOsSeInI
پنج شنبه 25 خرداد 1385, 07:24 صبح
چطوری میشه مقدار فیلدی
FieldKey را در زمان اجرا مثلا از فیلد قیمت به تخفیف تغییر داد مگه دستورش این نیست:

DBLC1.FieldKey:='rebate'
اینکارو که میکنم عوض نمیشه به نظرتون علتش چیه؟

mzjahromi
پنج شنبه 25 خرداد 1385, 08:10 صبح
چطوری میشه مقدار فیلدی
FieldKey را در زمان اجرا مثلا از فیلد قیمت به تخفیف تغییر داد مگه دستورش این نیست:

DBLC1.FieldKey:='rebate'
اینکارو که میکنم عوض نمیشه به نظرتون علتش چیه؟
من فکر میکنم اونی که مد نظر شما است ListField هست. تغییر KeyField زیاد محسوس نیست

aLiReZa hOsSeInI
پنج شنبه 25 خرداد 1385, 08:28 صبح
نه فیلد لیست را نمیخوام تغییر بدم
قضیه کار من اینه خوب ما یه KeyField بیشتر نمیتونیم تعریفکنیم در آن واحد
خوب منم دیتابیسم شامل فیلدهای
service که میشه ListField
بعد فیلد cost میشه keyfield اما می خوام علاوه بر مقدار فیلد کاست به فیلد rebate هم دسترسی داشته باشم پس باید keyfield را بزارم برابر rebate در زمان اجرا.
چه پیشنهادی دارید؟

mzjahromi
پنج شنبه 25 خرداد 1385, 10:07 صبح
نه فیلد لیست را نمیخوام تغییر بدم
قضیه کار من اینه خوب ما یه KeyField بیشتر نمیتونیم تعریفکنیم در آن واحد
خوب منم دیتابیسم شامل فیلدهای
service که میشه ListField
بعد فیلد cost میشه keyfield اما می خوام علاوه بر مقدار فیلد کاست به فیلد rebate هم دسترسی داشته باشم پس باید keyfield را بزارم برابر rebate در زمان اجرا.
چه پیشنهادی دارید؟
برداشت شما از KeyField اشتباهه
KeyField واسه اینه که مشخص بشه رکوردها روی کدوم فیلد Unique هستند معمولا KeyField رو میذارن کلید جدول ولی شاید هم شما یک Query راشته باشید که یک فیلد دیگه غیر قابل تکرار هست میتونید اونو بذارید KeyField. در صورتیکه شما از GroupBy توی Query استفاده کنید فیلدهائی که جلو Group By میان حالت کلید رو دارن(همگی باهم)
در کل شما مثلا وقتی که KeyField رو PID میذارید مشخص میکنید که ملاک تکراری نبودن PID هست حتی ممکنه ListField تکراری باشه ولی KeyField ملاک عمل هست.در نتیجه نیازی به تعویض KeyFieldنیست.DBLookupComboBox کنترل نمیکنه که حتما KeyField تکراری نباشه واگه تکراری باشه تنها اتفاقی که میافته اینه که وقتی شما از لیست فیلد رکورد مربوطه رو انتخاب میکنید, هر دو رکوردی که KeyField برابر دارند Select شده دیده میشن.
میدونم توضیحات یه خورده پیچیده شد ولی
در یک کلام KeyField مشخص میکنه که این فیلد از رکورد انتخاب شده هیچوقت تکرار نمیشه

NiceUser
یک شنبه 20 آبان 1386, 21:09 عصر
با AdoQuery وصل شدم

می خوام وقتی برنامه اجرا میشه بطور پیش فرض dblookupcomboboxمثلاً بطور پیش فرض دومین گزینه جدول همواره انتخاب شود الان وقتی اجرا می کنم پیش فرض null هست و باید کامبوباکس باز بشه و یکی رو انتخاب کنیم.

ممنون می شم مرا راهنمایی فرمایید
سپاس