0 امتیاز

این شرط رو برای جستجو در دیتابیس نوشتم ولی کار نمی کنه. میخواستم یه شرط ture و false بزارم. در صورتی که: داخل دیتا بیس row بود که ستون productID یه عدد مشخص باشه و name خالی باشه.

یا

یک row باشه که ستون productID یه عدد مشخص و name هم یه نام مشخص داشته باشه.

string quary = "Select * From [Archive] where [ProductID]=@productID and [Name]='' or ([ProductID]=@productID and [Name]=@name)";
SqlCommand command = new SqlCommand(quary, connection);
command.Parameters.AddWithValue("@productID", productID);
command.Parameters.AddWithValue("@name", name);
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = command;
adapter.Fill(dataSet);
int i = dataSet.Tables[0].Rows.Count;
if (i > 0) { return true; } else { return false; }

 

1 پاسخ

0 امتیاز

میخایی داخل ردیف چی باشه 

ر صورتی که: داخل دیتا بیس row بود که ستون productID یه عدد مشخص باشه و name خالی باشه


 

داخل دیتابیس همیشه row هست بدون ردیف که اطلاعات داخلش ذخیره نمیشه 

ستوان id هم که عدد مشخص باشه اونم باید شرط جستجو بزارید براش 

 

Name ProductID row
windows 12345 1
  8964644 2
  12345 3

میخوام اینطوری باشه که مقدار windows و 12345 رو بهش بدم. و ردیف 1 و 3 رو انتخاب کنه.

این کوئری ک زدم ک کار نمی کنه.

توسط (192 امتیاز) 9

میتونید از این روش استفاده کنید ببینید مقدار رو  میگیره و تو ذیتاگرید نشون میده

 




  OleDbConnection cnn;
        OleDbCommand cmd;
        OleDbDataAdapter adap;




cnn = new OleDbConnection(ConnStr.Connected);
                cmd = new OleDbCommand();
                cmd.Connection = cnn;
                 cmd.CommandText = "Select * From [Archive] Where  ProductID LIKE @id OR [Name] LIKE @name";
               cmd.Parameters.AddWithValue("@id", "%" + txtsearchtbl.Text + "%");
              cmd.Parameters.AddWithValue("@name", "%" + txtsearchtbl.Text + "%");
                DataTable MyDT = new DataTable();
                adap = new OleDbDataAdapter();
                adap.SelectCommand = cmd;
                adap.Fill(MyDT);
                dataGridView1.DataSource = MyDT;
                dataGridView1.DefaultCellStyle.BackColor = Color.FloralWhite;

 

توسط (7,164 امتیاز) 4 7 141

خب این شرط شما اگر name خالی باشه رو در نظر نگرفته.

این حدول رو در نظر بگیرید. تو شرطی ک نوشتید هر سه ردیف انتخاب میشن. در صورتی ک من نمی خوام ردیف 2 انتخاب بشه

Name ProductID row
windows 2017 12345 1
windows 2018 12345 2
  12345 3
توسط (192 امتیاز) 9

                 cmd.CommandText = "Select * From [Archive] Where  ProductID LIKE @id AND [Name] ='"+null+"'";

 

 

اینم مثال خوبیه

try
{
    FormatGrid();

    OleDbConnection con = new OleDbConnection(path);
    con.Open();
    //OleDbDataAdapter da = new OleDbDataAdapter("Select * from ItemMast where Icode like '" + txtICode.Text.Trim() + "%' order by Iname", con);
    OleDbDataAdapter da = new OleDbDataAdapter("Select * from ItemMast where IName like '" + txtICode.Text.Trim() + "%' order by IName", con);
    DataSet ds = new DataSet();
    da.Fill(ds, "ItemMast");
    DataTable dt = ds.Tables["ItemMast"];
    if (dt.Rows.Count > 0)
    {
        int i = 1;
        MSGrid1.Rows = dt.Rows.Count + 1;
        foreach (DataRow dr in dt.Rows)
        {
            MSGrid1.set_TextMatrix(i, 0, i.ToString());
            MSGrid1.set_TextMatrix(i, 1, dr["ICode"].ToString());
            MSGrid1.set_TextMatrix(i, 2, dr["IName"].ToString());
            MSGrid1.set_TextMatrix(i, 3, dr["SubSubGroupName"].ToString());
            MSGrid1.set_TextMatrix(i, 4, dr["GroupName"].ToString());
            MSGrid1.set_TextMatrix(i, 5, dr["SubGroupName"].ToString());
            //MSGrid1.set_TextMatrix(i, 4, dr["ICode"].ToString());
            //MSGrid1.set_TextMatrix(i, 3, dr["AvlQty"].ToString());

            double st1 = double.Parse(dr["AvlQty"].ToString());

            if (CheckDecimal(st1) == false)
                MSGrid1.set_TextMatrix(i, 6, st1.ToString("0"));
            else
                MSGrid1.set_TextMatrix(i, 6, st1.ToString());     

            i = i + 1;
        }
    }
    con.Close();
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

 

 

 و این

string rowHostName = row.Cells["HostName"].Value.ToString();
string rowUsers = row.Cells["Users"].Value.ToString();
string rowPSName= row.Cells["PS_NAME"].Value.ToString();

if (arrHostName.Contains(rowHostName) 
    || arrUsers.Contains(rowUsers) 
    || arrPSName.Contains(rowPSName))
{ 
    row.Appearance.BackColor = Color.Yellow;
    row.Appearance.FontData.Bold = Infragistics.Win.DefaultableBoolean.True;
}

 

ویرایش شده توسط
توسط (7,164 امتیاز) 4 7 141

هیچکدوم جواب نداد. ولی رو ک البته خودم دارم ازش استفاده میکنم.

منتهی مشکل من اینکه این کوئری رو وقتی تو sql manegment اجرا می کنم جواب میده و مقدار بر می گردونه. ولی تو خود برنامه نمی تونه row رو پیدا کنه!

string query = "Select * From [Archive] Where  ( [ProductID] = "+ productID + " And [Name] = '' ) Or ( [ProductID] = "+ productID + " And [Name] = '"+name+"' ) ";

 

توسط (192 امتیاز) 9
سوال جدید

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,924 کاربر

دسته بندی ها

...