PDA

View Full Version : نحوه نوشتن دستور مناسب



behroz1387
جمعه 03 مهر 1388, 01:31 صبح
دوستان عزيز با سلام
من يك جدول دارم كه داراي چند فيلد است آيا امكان دارد كه يك فيلد را در دوجاي متفاوت در يك گزارش بياورم بر اساس دو شرط مختلف
مثلا بنويسم كه اگر در تكست باكس عدد 5 وارد شد مقدار برگشتي يكي از فيلدهاي جدول را يكبار بر اساس 5 و يكبار بر اساس كمتر از 5 را برايم در يك گزارش نشان دهد

behroz1387
جمعه 03 مهر 1388, 14:44 عصر
nدوستان عزيز كسي نيست بگه يك فيلد را مي تونم دو بار در يك گزارش با دو شرط مختلف بيارم

behroz1387
شنبه 04 مهر 1388, 21:39 عصر
دوستان عزيز سوالم سخته يا نامفهومه

sara.f
شنبه 04 مهر 1388, 21:43 عصر
دوستان عزيز با سلام
من يك جدول دارم كه داراي چند فيلد است آيا امكان دارد كه يك فيلد را در دوجاي متفاوت در يك گزارش بياورم بر اساس دو شرط مختلف
مثلا بنويسم كه اگر در تكست باكس عدد 5 وارد شد مقدار برگشتي يكي از فيلدهاي جدول را يكبار بر اساس 5 و يكبار بر اساس كمتر از 5 را برايم در يك گزارش نشان دهد
سلام
آره، چرا نمیشه؟
اگر قراره بر روی یک فیلد به طور مثال در دو باتن مختلف، شرط های مختلف بگذارید، مانعی نداره، چون قرار نیست که کد هر دو باتن را با هم اجرا کنید.
نمی دونم که منظورتون را درست متوجه شدم و جوابم مورد نظر شمابود یا نه؟

behroz1387
شنبه 04 مهر 1388, 21:54 عصر
دوست عزيز من يك فيلد ماه و يك فيلد موجودي دارم مي خواهم كه با وارد كردن يك ماه خاص در تكست باكس و زدن يك دكمه اطلاعات موجوديم در دو ستون قرار بگيرد كه يك ستون موجودي ماه وارد شده در تكست باكس را نشان دهد و يك ستون تجمع موجودي تا ماه وارد شده در تكست باكس
اميدوارم دقيق توضيح داده باشم

sara.f
شنبه 04 مهر 1388, 21:58 عصر
دوست عزيز من يك فيلد ماه و يك فيلد موجودي دارم مي خواهم كه با وارد كردن يك ماه خاص در تكست باكس و زدن يك دكمه اطلاعات موجوديم در دو ستون قرار بگيرد كه يك ستون موجودي ماه وارد شده در تكست باكس را نشان دهد و يك ستون تجمع موجودي تا ماه وارد شده در تكست باكس
اميدوارم دقيق توضيح داده باشم
آهان، حالا بهتر شد.
کجا گزارش می گیرید؟ در crystal? گزارشتون را کجا نمایش می دید؟

behroz1387
شنبه 04 مهر 1388, 22:01 عصر
در ديتا گريد ويو نمايش مي دم

sara.f
شنبه 04 مهر 1388, 23:34 عصر
در ديتا گريد ويو نمايش مي دم

دو.باره سلام
ببخشید دیر شد.
واست یه کد نوشتم که این کارو انجام میده ولی نتیجه را در دو تا list box نشون میده.


privatevoid button18_Click(object sender, EventArgs e)
{
DataTable tabe= newDataTable();
SqlDataAdapter adapter = newSqlDataAdapter();
adapter0.SelectCommand = newSqlCommand("select code,fname from employee ", objconn);
objconn.Open();
adapter.Fill(tabe);
objconn.Close();
for (int i = 0; i < tabe.Rows.Count; i++)
{
if (System.Convert.ToInt32(tabe.Rows[i]["code"]) >= System.Convert.ToInt32(textBox11.Text))
{
listBox1.Items.Add(tabe.Rows[i]["fname"].ToString());
}
else
listBox2.Items.Add(tabe.Rows[i]["fname"].ToString());
}

}


ولی برای اینکه در gridview نشون بده، باید بهش بگیم که مثلا آنهایی که بزرگتر از ماه وارد شده هستند را در ستون 1 و بقیه را در ستون 2 بنویس، ولی الان نمی دونم، دارم فکر می کنم.

sara.f
یک شنبه 05 مهر 1388, 00:29 صبح
دوست عزیز پیدا کردم
باید برای data grid view هم میتونی اینطوری بنویسی.


privatevoid button18_Click(object sender, EventArgs e)
{
dataGridView1.RowCount = 1;
dataGridView1.ColumnCount = 2;
dataGridView1.Rows.Add();
DataTable tabe = newDataTable();
SqlDataAdapter adapter = newSqlDataAdapter();
adapter.SelectCommand = newSqlCommand("select code,fname from employee ", objconn);
objconn.Open();
adapter.Fill(tabe);
objconn.Close();
for (int i = 0; i < tabe.Rows.Count; i++)
{
if (System.Convert.ToInt32(tabe.Rows[i]["code"]) >= System.Convert.ToInt32(textBox11.Text))
{
dataGridView1[0, dataGridView1.RowCount - 2].Value = tabe.Rows[i]["fname"].ToString();
dataGridView.RowCount++;
dataGridView1.Refresh();
}
else
{
dataGridView1[1, dataGridView1.RowCount - 2].Value = tabe.Rows[i]["fname"].ToString();
dataGridView1.RowCount++;
dataGridView1.Refresh();
}
}
}


پیروز باشی :لبخندساده:

behroz1387
یک شنبه 05 مهر 1388, 21:43 عصر
دوست عزيز با تشكر از توجه شما
اين كار شما مشكل را در اين مقطع حل مي كند اما اگه نياز باشد كه چند يلد ديگه هم به ديتا گريد ويو اضافه شود چكار بايد بكني خيلي باهاش كار كردم نشد مي شه كمك كنيد

sara.f
یک شنبه 05 مهر 1388, 22:17 عصر
دوست عزيز با تشكر از توجه شما
اين كار شما مشكل را در اين مقطع حل مي كند اما اگه نياز باشد كه چند يلد ديگه هم به ديتا گريد ويو اضافه شود چكار بايد بكني خيلي باهاش كار كردم نشد مي شه كمك كنيد
خب باید خطی که در آن فیلد را به data grid نسبت می ده را برای فیلدهای دیگر بنویسیم
مثلا

dataGridView1[2, dataGridView1.RowCount - 2].Value = tabe.Rows[i]["office"].ToString();

behroz1387
یک شنبه 05 مهر 1388, 22:40 عصر
استاد عزيز من يك توضيح مختصري بدم كه تنها براي يك فيلد مي خواهم دو حالت شرط داشته باشه براي بقيه فيلدها با يك حالت شرط گزارش بگيره من كد را به اين صورت نوشتم اما در موقع اجرا ارور مي ده
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
privatevoid button18_Click(object sender, EventArgs e)
{
dataGridView1.RowCount = 1;
dataGridView1.ColumnCount = 2;
dataGridView1.Rows.Add();
DataTable tabe = newDataTable();
SqlDataAdapter adapter = newSqlDataAdapter();
adapter.SelectCommand = newSqlCommand("select code,fname,lname from employee ", objconn);
objconn.Open();
adapter.Fill(tabe);
objconn.Close();
for (int i = 0; i < tabe.Rows.Count; i++)
{
if (System.Convert.ToInt32(tabe.Rows[i]["code"]) >= System.Convert.ToInt32(textBox11.Text))
{
dataGridView1[0, dataGridView1.RowCount - 2].Value = tabe.Rows[i]["fname"].ToString();
dataGridView.RowCount++;
dataGridView1.Refresh();
}
else
{
dataGridView1[1, dataGridView1.RowCount - 2].Value = tabe.Rows[i]["fname"].ToString();
dataGridView1[2, dataGridView1.RowCount - 2].Value = tabe.Rows[i]["lname"].ToString();

dataGridView1.RowCount++;
dataGridView1.Refresh();
}
}
}

sara.f
یک شنبه 05 مهر 1388, 22:54 عصر
به خاطر اینکه به ازای هر ستونی که دارید باید این را تغییر بدی.


dataGridView1.ColumnCount = 2;
مثلا سه تا ستون داری بنویس

dataGridView1.ColumnCount = 3;
حله؟!

behroz1387
یک شنبه 05 مهر 1388, 23:13 عصر
استاد عزيز آيا اگه بخوايد بجاي ديتا گريد ويو از كريستال ريپورت استفاده كني كد نويسي آن زياد تفاوت دارد اگه بشه يك توضيح كامل با كد مثل توضيحي كه براي قبلي داديد بنويسيد ممنون مي شم

sara.f
یک شنبه 05 مهر 1388, 23:44 عصر
استاد عزيز آيا اگه بخوايد بجاي ديتا گريد ويو از كريستال ريپورت استفاده كني كد نويسي آن زياد تفاوت دارد اگه بشه يك توضيح كامل با كد مثل توضيحي كه براي قبلي داديد بنويسيد ممنون مي شم
می تونی دو combobox یا listbox بذاری و مثلا بگی کسانی که کدشون بیشتر ازمقدار وارد شده در textbox هست را در combobox1 و اونایی که کمتره را در combobox2 نشون بده و حالا هر کدوم از کدها را انتخاب کردی گزارششون را نشون بده.