تحية طيبة
واجهتنى مشكلة حينما حاولت إدراج نص يحتوى على علامة single quote (') من جملة Update Table !!
مثل : "Basic's"
حيث شرط أساسى إدراج النص كاملاً بدون حذف ...
أرجو الإفادة للأهمية
تحية طيبة
واجهتنى مشكلة حينما حاولت إدراج نص يحتوى على علامة single quote (') من جملة Update Table !!
مثل : "Basic's"
حيث شرط أساسى إدراج النص كاملاً بدون حذف ...
أرجو الإفادة للأهمية
اخي الفاضل : هاني
السلام عليكم ورحمة الله وبركاته
و جمعة مباركة إن شاء الله
الحل يكون بهذه الطريقة
لاحظ الجدول به اسمين ونريد تحديث السجلات بكلمة Basic's
من النموذج الذي عليه زر أمر التحديث
والذي سيكون الكود به كالتالي
Private Sub cmdUpdate_Click() Dim StrSQL As String DoCmd.SetWarnings False StrSQL = "UPDATE tblA SET tblA.strName = ""Basic's""" DoCmd.RunSQL StrSQL DoCmd.SetWarnings True DoCmd.OpenTable "tblA" End Sub
الآن هنا الحل :
لاحظ كيف تم استخدام علامات التنصيص للكلمة Basic's
وعند الضغط على زر الأمر ستكون النتيجة بهذا الشكل
تم تحديث الجدول بالكلمة المطلوبه كاملة
بالتوفيق
شكراً أختى الغالية على سرعة التجاوب ولهذا الحل المقدم ..
ولكن الجملة عند تنفيذها داخل الاستعلام
UPDATE tblA SET tblA.strName = ""Basic's""
تعطى هذا الخطاء

حيث أننى أحتاجها جملة سيكوال لاستخدامها داخل لغة اخرى...
وقد بحثت كثيراً داخل عدة منتديات اجنبية ولكن دون جدوى..
مع تحياتى
اخي الفاضل هاني
الكود يختلف عن الإستعلام عند استخدام علامات التنصيص
اذا اردنا ان نضع التعبير في الإستعلام سيكون بهذه الطريقة
UPDATE tblA SET tblA.strName = "Basic's";
قم بتشغيل الإستعلام Q1
بالتوفيق
بالضبط هذه المشكلة التى تواجهنى..
أننى لا أستطيع كتابة علامة التنصيص التالية (") داخل جملة التحديث لأن اللغة التى أعمل عليها لا تتعرف على علامة التنصيص داخل الجملة لذا نستبدلها بعلامة تنصيص أحادية كالتالية (')
بمعنى آخر عند كتابة الجملة السابقة نكتبها هكذا
UPDATE tblA SET tblA.strName = 'Basic's';
وهذا ما يحدث عنه الخطأ..
لذا ... هل يمكن استبدال علامة التنصيص المزدوجة بـ char مثلاً.. أو أى علامتين نضع بينهم متغير نصى دون التقيد بما يحويه هذا ما أفكر فيه حالياً
ملحوظة :
لم اكتب هذا السؤال فى قسم C# بل هنا لمعرفتى الشخصية بإمكانيات قسم الأكسس
عفواً على الاطالة
وشكراً لسعة صدركم
حسنا اخي هاني
اكتبها بأحد هذه الطرق في #C
UPDATE tblA SET tblA.strName ="\Basic's"";
UPDATE tblA SET tblA.strName =@"\Basic's"";
UPDATE tblA SET tblA.strName ="\"" + "Basic's" + "\"";
UPDATE tblA SET tblA.strName ="\"Basic's\"";
C#
const string quote = "\""; textBox1.Text = "She said, " + quote + "You deserve a treat!"+ quote ;
C#
private void InsertQuote(){
textBox1.Text = "She said, \"You deserve a treat!\" ";
}C#
private void InsertAscii(){
textBox1.Text = "She said, " + '\u0022' + "You deserve a treat!" + '\u0022';
}http://msdn.microsoft.com/en-us/library/267k4fw5.aspx
بالتوفيق
تم تعديل هذه المشاركة بواسطة zahrah في 14 يناير 2012 في 00:25
مع فائق التحية والتقدير لمجهودكم المبذول فى رقى قسم الأكسس...
قمت بالعمل على بناء جملة التحديث بكافة الطرق السابقة ولكن للاسف النص الذى يتم إضافته بواسطة متغير .. معقد بعض الشىء.. فهو يحتوى على العديد من الكلمات المحجوزة والرموز...
ولكن قد وفقت فى الوصول للمطلوب بطريقة أخرى عن طريق الـ Parameters كالتالى:
internal OleDbCommand cmdH = new OleDbCommand();
private int ExecuteNonQueryParam(string Sql, string colName, string colValue)
{
cmdH.Connection = conHStr;
int afectRow = 0;
try
{
openConnection();
cmdH.CommandText = Sql;
cmdH.Parameters.Add(colName, OleDbType.LongVarChar);
cmdH.Parameters[colName].Value = colValue;
afectRow = cmdH.ExecuteNonQuery();
closeConnection();
MessageBox.Show("تمت العملية بنجاح");
}
catch (OleDbException ex)
{
MessageBox.Show(ex.Message);
afectRow = -1;
}
finally
{
cmdH.Dispose();
closeConnection();
}
return afectRow;
}
public int MyExecuteParam(string Sql, string colName, string colValue)
{
return ExecuteNonQueryParam(Sql, colName, colValue);
}
// ويتم الاستدعاء كالتالى مع تعديل المتغير
string strAdd = ev.Document.Text.ToString();
clsDb.MyExecuteParam("UPDATE tblScode SET sCode = ? WHERE idSCode = " + trvCat.SelectedNode.Tag.ToString() + ";", "sCode", strAdd);لذا وجب التنويه لعل أحد الأعضاء تواجهه نفس المشكلة..
وشكراً لتواصلكم المتميز.
تم تعديل هذه المشاركة بواسطة هانى عوض في 16 يناير 2012 في 00:26