PDA

View Full Version : مشکل دستور select با فارسی



mina.net
چهارشنبه 17 مهر 1387, 22:33 عصر
من وقتی متن combobox انگلیسی یا عدد است خیلی مشکل ندارم اما وقتی متن فارسی باشد دستورselect به خوبی انجام نمی شود من نحوه ذخیره اطلاعات را هم در زیر گذاشتم شاید ربطی داشته با شد ئر ضمن من قبلا از همین دستوراستفاده می کردم ومشکلی نداشتم


Dim smallcommond11 As SqlCommand = New SqlCommand("select code_type from mdn_main where type_m = '" & ComboBox1.Text & "' ", con)
Dim smallid_group11 As Object = smallcommond11.ExecuteScalar()

'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''

cmd = New SqlCommand("insert into MDN_MAIN (CODE_TYPE,TYPE_M,CODE_NAME,NAME,NAME_C_COM,NAME_C _T,CODE_PAK,PAK_TYPE ,CODE_C_T,name_eng)values (@CODE_TYPE,@TYPE_M,@CODE_NAME,@NAME,@NAME_C_COM,@ NAME_C_T,@CODE_PAK,@PAK_TYPE,@CODE_C_T,@name_eng)", con)
With cmd
.Parameters.Add(New SqlParameter("@CODE_TYPE", SqlDbType.Int)).Value = MAX_CODE_TYPE
.Parameters.Add(New SqlParameter("@TYPE_M", SqlDbType.NVarChar, 100)).Value = ComboBox1.Text
.Parameters.Add(New SqlParameter("@CODE_NAME", SqlDbType.Int)).Value = MAX_CODE_NAME
.Parameters.Add(New SqlParameter("@NAME", SqlDbType.NVarChar, 100)).Value = ComboBox5.Text
.Parameters.Add(New SqlParameter("@NAME_C_COM", SqlDbType.NVarChar, 100)).Value = ComboBox2.Text
.Parameters.Add(New SqlParameter("@NAME_C_T", SqlDbType.NVarChar, 100)).Value = ComboBox3.Text
.Parameters.Add(New SqlParameter("@CODE_C_T", SqlDbType.Int)).Value = MAX_CODE_c_t
.Parameters.Add(New SqlParameter("@CODE_PAK", SqlDbType.Int)).Value = MAX_CODE_PAK
.Parameters.Add(New SqlParameter("@PAK_TYPE", SqlDbType.NVarChar, 50)).Value = ComboBox4.Text
.Parameters.Add(New SqlParameter("@name_eng", SqlDbType.NVarChar, 100)).Value = ComboBox6.Text
End With
cmd.ExecuteNonQuery()



در ضمن نام متغییر من smallid_group11 می باشد که از نوع object می باشد

morteza_261
چهارشنبه 17 مهر 1387, 23:39 عصر
سلام
به این شکل بنویسید:

Dim smallcommond11 As SqlCommand = New SqlCommand("select code_type from mdn_main where type_m = N'" & ComboBox1.Text & "' ", con)

یا

Dim smallcommond11 As SqlCommand = New SqlCommand("select code_type from mdn_main where type_m Like N '" & ComboBox1.Text & "' ", con)

bardia goharbin
چهارشنبه 17 مهر 1387, 23:40 عصر
دقیقا در کدوم قسمت Error میده؟ و پیغام خطا چیه؟

mohammad-gh
پنج شنبه 18 مهر 1387, 10:44 صبح
این مشکل بر می گردد به مشکل SQL در تشخیص حروف فارسی ک و ی و چند حرف ذیگر ، اگر دقت کنید در تمامی جستجو هایی که جواب درست نیست یکی از این حروف وجود دارد.
راههای زیادی برای رفع این مشکل ارائه شده است مانند نصب برنامه های جانبی برای تبدیل این حروف به حروف قابل شناسایی SQL و ... ولی من بهترین روش آن را استفاده از دستور LIKE در جستجو ها می دانم که بسیار مطمئن است در ضمن نیازی هم به نصب DLL یا برنامه های جانبی نیست.
پس دستور شمااینطور تغییر می یابد:

Dim smallcommond11 As SqlCommand = New SqlCommand("select code_type from mdn_main where type_m like '" & ComboBox1.Text & "' ", con)

موفق باشید.