View Full Version : مبتدی: مشکل در خواندن کلمات فارسی دو سیلابی از یک Combobox
MozenAbasi
جمعه 12 اسفند 1390, 13:20 عصر
سلام به همه شما خوبان
من تو برنامم یک ComboBox دارم که اسامی دروس رو که از یک جدول تو دیتا بیس توش درج کردم رو نشون میده . تو رویداد Change این Combo یه کد نوشتم که Text اون رو به یه پارامتر از یک ADOQuery پاس میکنه و در نهایت یه Select انجام میده . مشکل اینجاست که اسامی دو سیلابی مانند "سیستم عامل" وقتی به پارامتر ADOQuery پاس می شن نتیجه جدول تهی میشه ! در حالی که جدولی که توسط ADOQuery روش Select زدم حاوی فیلد نام درسی به نام "سیستم عامل" هست .
ممنون می شم کمکم کنید .
tiphooo
جمعه 12 اسفند 1390, 16:19 عصر
برای ارسال پاراکتر به این شکل عمل کنید
ADOQuery1.Parameters.ParamValues['@YourParameter']:=QuotedStr(Combobox1.Items[Combobox1.ItemIndex]))
برای ارسال داده از نوع رشته ای به صورت پارامتر از QuotedStr با نام پارامتر استفاده کنید و یا پارامتر را با '' بفرستید QuotedStr هم همین کار را انجام می دهد
MozenAbasi
جمعه 12 اسفند 1390, 17:26 عصر
برای ارسال پاراکتر به این شکل عمل کنید
ADOQuery1.Parameters.ParamValues['@YourParameter']:=QuotedStr(Combobox1.Items[Combobox1.ItemIndex]))
من به صورت زیر عمل می کردم :
QTopicSelectWithLessonName.Parameters.ParamByName( 'Name').Value := Trim(ComboBoxLesson.Text) ;
در این حالت مقادیر دو سیلابی مانند "سیستم عامل " حاصل جدول تهی رو برمی گردوندن ولی وقتی از QuotedStr fi w,vj cdv hsjthni ;vnl :
QTopicSelectWithLessonName.Parameters.ParamByName( 'Name').Value := QuotedStr(ComboBoxLesson.Text) ;
و یا حتی :
QTopicSelectWithLessonName.Parameters.ParamByName( 'Name').Value := QuotedStr(ComboBoxLesson.Items[ComboBoxLesson.ItemIndex])
هم برای رشته های تک سیلابی و هم دو سیلابی حاصل جدول تهی میشه !
کد ADOQuery هم به شکل زیره :
Select Lesson.LessonCode,Lesson.LessonName,QuestionTopic. QTopic ,QuestionTopic.ID
from Lesson,QuestionTopic
where (Lesson.LessonCode = QuestionTopic.LessonCode) and (Lesson.LessonName= :Name )
آیا نمیشه به همراه هر آیتم از ComboBox ، یک ID مشخص ذخیره کرد ؟
(عذر می خوام من تو دلفی مبتدی هستم که همچین سوالی رو پرسیدم !)
MozenAbasi
جمعه 12 اسفند 1390, 17:28 عصر
برای ارسال پاراکتر به این شکل عمل کنید
ADOQuery1.Parameters.ParamValues['@YourParameter']:=QuotedStr(Combobox1.Items[Combobox1.ItemIndex]))
برای ارسال داده از نوع رشته ای به صورت پارامتر از QuotedStr با نام پارامتر استفاده کنید و یا پارامتر را با '' بفرستید QuotedStr هم همین کار را انجام می دهد
من به صورت زیر عمل می کردم :
QTopicSelectWithLessonName.Parameters.ParamByName( 'Name').Value := Trim(ComboBoxLesson.Text) ;
در این حالت مقادیر دو سیلابی مانند "سیستم عامل " حاصل جدول تهی رو برمی گردوندن ولی وقتی از QuotedStr به صورت زیر استفاده می کنم:
QTopicSelectWithLessonName.Parameters.ParamByName( 'Name').Value := QuotedStr(ComboBoxLesson.Text) ;
و یا حتی :
QTopicSelectWithLessonName.Parameters.ParamByName( 'Name').Value := QuotedStr(ComboBoxLesson.Items[ComboBoxLesson.ItemIndex])
هم برای رشته های تک سیلابی و هم دو سیلابی حاصل جدول تهی میشه !
کد ADOQuery هم به شکل زیره :
Select Lesson.LessonCode,Lesson.LessonName,QuestionTopic. QTopic ,QuestionTopic.ID
from Lesson,QuestionTopic
where (Lesson.LessonCode = QuestionTopic.LessonCode) and (Lesson.LessonName= :Name )
tiphooo
جمعه 12 اسفند 1390, 18:23 عصر
ظاهرا کدهای شما درست است ولی در کل ذخیره یک ID به جای رشته ها صحیح تر و بهتر است و شما اصولا نیابد اسامی درسها را (در این مثال) به صورت رشته ذخیره کنید.برای هر درس یک Id در نظر بگیرید و بر اساس ID در دیتابیس ذخیره کنید .
MozenAbasi
جمعه 12 اسفند 1390, 20:08 عصر
ظاهرا کدهای شما درست است ولی در کل ذخیره یک ID به جای رشته ها صحیح تر و بهتر است و شما اصولا نیابد اسامی درسها را (در این مثال) به صورت رشته ذخیره کنید.برای هر درس یک Id در نظر بگیرید و بر اساس ID در دیتابیس ذخیره کنید .
حق با شماست ، من یک جدول به نام دروس دارم که فیلدهای "نام درس" ، "کد درس" می باشد ، جدول دیگری دارم به نام مباحث دروس که حاوی فیلدهای "ID" ، "کد درس" و "عنوان مبحث" می باشد فیلد "کد درس" در جدول مباحث دروس کلید خارجی متانظر با فیلد "کد درس" در جدول دروس می باشد .
من یک Select روی جدول دروس می زنم و عنوان دروس رو در یک ComboBox میریزم وقتی کاربر درس مورد نظر خود رو انتخاب میکنه با یه Select دیگه عنوان مباحث درس انتخاب شده در یک combobox دیگه لیست میشه .
به نظر شما چی کار کنم که هم کاربر نام دروس و مباحث رو ببینه و هم من بتونم به ID دروس و مبحث انتخاب شده دسترسی داشته باشم ؟؟
من میام دو تا Select می نویسم که مجبورم پارامترهاشون رو به صورت رشته ای در نظر بگیرم و یکی رو با عنوان درس و دیگری رو عنوان مبحث مقدار دهی کنم .
اگه میشد تو ComboBox به ازای هر آیتم یه Value نسبت داد اونوقت می شد Select ها رو به جای عنوان ، روی ID زد .
اگه همچین امکانی وجود داره لطفا بگید چه جوری ؟
tiphooo
جمعه 12 اسفند 1390, 21:43 عصر
برای این کار کامپوننتهای دیگری هم هست ولی با همین combobox هم می شود اگر کد درسها رو از 0 تا n در نظر گرفته باشید و به ترتیب این کد در Combobox بریزید با انتخاب از combobox ایندکس combobox را به عنوان پارامتر به پروسیجرتان ارسال کنید
MozenAbasi
جمعه 12 اسفند 1390, 23:38 عصر
اگه لطف کنید چند نمونه کامپوننت دیگه رو نام ببرید ممنون میشم ، یه چیزی که کار Combobox رو بکنه چون کد درس توسط کاربر هرچی عشقش کشید تعیین میشه !
tiphooo
شنبه 13 اسفند 1390, 12:58 عصر
SMDBComboBox مانند ComboBox می باشد که به ازاء هر آیتم یک مقدار هم در خاصیت Values میگیرد.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.