PDA

View Full Version : سوال: عدم نمایش اطلاعات فیلددرDBLookupCombobox



amirkazem
شنبه 06 دی 1393, 22:40 عصر
باسلام خدمت اساتیدبزرگوار
پس ازکلی جستجوروش استفاده ازDBLookupComboboxراپیداکردم ولی مشکل اینجاست که پس ازانجام تنظیمات (list surce,keyfield,...) ونام جدول راهم (payeh) انتخاب کرده ایم، ولی متأسفانه درفرم مربوطه اطلاعات درDBLookupCombobox نشان داده نمیشه.روشی که من کارکردم:
2جدول داریم یکی به نام (payeh)ودیگری به نام(Class).می خواهیم پس هزتعریف پایه های تحصیلی (کد، نام پایه)وذخیره درجدول خودش، ازطریق فرم ودریک جدول دیگرهم کلاسهاراتعریف کنیم.ضمن اینکه هرکلاس بایدمتعلق(وابسته)به یک پایه تحصیلی باشد.به همین منظوردرفرم تعریف کلاس یک (DBLookupCombobox)قرارداده ایم که می خواهیم باانتخاب یک کداز(DBLookupCombobox)ودرج کدکلاس ونیزدرج نام کلاس اطلاعات فرم درجدول(class)ذخیره بشوند.
امامتأسفانه درفرم تعریف کلاس ودرDBLookupCombobox کدپایه های تحصیلی تعریف شده نشان داده نمیشود.
دوستان لطفاً راهنمایی بفرماییدتامشکل حل شود.

pezhvakco
یک شنبه 07 دی 1393, 09:02 صبح
شاید :
روش کار با DBLookupComboBox =>
List Souce رو به جدول ارتباط می دهیم که داده های اون را می خواهیم (جدول مبدا)
=>
ListField رو به اون ستون از جدول (ListSource) ارتباط می دهیم که باید دادهای اون نمایش باشد .

DataSource را به جدولی ارتباط می دهیم که باید در اون ذخیره شود (جدول مقصد)
=>
DataField به ستون از جدول (DataSource) ارتباط می دهیم که داده های اون باید بروز شود .

یوسف زالی
یک شنبه 07 دی 1393, 11:13 صبح
DataSource و DataField رو که کلا فراموش کنید.
برای ساخت لیست:
ListSource -> دیتاسورسی که قراره از اون دیتا نمایش داده بشه
ListField -> فیلدی که کاربر قراره ببینه
KeyField -> فیلدی که برنامه نویس قراره ببینه. معمولا این رو روی سریال جدول تنظیم می کنند.
KeyValue -> مقدار برگشت داده شده توسط کاربر به برنامه نویس

1- دیتاست باید باز باشد
2- فیلد ها باید موجود باشند

مثال:


DBLookupComboBox2.ListSource := DataSource1;
DBLookupComboBox2.KeyField := 'ID';
DBLookupComboBox2.ListField := 'Name';
.
.
ShowMessage(DBLookupComboBox2.KeyValue); // it is gonna show you ID !!

amirkazem
دوشنبه 08 دی 1393, 21:57 عصر
آقای you-see؛
ضمن تشکرمجددازشما، به عرض برسونم که کدی که شمافرمودیدراقراردادم ولی بازهم در(Create)فرم یادر(show)فرم درقسمت (DBLookupCombo) کدمربوط به پایه هایانام مربوط به آنهاظاهرنمی شود.
ضمن اینکه بنده درجدول (payeh) فیلدکلیدرا(code_p)قرارداده ام.
کدب که بنده تغییردادم این هست:

DBLookupComboBox1.ListSource := DataSource2;
DBLookupComboBox1.KeyField := 'code_p';
DBLookupComboBox1.ListField := 'name_p';

منظوربنده این هستش که وقتی فرم تعریف کلاس رابازکردیم؛ ابتدااز( DBLookupCombobox1) نام پایه یاکدپایه راانتخاب کرده وسپس کدکلاس ونام کلاس رابرای همان پایه تحصیلی تعریف کنیم.

یوسف زالی
دوشنبه 08 دی 1393, 23:12 عصر
اگر دیتاستتون باز باشه، فیلد هاتون رو هم درست داده باشید، مشکلی نباید وجود داشته باشه.

amirkazem
دوشنبه 08 دی 1393, 23:38 عصر
اتفاقاً دیتاست مربوط به Adotable2هستش ودیتاسورس آن هم Datasurce2هست ضمناًهردوهم Active می باشندولی نشون نمیده.

یوسف زالی
سه شنبه 09 دی 1393, 02:25 صبح
جدولتون داده داره؟

amirkazem
سه شنبه 09 دی 1393, 05:49 صبح
بله جدول پایه داده داره که ازطریق فرم تعریف پایه های تحصیلی واردشده است.

یوسف زالی
سه شنبه 09 دی 1393, 10:06 صبح
ممکنه که داده های شما دارای Space باشه؟
تست کنید، داده بدون اسپیس بگذارید.
ببینم اصلا پاپ می شه یا نه؟ یعنی این که لیست باز می شه توش خالیه یا اصلا باز نمی شه؟

amirkazem
جمعه 12 دی 1393, 21:42 عصر
ضمن تشکر
به عرض برسونم داده هادارای (Space) نیستندولیست بازمیشه ولی توش خالی هستش.ولی وقتی از(dbgrid)پایین رکوردی راانتخاب کنیم آنوقت لیست بالایی هم محتوی داده هست.

idehrayan
شنبه 13 دی 1393, 21:12 عصر
به عرض برسونم داده هادارای (Space) نیستندولیست بازمیشه ولی توش خالی هستش.ولی وقتی از(dbgrid)پایین رکوردی راانتخاب کنیم آنوقت لیست بالایی هم محتوی داده هست.
سلام دوست عزیز
هر چند دلیل خالی بودن
DBLookupCombobox رو نمی دونم ولی
با توجه به تصویر بالا و تصویر پائین سمت راست به نظر میاد که احتمالا موقع لود شدن فرم از دستور insert استفاده کردین واسه همین dbedit های بالا خالی شدن

amirkazem
شنبه 13 دی 1393, 23:31 عصر
باسلام خدمت شمادوست گرامی idehrayan
در(create)فرمم از(insert)استفاده کرده ام وبافرمایش شماآن خط راحذف کذده وتست کردم بازهم جواب نداد.

idehrayan
یک شنبه 14 دی 1393, 07:55 صبح
سلام
بد نیست کلمه
insert رو جستجو بزنین شاید جاهای دیگه هم مثلا در فرم active استفاده کرده باشین

pezhvakco
یک شنبه 14 دی 1393, 11:57 صبح
DBLookupComboBox1.ListSource := DataSource2;
DBLookupComboBox1.KeyField := 'code_p';
DBLookupComboBox1.ListField := 'name_p';



این DataSource2 که شما ListSource رو به اون وصل کردین به چه جدولی (= AdoTable, DataSet) وصل است
و امتحان کنید تا ببینید اگه یک جدول (DBGrid) رو به این DataSource وصل کنید ، داده ای نمایش میده در همین فرم .

amirkazem
دوشنبه 15 دی 1393, 19:11 عصر
جنابpezhvako
باسلام
(datasurce2)به(Adotable2)وصل هستش و(Adotable2)نام جدول پایه های تحصیلی هست که ورودداده درآن ازطریق فرم دیگری انجام می شود.
وطبق فرمایش شما یک(ِDBgride) درهمین فرم ایجادکرده وآن رابه (Datasurce2)متصل کردم وداده هایی راکه ازطریق فرم معرفی پایه های تحصیلی واردکرده بودم درهمین دی بی گرید نمایش داده می شوند.