إقتباس :وعموما شي جميل أخ سعود ربي يحفظك
واياك
لكن لم افهم هل حللت المشكلة؟
هل المشكلة الاساسية بالبحث فقط؟
هل تقصد ان الطريقة اللي انت اتبعتها هي السبب؟
الاصدار اللي عندي sql 2014
vs2019
شوف دالة Isfound اللي بالصورة
عفوا قصدي هذه الصورة
والصورة السابقة الدالة للبحث
(06-04-20, 06:10 PM)سعود كتب : [ -> ]إقتباس :وعموما شي جميل أخ سعود ربي يحفظك
واياك
لكن لم افهم هل حللت المشكلة؟
هل المشكلة الاساسية بالبحث فقط؟
هل تقصد ان الطريقة اللي انت اتبعتها هي السبب؟
الاصدار اللي عندي sql 2014
vs2019
شوف دالة Isfound اللي بالصورة
عفوا قصدي هذه الصورة
والصورة السابقة الدالة للبحث
لا يا عزيزي المشكلة لم تحل حتى الأن
بحاول أبسط لك مقصدي ربما يبسط الأمر
المشكلة ليست في الداتا بيس وإنما في جملة الحفظ أو الإستعلام على حد سواء
فالداتا بيس تقبل الأسماء والحركات بدون أي إشكال عند إدخالها بشكل مباشر من خلال sql
وليس من خلال النموذج أو البروجكت
وكمثال مباشر الكود التالي للإستعلام وهو يعمل بشكل جيد على جميع الجمل طالت أو قصرت ولكن ينتج عنه رسالة الخطأ فقط عند الحركه (') وما شابهها
فهو لا ينفذ الأمر ويتوقف على رساله الخطأ
والحل الذي أبحث عنه هو الخطأ الذي تقصدة رسالة الخطأ بكلمة خطأ في بناء الجملة بالقرب من حرف إس
'Incorrect syntax near 's حيث إس تمثل الحرف الذي جاء بعد الحركه المقصوده
كود :
da = New SqlDataAdapter("select NameOfMov From MovTable where NameOfMov = '" & Trim(NameSearchTB.Text) & "'", sqlcon)
da.Fill(MovieSearchdt)
فالخلل هو في السطر الأول الخاص بتنفيذ عملية البحث
فالجمله في حد ذاتها غير صحيحه
يجب أن يتم التعديل عليها حتى يتم تنفيذ الأمر وتعبئة الجدول
ربما يكون هناك أكواد أقرب للحل كالمثال الذي أدرجته الأن ولكن التعديل على الجمله ذاتها وإصلاحها هو الذي أبحث عنه
كفائدة قبل كل شيء
أنا عارف إني ممكن أكون أزعجتك بس المعذرة يا غالي
إبداعك يستحق التقدير والله
شكرا لك
رأيي تجهز مثال جديد بسيط جدا وتجربه فان بقيت المشكلة ترفعه للنظر فيه.
PHP كود :
da.SelectCommand.CommandText = "insert into tb(title,body) values(@title,@body)"
da.SelectCommand.Parameters.AddWithValue("@title", TextBox1.Text)
da.SelectCommand.Parameters.AddWithValue("@body", TextBox2.Text)
بعد كذا لا اظن اني ساتمكن من مساعدتك هذا كل مالدي.
السلام عليكم ورحمة الله وبركاته
اعتقد الحل بسيط يمكنك استخدام sql parameters مثال على ذلك
كود :
Public Sub Insert_Customer(ByVal Cus_ID As Int32, ByVal CusName As String, ByVal CusPhone As String, ByVal CusAddress As String)
Dim Cmd As New SqlCommand
With Cmd
.Connection = Con
.CommandType = CommandType.Text
.CommandText = "Insert Into Customer_Tbl ( Cus_ID,CusName,CusPhone,CusAddress)values(@Cus_ID,@CusName,@CusPhone,@CusAddress)"
.Parameters.Clear()
.Parameters.AddWithValue("@Cus_ID", SqlDbType.Int).Value = Cus_ID
.Parameters.AddWithValue("@CusName", SqlDbType.VarChar).Value = CusName
.Parameters.AddWithValue("@CusPhone", SqlDbType.VarChar).Value = CusPhone
.Parameters.AddWithValue("@CusAddress", SqlDbType.VarChar).Value = CusAddress
End With
If Con.State = 1 Then Con.Close()
Con.Open()
Cmd.ExecuteNonQuery()
Con.Close()
MsgBox("تم إضافة بيانات العميل بنجاح", MsgBoxStyle.Information, "حفظ")
Cmd = Nothing
End Sub
وفي زر الحفظ تضع الصب وتمرر له اسماء الاداوت
كود :
Insert_Customer_Tbl(Cus_ID.Text, CusName.Text, CusPhone.Text, CusAddress.Text)
استخدم الكود التالي لجملة الحفظ
Public con As New SqlConnection("server = GAZA-PC; database=books; integrated security =true")
If con.State = ConnectionState.Closed = False Then con.Close()
con.Open()
Dim cmd As New SqlCommand
cmd.Connection = con
cmd.CommandType = CommandType.Text
cmd.CommandText = "insert into hedar (name,phone,jawwal,fax,email,adress) values( @name,@phone,@jawwal,@fax,@email,@adress)"
cmd.Parameters.AddWithValue("@name", tb1.Text)
cmd.Parameters.AddWithValue("@phone", TextBox5.Text)
cmd.Parameters.AddWithValue("@jawwal", TextBox2.Text)
cmd.Parameters.AddWithValue("@fax", TextBox3.Text)
cmd.Parameters.AddWithValue("@adress", TextBox1.Text)
cmd.Parameters.AddWithValue("@email", TextBox4.Text)
cmd.ExecuteNonQuery()
con.Close()
MsgBox("تمت الاضافه بنجاح", MsgBoxStyle.Information, "اضافه بيانات المكتبه")
Catch ex As Exception
MsgBox(ex.Message)
End Try
الكود بالمرفق
بلغني في حال زبط أو ما زبط وشكرا
(06-04-20, 10:59 PM)hashemb1978 كتب : [ -> ]استخدم الكود التالي لجملة الحفظ
Public con As New SqlConnection("server = GAZA-PC; database=books; integrated security =true")
If con.State = ConnectionState.Closed = False Then con.Close()
con.Open()
Dim cmd As New SqlCommand
cmd.Connection = con
cmd.CommandType = CommandType.Text
cmd.CommandText = "insert into hedar (name,phone,jawwal,fax,email,adress) values( @name,@phone,@jawwal,@fax,@email,@adress)"
cmd.Parameters.AddWithValue("@name", tb1.Text)
cmd.Parameters.AddWithValue("@phone", TextBox5.Text)
cmd.Parameters.AddWithValue("@jawwal", TextBox2.Text)
cmd.Parameters.AddWithValue("@fax", TextBox3.Text)
cmd.Parameters.AddWithValue("@adress", TextBox1.Text)
cmd.Parameters.AddWithValue("@email", TextBox4.Text)
cmd.ExecuteNonQuery()
con.Close()
MsgBox("تمت الاضافه بنجاح", MsgBoxStyle.Information, "اضافه بيانات المكتبه")
Catch ex As Exception
MsgBox(ex.Message)
End Try
الكود بالمرفق
بلغني في حال زبط أو ما زبط وشكرا
جملة الحفظ التي وضعها الأخ سعود مشكوراً في الرد السابق والتي وضعها الجميع هنا مشكورين بما فيها الجمله التي وضعتها أنت جميعها تعمل بشكل جيد لا غبار عليه
ولكن لازالت هناك مشكلة الإستعلام عن العمل والتحقق من وجوده قبل حفظه
هذه الجملة التي لم أجد لها حلا حتى الأن
والجملة التي أستخدمها هي التالية
كود :
da = New SqlDataAdapter("select NameOfMov From MovTable where NameOfMov = '" & Trim(NameSearchTB.Text) & "'", sqlcon)
da.Fill(MovieSearchdt)
وهي تنجح في الإستعلام عن جميع الأسماء ما عدا الأسماء التي تحمل علامة الفاصلة فالأمر يتوقف عن التنفيذ وتنتج رسالة الخطأ !
فلو جرب أحدكم تركيب جملة إستعلام وليست حفظ إستعلام فقط ونجحت ياليت ينزلها هنا للفائدة
PHP كود :
"select NameOfMov From MovTable where NameOfMov = '" & Trim(NameSearchTB.Text) & "'"
عسى يكون خير اخي الكريم
هل تدري ان استخدام هذا النمط يعتبر ثغرة؟
وهي ماتسمى
sql injection
اعتذر ان كنت قد سببت لك اي ازعاج.
لكن جرب حقن كلمة or عند تسجيل الدخول.
(07-04-20, 04:17 PM)سعود كتب : [ -> ]PHP كود :
"select NameOfMov From MovTable where NameOfMov = '" & Trim(NameSearchTB.Text) & "'"
عسى يكون خير اخي الكريم
هل تدري ان استخدام هذا النمط يعتبر ثغرة؟
وهي ماتسمى sql injection
اعتذر ان كنت قد سببت لك اي ازعاج.
لكن جرب حقن كلمة or عند تسجيل الدخول.
أخي الكريم سعود
ليس هناك داعي للإعتذار
ردودك ومواضيعك ومشاركاتك جميعها أعتبرها إضافة جميلة للجميع
عموما الطرق القديمه في الحفظ والإستعلام ربما تكون فعاله في تنفيذ البرامج البسيطه المحدودة الإستخدام
أما إذا كان البرنامج واسع الإستخدام فلابد أن تكون البيانات أكثر حماية بلا شك
في علوم البرمجه الوقوع في الخطأ هو أجمل طريق للصواب
عموما لازالت المشكلة قائمة في الإستعلام
وحقن or الذي اشرت إليه لست ملماً به بشكل كامل
فأنا عن البرمجه أبتعد فصولا وأعود
وهذه مشكلتي !
فعلا جربتها وحدثت المشكلة .
لكن لماذا انت مصر(من الاصرار يعني لاتريد اي بديل؟) على تلك الطريقة؟
(07-04-20, 05:52 PM)سعود كتب : [ -> ]فعلا جربتها وحدثت المشكلة .
لكن لماذا انت مصر(من الاصرار يعني لاتريد اي بديل؟) على تلك الطريقة؟
معاك حق هناك طرق كثير ناجحه
ولكن أحيانا تمسك معاك وبقوه رغبه قوية لحل خطأ في كود معين فقط حتى تستمتع بالمعلومه في حد ذاتها !
صدقني فالفرق كبير يوم تنتصر على الخطأ وتصلحه وبين تهميشه وتجاهله والبحث عن طريق أخر !
عموما أعتذر إني أشغلتكم معاي وسيبقى البحث قائم عندي وفي حال وصلت لحل سأضعه هنا للفائده !