PDA

View Full Version : با DBLOOKUP از محتویات خود جدول اصلی می خواهم انتخاب کنم و برای رکوردهای در همان فیلد



ali_abbasi22145
دوشنبه 12 دی 1384, 08:52 صبح
سلام دوستان

من با DBLOOKUP از محتویات خود جدول اصلی می خواهم انتخاب کنم و برای رکوردهای در همان فیلد ذخیره کنم.
به عنوان مثال ملیت: ایرانی و روسی و فرانسوی و...
برای شخص علی عباسی که در فیلد ملیت ایرانی وارد کردم برای شخص دیگر که مثلا احمد حسینی ملیت ان با DBLOOKUP ایرانی انتخاب شود برای شخص دیگر روسی ملیت وارد کردم بعد از ان DBLOOKUP هم ایرانی هم روسی را از جدول بخواند و الی اخر...
و لازم به ذکر که این فیلدها مدام زیاد می شود و به شکل لیست در ITEMS نمی شود استفاده کرد یا روش دیگر که از یک جدول دیگر بخوانم هم نمی خواهم چون این نوع فیلدها خیلی زادند و جدولهای زادی را هم می خواهد.
ایا راهی دیگر هست یا کامپوننتی که این کار را کند در نظر دارید.

Naficy
دوشنبه 12 دی 1384, 16:08 عصر
به نظر من چنین کارهایی بهتر خارج از دیتابیس انجام شود. مثلا لیستی از 20 مورد آخری را که کاربر وارد کرده است در یک فایل (یا هر جای دیگر) ذخیره کنید.


و لازم به ذکر که این فیلدها مدام زیاد می شود و به شکل لیست در ITEMS نمی شود استفاده کرد یا روش دیگر که از یک جدول دیگر بخوانم هم نمی خواهم چون این نوع فیلدها خیلی زادند و جدولهای زادی را هم می خواهد
توجه داشته باشید که آوردن یک لیست 1000تایی به کاربر "هیچ" کمکی نمی کند. مسلما ساده تر است که متن مورد نظر را تایپ کنه تا بخواد دنبالش بگرده. :متفکر:

بازهم توصیه می کنم که از روشی استفاده کنید که اول صحبتم گفتم. اما اگر همچنان مصرید که از دیتابیس کمک بگیرید: (که به نظر من دارید یک کارسنگین و بیهوده رو به سیستم تحمیل می کنید)
1 - می توانید یک کوئری با کمک دستور Select Distinct بگیرید و نتایج حاصله را در یک کامبوباکس معمولی نمایش دهید.
2 - یکی از دوستان (اگه بشه بهشون "دوست" گفت!) چند وقت پیش خودش رو خفه کرد که یک DBLookupCombobox نوشته که چنین است و چنان است. البته کامپوننتشون خیلی قویتر از نیاز شماست و یادم نیست اصلا این کار مورد نظر شما را جواب می دهد یا نه. اما می تونید دنبال عبارت DBLookupcombobox بگردید. (البته کامپوننته پولیه!)
3 - صرف نظر از اینکه کدام یک از دو شماره بالا را عمل کنید:(این قسمت رو با در نظر گرفتن تک تک کاما ها بخونید -->) شما، دارید، یک، کار، سنگین، و، بیهوده رو، به، کامپیوتر، تحمیل، می کنید! :عصبانی++: (لطفا جدی نگیرید!! :لبخند: )

ali_abbasi22145
سه شنبه 13 دی 1384, 08:43 صبح
سلام

"اما اگر همچنان مصرید که از دیتابیس کمک بگیرید: (که به نظر من دارید یک کارسنگین و بیهوده رو به سیستم تحمیل می کنید)"

نه دوست من . نمی خواهم در دیتابیس ذخیره کنم شاید من بد توضیح دادم یا شما خوب برداشت از کلمات من نداشتید البته جسارت به شما نکنم شما بسیار بسیار لطف کردید که تاپیک را خواندید.
من می خواهم یکی یکی ملیتها را که وارد می کنم بار دیگر از خود همان فیلد ملیت بخواند و برای شخص دیگر در همان فیلد ملیت ذخیره کند، همین.

mzjahromi
سه شنبه 13 دی 1384, 10:13 صبح
من می خواهم یکی یکی ملیتها را که وارد می کنم بار دیگر از خود همان فیلد ملیت بخواند و برای شخص دیگر در همان فیلد ملیت ذخیره کند، همین.



1 - می توانید یک کوئری با کمک دستور Select Distinct بگیرید و نتایج حاصله را در یک کامبوباکس معمولی نمایش دهید.

می تونید هم از DBComboBox استفاده کنید

ali_abbasi22145
سه شنبه 13 دی 1384, 15:18 عصر
سلام
دقیقا روش دوستمان که گفت را انجام داده ام اما مشکل این است کهDBLOOKUP فیلدها را یونیک نشان نمی دهد و تکرار نشان می دهد و یک نمونه تستی با فیلد دیگر را در عکس پایین را می توانید ببینید.
و این هم String همان QUERY است.

select distinct cardtable.id , cardtable.sicard from cardtable where id > ' ' order by id

یکی لطفا جواب بدهد!!!

Naficy
جمعه 16 دی 1384, 00:42 صبح
باید تنها یک فیلد را در کوئری بخوانید:
select distinct cardtable.id from cardtable where id > ' ' order by id
مثلا فقط فیلد ملیت را بگیرید. (یکبار به راهنمای disitinct مراجعه کنید. حذف رکوردهای تکراری بر اساس مجموعه تمامی فیلدها انجام می شود)

نه اتفاقا منظور من از آن عبارت همین چیزی بود که شما می خواهید. (که یعنی خواندن اطلاعات از درون دیتابیس). البته خب یه کمی نامفهوم گفتم.
اما همانطور که گفتم، پیشنهاد می کنم ده مورد آخری را که کاربر تایپ کرده در فایلی چیزی نگهدارید و در یک combobox معمولی نمایش دهید. به جای اینکه از مقادیر واقعی درون جدول استفاده کنید. (و یک کوئری بزنید)

راستی مطمئنید که با dblookupcombobox نمی شه این کار رو کرد؟

ali_abbasi22145
شنبه 17 دی 1384, 11:31 صبح
باید تنها یک فیلد را در کوئری بخوانید:
select distinct cardtable.id from cardtable where id > ' ' order by id
مثلا فقط فیلد ملیت را بگیرید. (یکبار به راهنمای disitinct مراجعه کنید. حذف رکوردهای تکراری بر اساس مجموعه تمامی فیلدها انجام می شود)

نه اتفاقا منظور من از آن عبارت همین چیزی بود که شما می خواهید. (که یعنی خواندن اطلاعات از درون دیتابیس). البته خب یه کمی نامفهوم گفتم.
اما همانطور که گفتم، پیشنهاد می کنم ده مورد آخری را که کاربر تایپ کرده در فایلی چیزی نگهدارید و در یک combobox معمولی نمایش دهید. به جای اینکه از مقادیر واقعی درون جدول استفاده کنید. (و یک کوئری بزنید)

راستی مطمئنید که با dblookupcombobox نمی شه این کار رو کرد؟

//////////////////////////////////////////////////////////////////////////////////////////

دوست من در dblookupcombobox هم ListField , KeyField می خواهد پس من مجبورمcardtable.id , cardtable.sicard را در دستور استفاده کنم و شما چه طوری این را حل می کنی خواهشن توضیح بدهید و اگر لطف بفرمایید در یک برنامه کوچک در اینجا یا به ایمیل من روش شما را attach کنید یک دنیا ممنون می شوم.