PDA

View Full Version : راست چین کردن لیست باکسها



مهدی د
جمعه 09 دی 1390, 19:05 عصر
دوستان سلام یک روش در این تالار پیشنهاد شده که لیست باکسها را ابتدا به کمبو باکس تبدیل می کردند و بعد از اینکه کمبو باکس را راست چین می کردند آنرا مجددا به لیست باکس تبدیل می کردند اما این روش موقعی که منبع لیست باکس توسط کد مقدار دهی می شه جواب نمیده آیا راهی وجود داره که بعد از مقدار دهی منبع لیست باکس توسط کد ، بتوان لیست باکس را راست چین هم کرد؟ متشکرم

mazoolagh
شنبه 10 دی 1390, 10:11 صبح
برای اینکه راست چین بودن لیست باکس شما محفوظ بمونه rowsource اون باید Table/query باشه و احتمالا شما value list استفاده میکنین.
بجای اینکه آیتم ها رو یکی یکی اضافه کنین (متد additem) اونها رو در یک رکوردست بریزین و پراپرتی recordset لیست باکس رو این رکوردست قرار بدین.

مهدی د
شنبه 10 دی 1390, 18:08 عصر
روش ذکر شده را امتحان کردم ولی جواب نمیده لطفا فایل تست رو ببینید.
برنامه اصلی یک برنامه حسابداری هست و می خواهم فرمی را برای انتخاب کد معین طراحی کنم که کدهای معین در لیست باکس تعبیه شده در آن فرم موجود باشند و کاربر بتواند کد معین مورد نظر را از لیست انتخاب کند اما بسته به اینکه این فرم از چه قسمتی باز می شود می بایست منبع لیست باکس موجود در آن فیلتر شود بنابراین تصمیم گرفتم که منبع لیست باکس را با کد مقدار دهی کنم که این مشکل برای لیست باکسم پیش آمد.
لطفا در حد مقدورات راهنمایی فرمایید.

مهدی د
سه شنبه 13 دی 1390, 19:41 عصر
کسی نبود راهنمایی کنه؟

mazoolagh
چهارشنبه 14 دی 1390, 14:12 عصر
راستش روش همین هست که گفته شد. اگر مو به مو پیاده اش کنین حتما جواب میگیرین.

میتونم یک نمونه پیوست کنم تا با مقایسه بتونین ایراد رو پیدا کنین.

مهدی د
چهارشنبه 14 دی 1390, 18:42 عصر
اگر لطف کنی نمونه پیوست کنی تا با مقایسه بتونم ایراد را پیدا کنم ممنون می شم.

مهدی د
پنج شنبه 15 دی 1390, 17:05 عصر
اگر لطف کنی نمونه پیوست کنی تا با مقایسه بتونم ایراد را پیدا کنم ممنون می شم.

mazoolagh
شنبه 17 دی 1390, 15:06 عصر
برای ساختن رکوردست و انتساب اون به لیست باکس (یا کمبو باکس)
Dim RS As ADODB.Recordset
Set RS = New ADODB.Recordset
RS.LockType = adLockOptimistic
RS.Fields.Append "ID", adBigInt, , adFldKeyColumn
RS.Fields.Append "TXT", adBSTR
RS.Open
Dim I As Integer
For I = 1 To 10
RS.AddNew
RS("ID") = I
RS("TXT") = "شماره " & CStr(I)
Next
RS.Update
Set LISTBOX.Recordset = RS
Set COMBOBOX.Recordset = RS
RS.Close
Set RS = Nothing

و برای برداشتن رکوردست از لیست باکس:
Set LISTBOX.Recordset = Nothing
LISTBOX.Requery
Set COMBOBOX.Recordset = Nothing
COMBOBOX.Requery

hamid-nice
سه شنبه 15 بهمن 1392, 02:23 صبح
با سلام
جناب mazoolagh نمونه شما برای حالت unbound خیلی خوب عمل می کنه ولی اگر بخواهیم به صورت باند از یک جدول برای لیست باکس فیلد های آن جدول را در لیست باکس بیاوریم چطور ؟
در صورت امکان راست چین در این حالت ، لطفا یک نمونه ضمیمه فرمایید
با تشکر

abas1388
چهارشنبه 16 بهمن 1392, 13:01 عصر
برای ساختن رکوردست و انتساب اون به لیست باکس (یا کمبو باکس)
Dim RS As ADODB.Recordset
Set RS = New ADODB.Recordset
RS.LockType = adLockOptimistic
RS.Fields.Append "ID", adBigInt, , adFldKeyColumn
RS.Fields.Append "TXT", adBSTR
RS.Open
Dim I As Integer
For I = 1 To 10
RS.AddNew
RS("ID") = I
RS("TXT") = "شماره " & CStr(I)
Next
RS.Update
Set LISTBOX.Recordset = RS
Set COMBOBOX.Recordset = RS
RS.Close
Set RS = Nothing

و برای برداشتن رکوردست از لیست باکس:
Set LISTBOX.Recordset = Nothing
LISTBOX.Requery
Set COMBOBOX.Recordset = Nothing
COMBOBOX.Requery

سلام
نمونه فوق در اکسس 2003 و 2010 اجرا میشود ولی در اکسس 2007 در کد Set LISTBOX.Recordset = RS ارور میدهد .
دلیل آن چی ممکنه باشه؟
تشکر

alirezabahrami
چهارشنبه 16 بهمن 1392, 17:56 عصر
سلام
نمونه فوق در اکسس 2003 و 2010 اجرا میشود ولی در اکسس 2007 در کد Set LISTBOX.Recordset = RS ارور میدهد .
دلیل آن چی ممکنه باشه؟
تشکر
سلام
در بعضی مواقع و در هنگام اجرای بعضی از کدهادر ورژن 12 یا همان اکسس 2007 خطاهائی صادر میشود که با نصب سرویس پک3 آفیس برطرف میشود .
سرویس پک 3 آفیس را با عنوان office2007sp3-kb2526086-fullfile-en-us.exe از اینترنت دانلود و نصب کن ، انشاء الله ایراد برطرف میشود.
موفق باشید

hamid-nice
چهارشنبه 16 بهمن 1392, 21:58 عصر
با سلام
جناب mazoolagh نمونه شما برای حالت unbound خیلی خوب عمل می کنه ولی اگر بخواهیم به صورت باند از یک جدول برای لیست باکس فیلد های آن جدول را در لیست باکس بیاوریم چطور ؟
در صورت امکان راست چین در این حالت ، لطفا یک نمونه ضمیمه فرمایید
با تشکر
برای این سوال پاسخی هست ؟
با تشکر

alirezabahrami
چهارشنبه 16 بهمن 1392, 23:58 عصر
برای این سوال پاسخی هست ؟
با تشکر
سلام
حتماً هست !!!!!!!
یاعلی

hamid-nice
پنج شنبه 17 بهمن 1392, 00:02 صبح
اگر ممکنه لطف بفرمایید یک نمونه تهیه بفرمایید
با تشکر

sepaco
پنج شنبه 04 اردیبهشت 1393, 15:18 عصر
دوستان روش زیر رو اکسس 2013 برامن تاحدودی جواب داد شماهم امتحان کنین تنظیمات زیر رو انجام بدین

File -> options -> Client settings -> General alignment
بعدش گزینه پیشفرض رو به Text Mode. تغییر بدین

احتمالا لازم بشه که یبار لیست باکس رو به کمبو باکس تغییر بدین - سپس کمبو رو راست چین کرده دوباره به لیست باکس تغییرش بدین. امیدوارم کار تونو را بندازه