ورود

View Full Version : خطا در استفاده از combo



mzamani
سه شنبه 26 دی 1385, 14:31 عصر
با سلام خدمت دوستان عزیز
من یک جدول اطلاعات پرسنلی دارم که می خواهم فیلدهای نام و نام خانوادگی را به صورت مرتب شده بر حسب نام فامیل در یک کمبو باکس بریزم و سپس با انتخاب هر گزینه در کمبو سایر اطلاعات مربوطه را در تکست باگس هایی روی فرم نمایش دهم . برای این کار از یک ویو استفاده کردم تا اطلاعات را مرتب کنم و rowsourcetype=fields و rowsource="view.lname,fname قرار دادم ولی هنگام بستن فرم و یا پس از انجام بعضی از کارها در فرم مثل ویرایش اطلاعات یا حرکت روی رکوردهای جدول برای نمایش آن ها پیغام زیر را می دهد
"can not access selected table.view.lname,fname" و یا محتویات کمبو تغییر می کند .
لطفا راهنمایی کنید.
با تشکر

kia1349
سه شنبه 26 دی 1385, 16:07 عصر
شما باید اینکارها را انجام بدهی:
boundto=.t. true
columncount=تعداد ستونهای مورد نیاز برای نمایش در کمبو
controlsource=table.field
rowsource=select table.field1,tablefield2 from table order by table.field1 into cursor www
rowsourcetype=3 - sql statement
boundcolumn=2
در این حالت شما دو فیلد که یکی میتواند شماره پرسنلی باشد و دیگری نام باشد را در دستور اسکیوال انتخاب میکنید
تعداد ستونهای قابل نمایش را هم 2 تا انتخاب میکنید چون دستور شما دو فیلد را بر میگرداند
با boundcolumn=2 هم میگوئید که با کلیک کردن روی اطلاعات یک کمبو دومین فیلد با متغیرcontrolsource=table.field در ارتباط است
امیدوارم متوجه شده باشید

mzamani
چهارشنبه 27 دی 1385, 09:13 صبح
با تشکر از شما
کارهایی که گفتید را انجام دادم ، خطای مورد نظر حل شد ولی دیگر کاری را که می خواهم انجام نمی دهد. من در جدول خود فیلدهایی با نام pno,fname,lname,accnum وacctype دارم که می خواهم fname , lname را در کمبو قرار دهم و بر حسب lname أن را مرتب کنم. ضمنا با انتخاب هر آیتم در کمبو اطلاعات آن شخص را در فرم نمایش دهم. من قصد تغییر اطلاعات جدول را ندارم فقط با این کار امکان انتخاب نام و نام خانوادگی را به کاربر داده و سایر اطلاعات شخص را به او نشان می دهم.لطفا راهنمایی کنید.

binyaz2003
چهارشنبه 27 دی 1385, 09:52 صبح
controlsource رو مقداردهی نکنید

mzamani
چهارشنبه 27 دی 1385, 10:17 صبح
فکر می کنم منظورم را درست بیان نکردم.من قبلا از rowsourcetype=fields,rowsource="table.field1,field2" استفاده می کردم که امکان خوبی را در جستجوی روی جدول به طور خود کار فراهم می کرد ولی از آنجا که نیاز داشتم کمبو بر اساس نام فامیل مرتب باشد از یک ویو به جای جدول استفاده کردم که خطایی را که در ابتدا گفتم می داد ولی روشی که شما پیشنهاد کردید امکان جستجوی خودکار را می گیرد و من مجبورم با تغییر ولیوی کمبو هر دو ستون کمبو که شامل نام و نام خانوادگی است را در جدول جستجو کنم تا به سایر اطلاعات دسترسی یابم. در روش قبلی کمبو به طور مستقیم با ویو یا جدول ارتباط داشت و با تغییر آن مستقیما به فیلدها دسترسی داشتم.
با تشکر مجدد ، اگر راهی وجود دارد راهنمایی کنید

rezakhj
چهارشنبه 27 دی 1385, 12:28 عصر
ابتدا روی کمبو کلیک راست و builder و سپس جدول یا ویوی انتخابی و فیلدهای مورد نظر
و سپس
در متد کلیک combo
thiform.refresh
وارد کن
ضمنا برای مرتب بودن کمبو بر اساس نام یا فامیل در متد init دستور set order to tag lname را وارد کن نیازی به ویو هم نیست البته به شرطی که در جدول ایندکس فیلدها انتخاب شده باشد

mzamani
سه شنبه 03 بهمن 1385, 10:52 صبح
از راهنمایی همه دوستان ممنونم. اشکال کار من اینجا بود که در متد کلیک دکمه های روی فرم جداول را می بستم برای همین کمبو دچار مشکل می شد.

mehran_337
سه شنبه 03 بهمن 1385, 11:19 صبح
اگر از dataenvirment استفاده کنید نیازی نیست بانکها را باز و یا بسته کنید

telrosh
شنبه 29 اردیبهشت 1386, 11:05 صبح
شما باید اینکارها را انجام بدهی:
boundto=.t. true
columncount=تعداد ستونهای مورد نیاز برای نمایش در کمبو
controlsource=table.field
rowsource=select table.field1,tablefield2 from table order by table.field1 into cursor www
rowsourcetype=3 - sql statement
boundcolumn=2
در این حالت شما دو فیلد که یکی میتواند شماره پرسنلی باشد و دیگری نام باشد را در دستور اسکیوال انتخاب میکنید
تعداد ستونهای قابل نمایش را هم 2 تا انتخاب میکنید چون دستور شما دو فیلد را بر میگرداند
با boundcolumn=2 هم میگوئید که با کلیک کردن روی اطلاعات یک کمبو دومین فیلد با متغیرcontrolsource=table.field در ارتباط است
امیدوارم متوجه شده باشید

من می خواهم باانتخاب فیلد اول از combo فیلد دوم در فیلد این جدول اورده و ثبت شود.
contorol source فیلد دوم چیست.؟
متشکرم.
من قبلا با روش 2 ";" که درقسمت row source h,اورده میشد این کار را می کردم.

mehran_337
دوشنبه 08 بهمن 1386, 07:56 صبح
هیچ راهی نداره وقتی سورس کمبو را مستقیما به جدولی وصل می کنیم بتوانیم آیتمها را مرتب داشته باشیم ؟؟؟؟؟
نمی خواهم از select استفاده کنم . فقط نام خانوادگی در یک کمبو هست اما مرتب نمی شود

rezaTavak
دوشنبه 08 بهمن 1386, 08:36 صبح
باید جدول را در DataEnvironment برای Order تعریف کرده باشید. همان عمل می کند.

اگر هم می خواهید لحظه‌ای باشد در متدهای GetFocus,LostFocus کد مناسب بنویسید مثال:
در GetFocus


THISFORM.PreSortCursor1=THISFORM.Dataenvironment.C ursor1.Order
THISFORM.Dataenvironment.Cursor1.Order="cname"
و در LostFocus هم عکس این:



THISFORM.Dataenvironment.Cursor1.Order= THISFORM.PreSortCursor1

البته دقت کنید که property که استفاده شده THISFORM.PreSortCursor1 قبلا در فرم تعریف شود.