با عرض سلام خدمت دوستان محترم
يه مشکلي در اسس داشتم .
مثلا در يه برنامه اي از يه بانک اکسس استفاده کردم و تو Table1 آن سه تا فيلد دارم .(Field1 -Field2 - Field3) . من اومدم تمام رکورد هاي فيلد 1 رو توي ليست باکس Add کردم.
حالا من ميخوام وقتي روي يه سطر از ليست باکس کليک کردم رکورد روبرويي اين سطر در فيلد 2(يا فيلد 3) انتخاب بشه و در يه ليبل نمايش بده؟؟
اين عکس رو ببينين منظورمو بهتر متوجه ميشين
http://www.wrestleshare.com/images/q093d...8bmezl.jpg
شکل شماره يک بانک برنامه
شکل شماره دو خود برنامه که تمام رکوردهاي فيلد يک در ليست لود شده است
اما من ميخواهم مثلا وقتي روي Ahmad در لیست باکس کليک کردم Pc4 در label1 و VB4 در label2 نمايش يابد.( و به اين ترتيب روي هر سطري در ليست کليک کرديم رکورد هاي روبرويي آن در ليبل ها نمايش بيايد؟))
با تشکر
جواب سوالت خیلی مشخصه! باید از AbsolutePosition استفاده کنی
اگه باز هم نفهمیدی چی می گم، سورس نرم افزارتو بذار تا برات درستش کنم.
خیلی متشکرم از جوابتون
سلام
راستش کد رو میفرستم اما نمیدونم کجاش گیر داره که برای اد کردن اررو میده
اگه زحمتی نیست لطفا باهر دو کنترل های Data و Adodc مثال بزنید
(اون ارور رو هم برطرف کنین خیلی خوبه)
ممنونم
خیلی ممنونم آقا فرید لطف کردید(کدرو یه سره هم میزاشتین متوجه میشدم لازم به زحمت بیشتر نبود)
راستی اون AbsolutePosition رو کجا استفاده کردین؟؟اگه میشه AbsolutePosition رو هم بکار ببرین خیلی خوبه(یه مثال)در مثال شما فکر کنم مقادیر رو برای دیتا جستجو میکنه و برای آدو شرط میزاه..
یه سوالی برام پیش اومده میخوام بدونم راه دیگری هم بدون استفاده حلقه هست(برای اد کردن)
قبلا این کار میکرد چرا حالا اررور میده?
کد:
For i = 1 To Adodc1.Recordset.RecordCount
x = Adodc1.Recordset.Fields("Field1")
List1.AddItem x
Adodc1.Recordset.MoveNext
Next
خیلی ممنون

(۱۹-مرداد-۱۳۸۸, ۰۳:۴۳:۲۴)dcamera نوشته است: [ -> ]خيلي ممنونم آقا فريد لطف کرديد(کدرو يه سره هم ميزاشتين متوجه ميشدم لازم به زحمت بيشتر نبود)
وظيفه است عزيز(کدرو مي خواستم به قول خودت يه سره بذارم، گفتم شايد سوال بقيه باشه و حوصله دانلود کردن نداشته باشن، به خاطر همين، نوشتمش که همه راحت تر ببينن)
(۱۹-مرداد-۱۳۸۸, ۰۳:۴۳:۲۴)dcamera نوشته است: [ -> ]راستي اون AbsolutePosition رو کجا استفاده کردين؟؟اگه ميشه AbsolutePosition رو هم بکار ببرين خيلي خوبه(يه مثال)در مثال شما فکر کنم مقادير رو براي ديتا جستجو ميکنه و براي آدو شرط ميزاه..
AbsolutePosition در مثال شما کاربرد نداره. تو پست اول، من چيز ديگه اي فکر مي کردم، به خاطر همين گفتم از AbsolutePosition استفاده کن، بعد که شما سورس رو گذاشتي، متوجه شدم.
براي اينکه با نحوه کار AbsolutePosition بيشتر آشنا بشي اين کارها رو انجام بده:
1. هر چي در رويداد List1_Click نوشته بودي پاک کن
2. کد زير رو در رويداد List1_Click بنويس:
کد:
Adodc1.Recordset.AbsolutePosition = List1.ListIndex + 1
Label1.Caption = Adodc1.Recordset.Fields("Field2")
Label2.Caption = Adodc1.Recordset.Fields("Field2")
3. نرم افزار رو اجرا کن
تذکر مهم: اگه اطلاعاتت رو توي List1، مرتب کني(Sort کني)، ديگه برنامه درست کار نمي کنه!!! پس فقط زماني مي تونيم به اين شکل از AbsolutePosition استفاده کنيم که به ترتيب اطلاعات دست نزده باشيم!!!!
(۱۹-مرداد-۱۳۸۸, ۰۳:۴۳:۲۴)dcamera نوشته است: [ -> ]يه سوالي برام پيش اومده ميخوام بدونم راه ديگري هم بدون استفاده حلقه هست(براي اد کردن)
براي Add کردن، راه زياده! تو مثال شما که تعداد رکورد ها کم هستن، استفاده از حلقه، مشکلي نداره. ولي وقتي حجم اطلاعات زياد بشه، استفاده از حلقه باعث مي شه برنامه در ابتدا براي Load کردن رکورد ها هنگ کنه! راه ديگه اش اينه که از DataSource و DataField استفاده کنی.
(۱۹-مرداد-۱۳۸۸, ۰۳:۴۳:۲۴)dcamera نوشته است: [ -> ]قبلا اين کار ميکرد چرا حالا اررور ميده?
کد:
For i = 1 To Adodc1.Recordset.RecordCount
x = Adodc1.Recordset.Fields("Field1")
List1.AddItem x
Adodc1.Recordset.MoveNext
Next
خيلي ممنون

الانم کار می کنه!! ولی کلاً این حلقه ای که نوشتی، بهینه نیست(من با do while بهینه کردمش)
شما توی این حلقه، یه متغیر به نام i تعریف کردی که هیچ جا ازش استفاده نمی شه! این یعنی نرم افزارت بی خودی از RAM استفاده می کنه. بعد یه متغیر به نام x تعریف کردی در حالی که لازم نبود این کار رو بکنی(به حلقه من نگاه کن، ببین چی کار کردم)