دسته بندی ها
11:34 1400/01/04

مرتب سازی اطلاعات در DataGrid و خطای Incorrect syntax near the keyword And

مشخصات سوال کننده :
کاربر : Alireza     امتیاز کاربر : 115     رتبه کاربر : 13
دسته بندی : سی شارپ WPF

به این سوال امتیاز بدهید    2
تعداد بازدید این سوال : 4468
1 نظر
saedbfd : یک Breakpoint روی خط آخر که Return searchstring هست بذارید. و کوئری ساخته شده در این متغیر رو هم در سوالتون قرار بدید تا ما بتونیم ببینیم. چون کوئری شما در نهایت در متغیر searchstring ساخته میشه و خطا هم داخل همین کوئری هست.

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 03:02 1400/01/04
هوش مصنوعی

پاسخ هوش مصنوعی

برای مرتب سازی ردیف ها در DataGrid شما باید مطمین شوید که در بخش SQL خود، دستورات مرتب سازی به درستی قرار داده شده است. همچنین، خطای "Incorrect syntax near the keyword 'And'" معمولاً به این دلیل است که در رشته ی SQL شما، کلمه "And" در جایی قرار دارد که انتظار نمی رود. به طور خاص، اگر شرطی وجود نداشته باشد که بتواند با "And" همراه شود، این خطا به وجود می آید.

ابتدا در متد SearchStatement بررسی کنید که آیا شرایط شما دارای مقداری هستند یا خیر. اگر هیچ شرطی اعمال نشود، "And" باید حذف شود. کد بازنویسی شده به شکل زیر است:

private string SearchStatement()
{
    string searchstring = string.Empty;
    if (calenderAz.Text.Trim() != "" && calenderTa.Text.Trim() != "")
    {
        searchstring += " And CustomerStartDate Between '" + String.Format("{0:yyyy/MM/dd}",
            FormatStringDate(calenderAz.Text.Trim())) + "' And '" + String.Format("{0:yyyy/MM/dd}",
            FormatStringDate(calenderTa.Text.Trim())) + "'";
    }
    if (txtName.Text != "")
    {
        searchstring += " And CustomerName Like '%" + txtName.Text.Trim() + "%'";
    }
    if (!string.IsNullOrEmpty(txtTel.Text.Trim()))
    {
        searchstring += " And CustomerTel1 Like '%" + txtTel.Text.Trim() + "%'";
    }
    if (txtSerial.Text != "")
    {
        searchstring += " And CustomerSerial Like '%" + txtSerial.Text.Trim() + "%'";
    }
    return searchstring;
}

در اینجا، ابتدا بررسی کنید که آیا فیلدهای تاریخ دارای مقدار هستند و سپس شرط مربوط به آن ها را به searchstring اضافه کنید. این کار به جلوگیری از بروز خطای نحوی کمک می کند.

برای مرتب سازی DataGrid، شما می توانید در دستور SQL خود به صورت زیر عمل کنید:

var query = DB.Database.SqlQuery<VwCustomer>("Select * From VwCustomer Where 1=1 " + SearchStatement() + " Order by CustomerID");

این تغییرات به شما کمک می کند تا داده ها به صورت مرتب بارگذاری شوند و خطای نحوی "Incorrect syntax near the keyword 'And'" را نیز اصلاح کند.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : Sowgandi 11:49 1400/01/04

سلام و وقت بخیر

برای رفع مشکل هنگام لود دیتاگرید در سی شارپ سلکت خودتون رو بر اساس کد مشتری Sort کنید.

var C = database.Database.SqlQuery<VwCustomer>("Select * from VwCustomer where 1=1 Order by CustomerID").ToList();

dataGrid.ItemsSource = C;

همونطور که تو کد بالا میبینید دقت داشته باشید Order by CustomerID باید به آخر سلکت اضافه بشه که باعث میشه بر اساس CustomerID مرتب بشه

به این پاسخ امتیاز بدهید    1
امتیاز: 876 رتبه: 3
1 نظر
Alireza : اون کار رو کردم خطا داده. خطا رو نمایش دادم

امتیاز کاربر : 115   رتبه کاربر : 13   تاریخ ثبت : 02:50 1400/01/04
پاسخ دهنده : Sowgandi 15:14 1400/01/04

دوست عزیز تو پاسخ قبلی عرض کردم  Order by CustomerID باید به آخر سلکت اضافه بشه. لطفا کدتون رو به شکل زیر تغییر بدید.

  var query = DB.Database.SqlQuery<VwCustomer>("Select * From VwCustomer Where 1=1 " + SearchStringForShowCustomerShahr() + " Order by CustomerID");

 

به این پاسخ امتیاز بدهید    2
امتیاز: 876 رتبه: 3
2 نظر
Alireza : ممنون عزیز حل شد دستتون درد نکنه

امتیاز کاربر : 115   رتبه کاربر : 13   تاریخ ثبت : 03:26 1400/01/04
Sowgandi : خواهش میکنم

امتیاز کاربر : 876   رتبه کاربر : 3   تاریخ ثبت : 04:30 1400/01/04
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود