PDA

View Full Version : sqlcommand



zahra.mf
پنج شنبه 26 مرداد 1391, 15:36 عصر
سلام
من یه کد به صورت زیر دارم

SqlCommand sqlCM = new SqlCommand("select tedad from [faktor forush moshtari] where kala_ID={0}", con);

میخوام به kala_ID بعدن مقدار بدم ولی نمیدونم چجور این کار و بکنم

اگه تو sqlcommand این دستور sql ننویسم مثل این کد که پایینه مقداردهی میکنم

sql = @"insert into [faktor forush moshtari](kala_ID,namek,gheymatkala,moshtari_ID,gheymatekol ,date,tedad)
values ({0},N'{1}',N'{2}',{3},N'{4}',N'{5}',{6})";
sql = string.Format(sql, id,
(textBox10.Text.Replace("'", "''")),
(textBox11.Text.Replace("'", "''")),
(textBox9.Text.Replace("'", "''")),

ولی میخوام دستور sql و توی sqlcommand بنویسم

ali_habibi1384
پنج شنبه 26 مرداد 1391, 15:41 عصر
سلام
من یه کد به صورت زیر دارم

SqlCommand sqlCM = new SqlCommand("select tedad from [faktor forush moshtari] where kala_ID={0}", con);

میخوام به kala_ID بعدن مقدار بدم ولی نمیدونم چجور این کار و بکنم

اگه تو sqlcommand این دستور sql ننویسم مثل این کد که پایینه مقداردهی میکنم

sql = @"insert into [faktor forush moshtari](kala_ID,namek,gheymatkala,moshtari_ID,gheymatekol ,date,tedad)
values ({0},N'{1}',N'{2}',{3},N'{4}',N'{5}',{6})";
sql = string.Format(sql, id,
(textBox10.Text.Replace("'", "''")),
(textBox11.Text.Replace("'", "''")),
(textBox9.Text.Replace("'", "''")),

ولی میخوام دستور sql و توی sqlcommand بنویسم
سه بار سوالتونو خوندم اما نفهميدم چي ميخواين دقيقا؟

zahra.mf
پنج شنبه 26 مرداد 1391, 15:53 عصر
:خجالت: چون به جوابش به صورت خیلی سریع نیاز دارم:لبخند:

من میخوام بر اساس kala_ID دستور select و انجام بدم مثل این کد

sql = "select moshtari_ID,namem,address,tell from moshtari where moshtari_ID={0}";
sql = string.Format(sql,
(textBox9.Text.Replace("'", "''")));
که kala_ID و بعدن از مقدار textBox9 میخونه ولی الان من میخوام دستور select و اینجوری بنویسم

SqlCommand sqlCM = new SqlCommand("select tedad from [faktor forush moshtari] where kala_ID={0}", con);

int tedad = (int)sqlCM.ExecuteScalar();
و یه مقدار id تعریف کردم میخوام بگم بر اساس اون مقدار بده به جای textBox نمیدونم چه جور بکنم این کار و

بهتر گفتم الان؟:ناراحت:

zahra.mf
پنج شنبه 26 مرداد 1391, 17:14 عصر
سه بار سوالتونو خوندم اما نفهميدم چي ميخواين دقيقا؟

هنوز هم واضح نیست؟؟؟؟

ali_habibi1384
پنج شنبه 26 مرداد 1391, 17:24 عصر
دستور داخل sqlcommand رو به شكل زير تغيير بديد:

"select tedad from [faktor forush moshtari] where kala_ID="+text1.text

zahra.mf
پنج شنبه 26 مرداد 1391, 17:34 عصر
دستور داخل sqlcommand رو به شكل زير تغيير بديد:

"select tedad from [faktor forush moshtari] where kala_ID="+text1.text

کد من اینجوریه که اگه جمه کالاهای موجود از جمع تعدادی که درخواست شده بیشتر بود پیام خطا بده این کاری که گفتید و کردم فایده نداره


SqlConnection con = new SqlConnection();
string cs = "Data source=.\\SQLEXPRESS;Attachdbfilename=|DataDirecto ry|\\db\\anbar2.mdf;Integrated security=true;user Instance=true";
con.ConnectionString = cs;
con.Open();
SqlCommand sqlCMD = new SqlCommand("Select sum(mojudi) From Kala", con);
int mojudi = (int)sqlCMD.ExecuteScalar();
SqlCommand sqlCM = new SqlCommand("select tedad from [faktor forush moshtari] where kala_ID="+id, con);
// sqlCM.Parameters.Add(new SqlParameter("@kala_ID",id));
//sqlCM.Parameters["@kala_ID"].Value = id;
int tedad = (int)sqlCM.ExecuteScalar();
if (mojudi < tedad)
{
MessageBox.Show("موجودی انبار کافی نیست");
}
else
{

veniz2008
پنج شنبه 26 مرداد 1391, 18:16 عصر
سلام. آیا از نام جدول فاکتور مطمئنید؟( معمولا نام جداول رو بدون فاصله نامگذاری میکنن، بهتره که نام جدول رو faktorforushmoshtari بذارید یا اینکه بینشون آندرلاین بزاری. من کد شما رو یه خورده تغییر دادم .تست کنید شاید مشکلتون حل شد.

SqlConnection con = new SqlConnection();
string cs = "Data source=.\\SQLEXPRESS;Attachdbfilename=|DataDirecto ry|\\db\\anbar2.mdf;Integrated security=true;user Instance=true";
con.ConnectionString = cs;
con.Open();
SqlDataAdapter da = new SqlDataAdapter("Select sum(mojudi) From Kala", con);
DataTable dt = new DataTable();
da.Fill(dt);
int mojudi = Convert.ToInt32(dt.Rows[0][0].ToString());
SqlCommand sqlCM = new SqlCommand("select tedad from [faktor forush moshtari] where kala_ID=" + id, con);
// sqlCM.Parameters.Add(new SqlParameter("@kala_ID",id));
//sqlCM.Parameters["@kala_ID"].Value = id;
int tedad = (int)sqlCM.ExecuteScalar();
if (mojudi < tedad)
{
MessageBox.Show("موجودی انبار کافی نیست");
}
موفق باشید.

zahra.mf
جمعه 27 مرداد 1391, 12:41 عصر
سلام. آیا از نام جدول فاکتور مطمئنید؟( معمولا نام جداول رو بدون فاصله نامگذاری میکنن، بهتره که نام جدول رو faktorforushmoshtari بذارید یا اینکه بینشون آندرلاین بزاری. من کد شما رو یه خورده تغییر دادم .تست کنید شاید مشکلتون حل شد.

SqlConnection con = new SqlConnection();
string cs = "Data source=.\\SQLEXPRESS;Attachdbfilename=|DataDirecto ry|\\db\\anbar2.mdf;Integrated security=true;user Instance=true";
con.ConnectionString = cs;
con.Open();
SqlDataAdapter da = new SqlDataAdapter("Select sum(mojudi) From Kala", con);
DataTable dt = new DataTable();
da.Fill(dt);
int mojudi = Convert.ToInt32(dt.Rows[0][0].ToString());
SqlCommand sqlCM = new SqlCommand("select tedad from [faktor forush moshtari] where kala_ID=" + id, con);
// sqlCM.Parameters.Add(new SqlParameter("@kala_ID",id));
//sqlCM.Parameters["@kala_ID"].Value = id;
int tedad = (int)sqlCM.ExecuteScalar();
if (mojudi < tedad)
{
MessageBox.Show("موجودی انبار کافی نیست");
}
موفق باشید.

اسم جدول درسته مشکل نداره اگه تو [] بذارم مشکلی پیش نمیاد این کدی که گفتید رو استفاده کردم اصلا شرط if و بررسی نمیکنه!!!

veniz2008
جمعه 27 مرداد 1391, 12:49 عصر
دستوراتی که گذاشتم درسته فقط میمونه چند چیز: 1. اون id که در select دوم گذاشتید رو چطور بدست میاری؟(کدشو بزار). 2. این id از نوع int هست؟

zahra.mf
جمعه 27 مرداد 1391, 12:52 عصر
دستوراتی که گذاشتم درسته فقط میمونه چند چیز: 1. اون id که در select دوم گذاشتید رو چطور بدست میاری؟(کدشو بزار). 2. این id از نوع int هست؟


static int id;
DataAccessLayer dal = new DataAccessLayer();
string sql;
DataTable dt = new DataTable();

private void Frmnewservice_Load(object sender, EventArgs e)
{
InputLanguage.CurrentInputLanguage =
InputLanguage.FromCulture(new System.Globalization.CultureInfo("fa-IR"));

dal.connect();
sql = "select kala_ID,namek,gheymatkala,mojudi from kala";
sql = string.Format(sql);
dt = dal.select(sql);
dataGridView3.DataSource = dt;
dal.Disconnect();
}

private void button1_Click(object sender, EventArgs e)
{
dt.Clear();
dal.connect();
sql = "select kala_ID,namek,gheymatkala,mojudi from kala where namek=N'{0}'";
sql = string.Format(sql,
(textBox8.Text.Replace("'", "''")));

dt = dal.select(sql);
if (dt.Rows.Count > 0)
{
textBox8.Clear();
dataGridView3.DataSource = dt;
}
else
{
MessageBox.Show("چنین کالایی وجود ندارد", "خطا");
dt.Clear();
}
dal.Disconnect();
}

private void button2_Click(object sender, EventArgs e)
{
dt.Clear();
dal.connect();
sql = "select moshtari_ID,namem,address,tell from moshtari where moshtari_ID={0}";
sql = string.Format(sql,
(textBox9.Text.Replace("'", "''")));
dt = dal.select(sql);
if (dt.Rows.Count > 0)
{
// textBox9.Clear();
}
else
{
MessageBox.Show("چنین مشتری وجود ندارد", "خطا");
textBox9.Clear();
dt.Clear();
}
dal.Disconnect();
}

private void dataGridView3_CellClick(object sender, DataGridViewCellEventArgs e)
{
int row = dataGridView3.CurrentRow.Index;
string val = dataGridView3[0, row].Value.ToString();
sql = "select namek,gheymatkala from kala where kala_ID={0}";
sql = string.Format(sql, Convert.ToInt32(val));
dt = dal.select(sql);
textBox10.Text = dt.Rows[0]["namek"].ToString();
textBox11.Text = dt.Rows[0]["gheymatkala"].ToString();
id = Convert.ToInt32(val);
}

private void button3_Click(object sender, EventArgs e)
{
dal.connect();

SqlConnection con = new SqlConnection();
string cs = "Data source=.\\SQLEXPRESS;Attachdbfilename=|DataDirecto ry|\\db\\anbar2.mdf;Integrated security=true;user Instance=true";
con.ConnectionString = cs;
con.Open();
SqlDataAdapter da = new SqlDataAdapter("Select sum(mojudi) From Kala", con);
DataTable dt = new DataTable();
da.Fill(dt);
int mojudi = Convert.ToInt32(dt.Rows[0][0].ToString());
SqlCommand sqlCM = new SqlCommand("select tedad from [faktor forush moshtari] where kala_ID=" + id, con);
// sqlCM.Parameters.Add(new SqlParameter("@kala_ID",id));
//sqlCM.Parameters["@kala_ID"].Value = id;
int tedad = (int)sqlCM.ExecuteScalar();
if (mojudi < tedad)
{
MessageBox.Show("موجودی انبار کافی نیست");
}

veniz2008
جمعه 27 مرداد 1391, 12:58 عصر
مشکل شما دستور select اول هست. کدوم موجودی ها رو با هم جمع میزنی؟. باید آیدی اون کالا رو هم در شرط اضافه کنی تا موجودی کالایی رو جمع بزنه که میخوای مقایسه کنی نه موجودی تمام کالاها رو. کدت رو اینطور اصلاح کن( من فرض کردم که id از نوع int هست).

SqlDataAdapter da = new SqlDataAdapter("Select sum(mojudi) From Kala where kala_ID = " + id, con);