PDA

View Full Version : نحوه ثبت آیتم ایندکس کامبو باکس در جدول اکسس و با sql



khoshblagh
یک شنبه 08 آذر 1388, 08:00 صبح
با سلام خدمت دوستان
میخواهم اطلاعات آیتم ایندکس یک کامبو باکس را با دستور sql در یک جدول اکسس ثبت نمایم . عبارت مورد نظر را به صورت باید نوشته شود؟ متشکرم.

حسین شهریاری
یک شنبه 08 آذر 1388, 08:55 صبح
با سلام خدمت دوستان
میخواهم اطلاعات آیتم ایندکس یک کامبو باکس را با دستور sql در یک جدول اکسس ثبت نمایم . عبارت مورد نظر را به صورت باید نوشته شود؟ متشکرم.

سلام

البته من درست متوجه نشدم ولی فکر کنم منظور شما این بود:

Adotable.fieldbyname('fieldname').asinteger:=combo box1.itemindex

Tiam121
یک شنبه 08 آذر 1388, 13:32 عصر
Adotable.fieldbyname('fieldname').asinteger:=combo box1.itemindex[/quote]

اين دستور شماره ايندكس كامبو رو بر ميگردونه اگر مي خواي item اون ايندكس برگردونده بشه از اين دستور استفاده كن

Adotable.fieldbyname('fieldname'):=ComboBox1.Items[ComboBox1.ItemIndex];

khoshblagh
دوشنبه 09 آذر 1388, 07:34 صبح
ببنید من با عبارت زیر سعی در ثبت اطلاعات در یک جدول مینمایم. ولی خطای سینتکس گرفته میشود.


cmdSave.CommandText:='INSERT INTO tblCodHesab(cod,Name,Level) values('+quotedstr(edtCod.text)+','+




quotedstr(edtName.text)+','+quotedstr(cobLevel.Ite ms.Strings[cobLevel.ItemIndex])+')';


پیام خطا گرفته شده:
syntax error in insert into statement.

alinikaein
دوشنبه 09 آذر 1388, 08:30 صبح
سلام دوست عزيز؛

شما بايد از ItemIndex منهاي يك استفاده كنيد. يعني:

quotedstr(cobLevel.Items.Strings[cobLevel.ItemIndex - 1])


يا علي... موفق باشيد...

حسین شهریاری
دوشنبه 09 آذر 1388, 09:11 صبح
سلام

من مشکلی ندیدم ولی فکر کنم مال فیلد اولیتون باشه!!
احتمالا نوع فیلد code عددی است ولی شما از quotedstr(edtCod.text) که باعث میشه دو طرف اون سینگل کوتیشن قرار بگیره.اگه حدس من درست باشه همون
edtCod.text کفایت میکنه.

ضمنا پیشنهاد میکنم قبل از ExecSql رشته ارسالی را با showmessage مشاهده کنید تا کد Sql واقعی اونا ببینید اون موقه شاید خودتون بتونین حلش کنید.

showmessage(cmdSave.CommandText)

khoshblagh
دوشنبه 09 آذر 1388, 12:51 عصر
[quote=alinikaein;858720]سلام دوست عزيز؛

شما بايد از ItemIndex منهاي يك استفاده كنيد. يعني:

quotedstr(cobLevel.Items.Strings[cobLevel.ItemIndex - 1])

با تشکر از پاسختان
من تازه متوجه شدم که با عبارت بالا به جای ItemIndex کامبو باکس رشته هر آیتم را ثبت خواهد نمود. لذا به جای عبارت فوق این عبارت را قرار دادم.


quotedstr(cobLevel.ItemIndex - 1
که به هر حال مشکل حل نشد. ولی با مشاهده نتیجه عبارت همان ItemIndex مورد نظر را آماده ثبت مینماید.پس ما به جاری استفاده از جمله اول برای انتقال .ItemIndex باید از جمله دوم استفاده نماییم.اما هنوز مسئله عدم ثبت اطلاعات حل نشده باقی ماند. ضمنا دوست عزیز به نظر میرسد به جای علام منهی باید از علامت جمع جهت شماره .ItemIndex استفاده نمود. متشکرم

khoshblagh
دوشنبه 09 آذر 1388, 12:57 عصر
سلام

من مشکلی ندیدم ولی فکر کنم مال فیلد اولیتون باشه!!
احتمالا نوع فیلد code عددی است ولی شما از quotedstr(edtCod.text) که باعث میشه دو طرف اون سینگل کوتیشن قرار بگیره.اگه حدس من درست باشه همون
edtCod.text کفایت میکنه.

ضمنا پیشنهاد میکنم قبل از ExecSql رشته ارسالی را با showmessage مشاهده کنید تا کد Sql واقعی اونا ببینید اون موقه شاید خودتون بتونین حلش کنید.


showmessage(cmdSave.CommandText)

دوست عزیز من با اطمینان از مشکل نداشتن عبارت اقدام به حذف بخش کامبوباکس از عبارت مورد بحث نمودم و اطلاعات به درستی در جدول مربوطه ثبت شد. لذا احتمال اشتباه در بخشهای دیگر عبارت منتفی میباشد. ضمنا من از showmessage(cmdSave.CommandText استفاده نمودم که متوجه شدم میباست به جای آیتم از آیتم ایندکس استفاده گردد(موضوع پست شماره 7). متشکرم

دلفــي
دوشنبه 09 آذر 1388, 13:09 عصر
[quote=alinikaein;858720]سلام دوست عزيز؛

شما بايد از ItemIndex منهاي يك استفاده كنيد. يعني:

quotedstr(cobLevel.Items.Strings[cobLevel.ItemIndex - 1])

با تشکر از پاسختان
من تازه متوجه شدم که با عبارت بالا به جای ItemIndex کامبو باکس رشته هر آیتم را ثبت خواهد نمود. لذا به جای عبارت فوق این عبارت را قرار دادم.


quotedstr(cobLevel.ItemIndex - 1
که به هر حال مشکل حل نشد. ولی با مشاهده نتیجه عبارت همان ItemIndex مورد نظر را آماده ثبت مینماید.پس ما به جاری استفاده از جمله اول برای انتقال .ItemIndex باید از جمله دوم استفاده نماییم.اما هنوز مسئله عدم ثبت اطلاعات حل نشده باقی ماند. ضمنا دوست عزیز به نظر میرسد به جای علام منهی باید از علامت جمع جهت شماره .ItemIndex استفاده نمود. متشکرم


ItemIndex ايندكس Itemهاي ComboBox شما را بر مي گرداند كه ايندكس آيتم اول با 0 شروع مي شود و ايندكس آيتم انتهايي برابر cobLevel.Items.Count -1 خواهد بود پس براي دسترسي به مقادير آيتم ها فقط نوشتن كد زير كفايت مي كند :


cobLevel.Items.Strings[cobLevel.ItemIndex]


البته شما مي توانيد قبل از اين دستور ItemIndex رو توسط دستور زير تست كنيد و ببينيد آيا موردي در ComboBox انتخاب شده است يا نه !



if cobLevel.ItemIndex <> -1 then
// انتخاب شده
else
// انتخاب نشده


براي حل مشكل ثبت در جدول هم با توجه به فرمت فيلدهايي كه مي خواهيد اونها رو درج كنيد عمل نماييد :
اگر فيلدهاي شما از نوع Text باشند بايد هنگام درج آنها را در بين '' توسط دستور QuatedStr قرار داده و ثبت كنيد براي فيلدهاي عددي فقط درج مقدار كافيست و اين كار لزومي ندارد .

khoshblagh
دوشنبه 09 آذر 1388, 13:22 عصر
[quote=دلفــي;858984][quote=khoshblagh;858968]



cobLevel.Items.Strings[cobLevel.ItemIndex]


با جمله بالا به جای آیتم ایندکس رشته های آیتم را برگشت میدهد که مورد نظر من نیست
بنابر این من جمله را مثل پست 7 تغییر دادم که در showmessage آیتم ایندکس مورد نظر صحیح نمایش میدهد. پس اطلاعات صحیح انتخاب میشودولی در موقع ثبت خطای سینتکس بوجود می آید. متشکرم.

yalanemail
دوشنبه 09 آذر 1388, 16:36 عصر
سوالات شما در پست هاي مختلف باهم متفاوته !!!



میخواهم اطلاعات آیتم ایندکس یک کامبو باکس را با دستور sql در یک جدول اکسس ثبت نمایم .


اين سوالتون مربوط به ذخيره خود ايندكس ميشه كه دوستان در 2 پست بعدي بهش جواب كامل رو دادن .


ببنید من با عبارت زیر سعی در ثبت اطلاعات در یک جدول مینمایم. ولی خطای سینتکس گرفته میشود.


cmdSave.CommandText:='INSERT INTO tblCodHesab(cod,Name,Level) values('+quotedstr(edtCod.text)+','+


quotedstr(edtName.text)+','+quotedstr(cobLevel.Ite ms.Strings[cobLevel.ItemIndex])+')';



پیام خطا گرفته شده:

syntax error in insert into statement.





در اين قسمت شما با توجه به نوع دستورتون ذخيره مقادير combo از رو ي اينكس آنها مد نظرتون است نه ذخيره خود ايندكس .

به هر حال به نظر من توضيحات پست هاي 6 و 9 كه مكمل همان توضيحات ابتداي تايپيك هستند براي حل مشكل شما كافيه !

khoshblagh
سه شنبه 10 آذر 1388, 06:59 صبح
در اين قسمت شما با توجه به نوع دستورتون ذخيره مقادير combo از رو ي اينكس آنها مد نظرتون است نه ذخيره خود ايندكس .


با سلام خدمت دوستان
ضمن عذر خواهی از شما من متوجه شدم که در سئوال مطرح شده به جای درخواست ذخیره مقادیرکامبو باکس اشتباها ذخیره کامبو باکس را عنوان نموده ام که درخواستم را اصلاح میکنم.
در حقیقت من به دنبال ثبت مقادیر کامبو باکس در جدول مورد نظر میباشم.
لطفا در این خصوص مرا راهنمایی نمایید. متشکرم

alinikaein
سه شنبه 10 آذر 1388, 08:41 صبح
با سلام خدمت دوستان
ضمن عذر خواهی از شما من متوجه شدم که در سئوال مطرح شده به جای درخواست ذخیره مقادیرکامبو باکس اشتباها ذخیره کامبو باکس را عنوان نموده ام که درخواستم را اصلاح میکنم.
در حقیقت من به دنبال ثبت مقادیر کامبو باکس در جدول مورد نظر میباشم.
لطفا در این خصوص مرا راهنمایی نمایید. متشکرم

ثبت مقادير، يعني ثبت مقدار عددي متناظر يا ثبت مقدار متني كمبوباكس؟

در صورتي كه مقدار عددي مد نظر شماست، احتمالاً فيلدي كه شما تعريف كرديد، مشكل داره، احتمال ديگه اينه كه شما توي Syntax كوئري ايراد داريد.
از چه طريقي نسبت به ثبت اطلاعات اقدام مي‌كنيد؟
نوشتن متن كوئري؟ ارسال پارامتر؟


در مورد ItemIndex منهاي يك، اشتباه كردم، حواسم به يه چيز ديگه بود. ممنون از دوستاني كه تذكر دادند.


يا علي... موفق باشيد...