ورود

نسخه کامل مشاهده نسخه کامل : پیغام خطا در ویرایش در صورتیکه combo از بانک پر می شوند



ghaderif
12-06-2011, 16:05
برای update یک فرم از کد زیر استفاده کردم. محتویات combobox از بانک خوانده می شود در هنگام update با پیغام زیر روبرو می شوم:

کد:
con.Open()
Dim cmdup As SqlCommand = New SqlCommand("update regedu set namecourse='" + Cstandard.SelectedItem + "',courseno='" + tcodest.Text + "',term='" +
uterm.Text + "',fname='" + Cnameteacher.SelectedItem + "',teachercode='" + Tcartno.Text +
"',cost='" + Tcost.Text +
"',datestart='" + datestu.Text + "',dateend='" + dateenu.Text +
"',day='" + Cdayu.SelectedItem + "',time='" + Ctimeu.SelectedItem +
"',stno='" + stnou.Text + "',fnamest='" + namestu.Text +
"',lnamest='" + familstu.Text + "',fishno='" + Tfishnou.Text + "',fishprice='" +
Tpricefishu.Text + "',bedehkar='" + Tbedehu.Text + "',bestankar=" + Tbestu.Text + ",rest=" + Trestu.Text + "where groupcode='" + Tsearch.Text + "'", con)
cmdup.ExecuteNonQuery()
con.Close()
MsgBox("اطلاعات فوق ویرایش شد")


پیغام خطا:
Operator '+' is not defined for string "update regedu set namecourse='" and type 'DataRowView'.

_H2_
12-06-2011, 22:45
سلام
پیشنهاد میکنم اگر میخواهید برنامه نویسی را ادامه دهید و هدفتان احتمالاً فقط ارائه یک پروزه موقت در پایان ترم و... نیست، با مطالعه کتاب و به صورت اصولی پیش بروید.

کدی که شما در تاپیک دیگرتان ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) و همچین این تاپیک جاری قرار داده اید، کد اصولی و منطقی نیستند.
مثلاً با مطالعه یک کتاب ADO.Net میتوانید اصول و شالوده و انواع روش های دسترسی به دیتابیس را فرابگیرید....

=====

روش ساخت دستور SQL با محاصبات String مشکلات خطاهای سینتکسی و منطقی و امنیتی فراوانی میتواند داشته باشد و محل و بستری مناسب برای خطا و ناپایداری است.
در دید بهتر شما باید از روش پارامتری استفاده کنید و باز هم بهتر از آن باید تا حد امکان از SP ها استفاده کنید.
مثلاً

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

و برای کنترل و پاس دادن صحیح مقادیر NULL هم به دیتابیس میتوانید از کد اصلاح شده زیر استفاده کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
(طبیعتاً "StringText" و 123 و 456 فقط نمادی از مقداردهی پارامترها هستند.)

سعی کنید حداقل روش فوق را امتحان و درک کنید و از این شیوه برای تعریف دستور و مقداردهی پارامترها و... استفاده کنید.
در نهایت هم که تهیه و مطالعه حداقل یک کتاب با مضمون ADO.Net که در بازار هم فراوان است، میتواند بسیار کمک تان کند.

=====

به نظر من مشکل فوق بسیار مهم تر بوده است.
ولی در حال حاضر اگر مشکل فوق را نداشته باشد، باز هم کد شما به علت استفاده از Cdayu.SelectedItem با مشکل مواجه خواهد شد.
اگر Combo شما خود از یک منبع پر شده است، پیشنهاد میشواد پس از اطلاح و تنظیم صحیح کدها، برنامه را به سمت استفاده از Cdayu.SelectedValue پیش ببرید.

=====

ضمناً برای نمایش صحیح کدهای خودتان در سطح تالار میتوانید در زمان ویرایش از دکمه [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] در نوار ابزار ویرایشگر استفاده کنید.

موفق باشید.

ghaderif
14-06-2011, 09:21
ممنون از راهنمایی هاتون