تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
حل مشكلة الإستعلام مع وجود الفواصل أو العلامات
#1
عند محاول الإستعلام عن جملة أو إسم في قاعدة البيانات يحتوي على فاصلة أو علامة يرفض البرنامج الأمر ويرجع السبب لوجود هذه العلامه 
مثال كلمة (men's) 
كيف نجعل جملة الإستعلام تقبل جميع العلامات دون إستثناء ؟
الرد }}}
تم الشكر بواسطة: asemshahen5
#2
السلام عليكم اخي الكريم
في قاعدة البيانات يبدو انك عرفت الحقل ببيانات من نوع VarChar 
قم بتحويله الى NvarChar ليقبل كل الرموز والحروف اللاتينية والعربية
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
#3
(06-04-20, 01:27 AM)ابراهيم ايبو كتب : السلام عليكم اخي الكريم
في قاعدة البيانات يبدو انك عرفت الحقل ببيانات من نوع VarChar 
قم بتحويله الى NvarChar ليقبل كل الرموز والحروف اللاتينية والعربية

وعليكم السلام 

جميع الحقول في الداتا هي NvarChar 
ولكن المشكله هي في كود الحفظ أو الإستعلام على ما أظن 
 فغالبا تأتي رسالة الخطأ التاليه عند الحفظ أو الإستعلام 

System.Data.SqlClient.SqlException: 'Incorrect syntax near 's'.
Unclosed quotation mark after the character string ''.'

فهو يؤكد وجود خطأ في بناء الجملة ويعني العلامة التي بجانب الحرف s حيث أن الكلمة المراد حفظها أو الإستعلام عنها هي men's 
لأن الحفظ يتم بشكل جيد بعد حذفها
الرد }}}
تم الشكر بواسطة: asemshahen5
#4
السلام عليكم ورحمة الله وبركاته
اخي في السيكوال سيرفر اثناء تصميم الجدول  الجدول
اختر التنسيق Arabic_100_CI_AI تاني واحد من الاعلى
بالنسبة للجداول المنشأة سلبقا ويراد تعدبلها  تظهر ReadOnly عندما تحتار عرض الخصائض Properties بالنقر ماوس يمين على الجدول
لم اعرف كيف تعديلها اتمنى من يعرف الافادة والحل حاليا
 ان تنشئ قاعدة جديدة  كما في الصورة ونقل محتوياتها
تابع هذا الرابط 
https://www.youtube.com/watch?v=G_qJkviy...ck&index=2


الملفات المرفقة صورة/صور
   
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: سعود , ZaerAllail , asemshahen5
#5
(06-04-20, 04:36 AM)ابراهيم ايبو كتب : السلام عليكم ورحمة الله وبركاته
اخي في السيكوال سيرفر اثناء تصميم الجدول  الجدول
اختر التنسيق Arabic_100_CI_AI تاني واحد من الاعلى
بالنسبة للجداول المنشأة سلبقا ويراد تعدبلها  تظهر ReadOnly عندما تحتار عرض الخصائض Properties بالنقر ماوس يمين على الجدول
لم اعرف كيف تعديلها اتمنى من يعرف الافادة والحل حاليا
 ان تنشئ قاعدة جديدة  كما في الصورة ونقل محتوياتها
تابع هذا الرابط 
https://www.youtube.com/watch?v=G_qJkviy...ck&index=2

أخي الكريم شكرا لك 
ولكن أعتقد المشكله ليس لها علاقة بقاعدة البيانات
فقد نفذت ما ذكرت في ردك السابق ولا يوجد نتيجة 
أعتقد الخلل فقط في جملة الحفظ أو الإستعلام لأن البرنامج يرفض التنفيذ قبل الوصول لقاعدة البيانات !

عموما أتمنى من الأخوان إذا فيه أحد واجه هالخطأ يفيدنا بالحل .
الرد }}}
تم الشكر بواسطة: asemshahen5
#6
System.Data.SqlClient.SqlException: 'Incorrect syntax near 's'. Unclosed quotation mark after the character string ''.'

لقد مررت بهذا من قبل ووجدت الحل بعد نقاش هنا بقسم اسئلة Asp.net


https://www.youtube.com/watch?v=fKANH0Gqx5I

متابع باذن الله تعالى
الرد }}}
تم الشكر بواسطة: ZaerAllail , asemshahen5
#7
اخي الكريم
ارفق المشروع وسأحل لك المشكله
شكرا
الرد }}}
تم الشكر بواسطة: asemshahen5
#8
(06-04-20, 07:44 AM)سعود كتب : System.Data.SqlClient.SqlException: 'Incorrect syntax near 's'. Unclosed quotation mark after the character string ''.'

لقد مررت بهذا من قبل ووجدت الحل بعد نقاش هنا بقسم اسئلة Asp.net


https://www.youtube.com/watch?v=fKANH0Gqx5I

متابع باذن الله تعالى

حياك أخ سعود 

لا يوجد في اليوتيوب حل واضح للمشكله أخ سعود 
وأما بالنسبة لمنتدى Asp.net فسأتابعه بحثا عن حل واضح ومفهوم لهذا الخطأ 

تحياتي لك أخي الكريم

(06-04-20, 08:32 AM)hashemb1978 كتب : اخي الكريم
ارفق المشروع وسأحل لك المشكله
شكرا

المشروع كبير يا عزيزي ولا أستطيع تحميلة هنا وعموما سأحاول أرفع مثال له إن أمكن 

علما بان المطلوب هو التعديل على كود الحفظ حتى يحفظ عبارة تحتوي على العلامة الموجوده بين القوسين كمثال (') 
شكرا لك
الرد }}}
تم الشكر بواسطة: asemshahen5
#9
هل جربت نوع VarChar(Max)
لاني جربت الان ويحفظ ولا مشكلة.

جربت باستخدام DataRow
PHP كود :
Public Class Form1
    Dim str 
As String "Data Source=.;Initial Catalog=ndb;Integrated Security=True;MultipleActiveResultSets=True;"
 
   Dim con As New SqlClient.SqlConnection(str)
 
   Dim da As New SqlClient.SqlDataAdapter("select * from tb"con)
 
   Dim cm As New SqlClient.SqlCommandBuilder(da)
 
   Dim dt As New DataTable
    Private Sub gd
()
 
       ListBox1.DataSource Nothing
        ListBox1
.Items.Clear()
 
       da.Fill(dt)
 
       ListBox1.DataSource dt
        ListBox1
.DisplayMember "title"
 
       Button1.Enabled True
    End Sub

    Private Sub Button1_Click
(sender As ObjectAs EventArgsHandles Button1.Click
        If TextBox1
.Text.Trim "" Or TextBox2.Text.Trim "" Then Beep() : Exit Sub

        Button1
.Enabled False
        Dim row 
As DataRow dt.NewRow
        row
(1) = TextBox1.Text
        row
(2) = TextBox2.Text
        dt
.Rows.Add(row)
 
       da.Update(dt)
 
       TextBox1.Clear()
 
       TextBox2.Clear()
 
       gd()
 
   End Sub

    Private Sub ListBox1_SelectedIndexChanged
(sender As ObjectAs EventArgsHandles ListBox1.SelectedIndexChanged

        If ListBox1
.Items.Count 0 Then Exit Sub
        If ListBox1
.SelectedIndex 0 Then Exit Sub
        TextBox1
.Clear()
 
       TextBox2.Clear()
 
       Dim index As Integer ListBox1.SelectedIndex
        TextBox1
.Text dt(index)(1)
 
       TextBox2.Text dt(index)(2)

 
   End Sub

    Private Sub Form1_Load
(sender As ObjectAs EventArgsHandles MyBase.Load
        gd
()
 
   End Sub
End 
Class 


ماهو الكود الذي استخدمته للحفظ
الرد }}}
تم الشكر بواسطة: ZaerAllail , asemshahen5
#10
(06-04-20, 01:57 PM)سعود كتب : هل جربت نوع VarChar(Max)
لاني جربت الان ويحفظ ولا مشكلة.

جربت باستخدام DataRow
PHP كود :
Public Class Form1
    Dim str 
As String "Data Source=.;Initial Catalog=ndb;Integrated Security=True;MultipleActiveResultSets=True;"
 
   Dim con As New SqlClient.SqlConnection(str)
 
   Dim da As New SqlClient.SqlDataAdapter("select * from tb"con)
 
   Dim cm As New SqlClient.SqlCommandBuilder(da)
 
   Dim dt As New DataTable
    Private Sub gd
()
 
       ListBox1.DataSource Nothing
        ListBox1
.Items.Clear()
 
       da.Fill(dt)
 
       ListBox1.DataSource dt
        ListBox1
.DisplayMember "title"
 
       Button1.Enabled True
    End Sub

    Private Sub Button1_Click
(sender As ObjectAs EventArgsHandles Button1.Click
        If TextBox1
.Text.Trim "" Or TextBox2.Text.Trim "" Then Beep() : Exit Sub

        Button1
.Enabled False
        Dim row 
As DataRow dt.NewRow
        row
(1) = TextBox1.Text
        row
(2) = TextBox2.Text
        dt
.Rows.Add(row)
 
       da.Update(dt)
 
       TextBox1.Clear()
 
       TextBox2.Clear()
 
       gd()
 
   End Sub

    Private Sub ListBox1_SelectedIndexChanged
(sender As ObjectAs EventArgsHandles ListBox1.SelectedIndexChanged

        If ListBox1
.Items.Count 0 Then Exit Sub
        If ListBox1
.SelectedIndex 0 Then Exit Sub
        TextBox1
.Clear()
 
       TextBox2.Clear()
 
       Dim index As Integer ListBox1.SelectedIndex
        TextBox1
.Text dt(index)(1)
 
       TextBox2.Text dt(index)(2)

 
   End Sub

    Private Sub Form1_Load
(sender As ObjectAs EventArgsHandles MyBase.Load
        gd
()
 
   End Sub
End 
Class 


ماهو الكود الذي استخدمته للحفظ
كود الحفظ هو التالي

كود :
       Dim cmd As New SqlCommand("insert into MovTable (MovNo,NameOfMov) values (@MovNo,@NameOfMov)", sqlcon)

       cmd.Parameters.Add(New SqlParameter("@MovNo", SqlDbType.Int)).Value = MovNomLabel.Text
       cmd.Parameters.Add(New SqlParameter("@NameOfMov", SqlDbType.NVarChar)).Value = Trim(NameOfMovTB.Text)

       sqlcon.Open()
       cmd.ExecuteNonQuery()
       MsgBox("تم حفظ البيانات بنجاح", vbInformation, "Movies Store")
       sqlcon.Close()


وعموما شي جميل أخ سعود ربي يحفظك 

لنفترض أنك تريد قبل الحفظ البحث عن إسم (men's) هل هو موجود في قاعدة البيانات أم لا فما هي صيغة الكود المطلوب ؟
أنا أستخدم هذا الكود للبحث عن الأسماء قبل حفظها وتعود لي النتيجة بأن الإسم موجود أو غير موجود 

كود :
       da = New SqlDataAdapter("select NameOfMov From MovTable where NameOfMov = " & Trim(NameSearchTB.Text) & "'", sqlcon)
       da.Fill(MovieSearchdt)
وإذا كان الإسم يحتوي على الفاصلة المذكورة (') يتم رفض البحث مسبقاً
فهل من الممكن صياغة كود البحث بنفس الطريقة لتتم العملية ؟


عموما تسلم يا رائع حفظك الله
الرد }}}
تم الشكر بواسطة: asemshahen5 , asemshahen5



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم