PDA

View Full Version : سوال: باز گرداندن یک مقدار بعد چک کردن بانک اطلاعاتی



fool66
جمعه 23 فروردین 1392, 19:26 عصر
سلام

من می خواستم یه تابع بنویسم برای چک کردن یه مقدار توی بانک اطلاعاتی
ولی وقتی می خوام fill کنم ارور میده

میشه کمک کنید

fool66
جمعه 23 فروردین 1392, 19:29 عصر
con1.Open();
SqlCommand cmm = new SqlCommand();
cmm.Connection = con1;
cmm.CommandText = "updat set Obverse(FName,LName,CName,Tell,Fax,Adderss,Code,ac tive,Reg_Date)values(@FName,@LName,@CName,@Tell,@F ax,@Adderss,@Code,@active,@Reg_Date) where OID=@Codex";
cmm.CommandType = CommandType.Text;

cmm.Parameters.Add(new SqlParameter("@Codex", code));
cmm.Parameters.Add(new SqlParameter("@FName", fname));
cmm.Parameters.Add(new SqlParameter("@LName", lname));
cmm.Parameters.Add(new SqlParameter("@CName", cname));
cmm.Parameters.Add(new SqlParameter("@Tell", tell));
cmm.Parameters.Add(new SqlParameter("@Fax", fax));
cmm.Parameters.Add(new SqlParameter("@Adderss", adderss));
cmm.Parameters.Add(new SqlParameter("@Code", code));
cmm.Parameters.Add(new SqlParameter("@active", 1));
cmm.Parameters.Add(new SqlParameter("@Reg_Date", DateTime.Now));
cmm.ExecuteNonQuery();
return true;

aliasghar2
جمعه 23 فروردین 1392, 19:35 عصر
این چیزی که گداشتی ربطی به سوالت نداره در واقع یه دستور update نه select که بخوای مقداری ازش برگردونی

در ضمن متن خطا رو بذار

تازه دستور update تی که گذاشتی هم غلطه
UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value

vistacali
جمعه 23 فروردین 1392, 19:40 عصر
con1.Open();
SqlCommand cmm = new SqlCommand();
cmm.Connection = con1;

cmm.CommandText = "updat set Obvers FName=@pFName,LName=@pLName,CName=@pCName,Tell=@pT ell,Fax=@pFax,Adderss=@pAdderss,Code=@pCode,active =@pactive,Reg_Date=@pReg_Date where OID=@Codex";
cmm.CommandType = CommandType.Text;

cmm.Parameters.Add(new SqlParameter("@pCodex", code));
cmm.Parameters.Add(new SqlParameter("@pFName", fname));
cmm.Parameters.Add(new SqlParameter("@pLName", lname));
cmm.Parameters.Add(new SqlParameter("@pCName", cname));
cmm.Parameters.Add(new SqlParameter("@pTell", tell));
cmm.Parameters.Add(new SqlParameter("@pFax", fax));
cmm.Parameters.Add(new SqlParameter("@pAdderss", adderss));
cmm.Parameters.Add(new SqlParameter("@pCode", code));
cmm.Parameters.Add(new SqlParameter("@pactive", 1));
cmm.Parameters.Add(new SqlParameter("@pReg_Date", DateTime.Now));
cmm.ExecuteNonQuery();
return true;

اول اپدیت باید اینطور میشد حالا چک کن خطا داشت بگو باز

khokhan
جمعه 23 فروردین 1392, 20:05 عصر
سلام
عزیز جان رشته اتصال این کد رو با مال خودت مقدار هی کن ببین ایراش رفع شد


String connect = (@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\kdbs.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
SqlConnection con1 = new SqlConnection(connect);
con1.Open();
SqlCommand cmm = new SqlCommand();
cmm.Connection = con1;
cmm.CommandText = "updat set Obverse(FName,LName,CName,Tell,Fax,Adderss,Code,ac tive,Reg_Date)values(@FName,@LName,@CName,@Tell,@F ax,@Adderss,@Code,@active,@Reg_Date) where OID=@Codex";
cmm.CommandType = CommandType.Text;

cmm.Parameters.Add(new SqlParameter("@FName", fname));
cmm.Parameters.Add(new SqlParameter("@LName", lname));
cmm.Parameters.Add(new SqlParameter("@CName", cname));
cmm.Parameters.Add(new SqlParameter("@Tell", tell));
cmm.Parameters.Add(new SqlParameter("@Fax", fax));
cmm.Parameters.Add(new SqlParameter("@Adderss", adderss));
cmm.Parameters.Add(new SqlParameter("@Code", code));
cmm.Parameters.Add(new SqlParameter("@active", 1));
cmm.Parameters.Add(new SqlParameter("@Reg_Date", DateTime.Now));
cmm.ExecuteNonQuery();
return true;

khokhan
جمعه 23 فروردین 1392, 20:09 عصر
البته توی کوئری دوکلمه F ax و ac tive فاصله انداخته درستشون کن

fool66
جمعه 23 فروردین 1392, 21:19 عصر
if (txtAdderss.Text != "" && txtCName.Text != "" && txtFName.Text != "" && txtLName.Text != "" && txtTell.Text != "")
{
bool a = true;
if (radioBtnForsh.Checked == true)
{
a = true;
}
else
{
a = false;
}
bool b = Cus.SabtCustomer(txtFName.Text.Trim(), txtLName.Text.Trim(), txtCName.Text.Trim(), txtTell.Text.Trim(), txtFax.Text.Trim(), txtAdderss.Text.Trim(), a);
if (b == true)
{
MessageBox.Show("اطلاعات با موفقیت ثبت شد");
CustomerForm_Load(null, null);
}
}

else
{
MessageBox.Show("لطفاابتدا اطلاعات را بصورت دقیق وارد کرده سپس دکمه ثبت را فشار دهید");
}
}


کلاس customer

public bool SabtCustomer(string fname,string lname,string cname ,string tell,string fax,string adderss,bool code)
{
try
{
con1.Open();
SqlCommand cmm = new SqlCommand();
cmm.Connection = con1;
cmm.CommandText = "insert into Obverse(FName,LName,CName,Tell,Fax,Adderss,Code,ac tive,Reg_Date)values(@FName,@LName,@CName,@Tell,@F ax,@Adderss,@Code,@active,@Reg_Date) where OID=@Codex";
cmm.CommandType = CommandType.Text;

cmm.Parameters.Add(new SqlParameter("@Codex", code));
cmm.Parameters.Add(new SqlParameter("@FName", fname));
cmm.Parameters.Add(new SqlParameter("@LName", lname));
cmm.Parameters.Add(new SqlParameter("@CName", cname));
cmm.Parameters.Add(new SqlParameter("@Tell", tell));
cmm.Parameters.Add(new SqlParameter("@Fax", fax));
cmm.Parameters.Add(new SqlParameter("@Adderss", adderss));
cmm.Parameters.Add(new SqlParameter("@Code", code));
cmm.Parameters.Add(new SqlParameter("@active", 1));
cmm.Parameters.Add(new SqlParameter("@Reg_Date", DateTime.Now));
cmm.ExecuteNonQuery();
return true;
}
catch (Exception)
{
return false;
}
finally
{
con1.Close();
}
}

این کد ثبت هست که زدم حالا می خوام یه بدم به یه تابع چک کنه که مقدار txtCName قبلا ثبت شده یا نه

khokhan
جمعه 23 فروردین 1392, 22:06 عصر
با سلام
اینکه ما بخواهیم بدونیم موردی را که قصدذخیره اش راداریم قبلا در بانک ثبت شده یا نه چندین روش وجود دارد یکی این هست که بالای کد مربوط به ثبت یه کوئری از همون جدول می زنی و مقادیر موجود در بانک را با مقدار تکس باکس مطابقت می دی اگه وجود داشت پیغام می ده واگه وجود نداشت می ره به دستورات ثبت :لبخند:

یه چیزی شبیه این


private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "")
{
MessageBox.Show("فيلدهاي داري علامت حتما بايد نوشته شوند", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
try
{
OleDbConnection ocn = new OleDbConnection(ConnectionString);

OleDbDataAdapter oda = new OleDbDataAdapter("SELECT name,family,ncode FROM student WHERE name=@p1 AND family=@p2 AND ncode=@p3", ocn);
oda.SelectCommand.Parameters.Clear();
oda.SelectCommand.Parameters.AddWithValue("@p1", textBox1.Text);
oda.SelectCommand.Parameters.AddWithValue("@p2", textBox2.Text);
oda.SelectCommand.Parameters.AddWithValue("@p3", textBox3.Text);
DataTable dt = new DataTable();

dt.Clear();
oda.Fill(dt);

if (dt.Rows.Count > 0)
{
MessageBox.Show("این شخص قبلا در بانک ثبت شده؛ لطفا شخص غیر تکراری وارد کنید", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
textBox1.Focus();
}
else
{
MemoryStream ms = new MemoryStream();
try
{
pictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);

}
catch { }
byte[] arrPic = ms.GetBuffer();
ms.Close();
OleDbCommand ocm = new OleDbCommand();

ocm.CommandText = "insert into student (name,family,ncode,faname,bdate,bplace,phone,adres s,photo) values (@name,@family,@ncode,@faname,@bdate,@bplace,@phon e,@adress,@photo)";
ocm.Parameters.Clear();
ocm.Parameters.AddWithValue("@name", textBox1.Text);
ocm.Parameters.AddWithValue("@family", textBox2.Text);
ocm.Parameters.AddWithValue("@ncode", textBox3.Text);
ocm.Parameters.AddWithValue("@faname", textBox4.Text);
ocm.Parameters.AddWithValue("@bdate", textBox5.Text);
ocm.Parameters.AddWithValue("@bplace", textBox6.Text);
ocm.Parameters.AddWithValue("@phone", textBox7.Text);
ocm.Parameters.AddWithValue("@adress", textBox8.Text);
ocm.Parameters.Add("@photo", OleDbType.Binary).Value = arrPic;

ocm.Connection = null;
ocm.Connection = ocn;

ocn.Open();
ocm.ExecuteNonQuery();
ocn.Close();

ocm.Dispose();

MessageBox.Show("شخص مورد نظر با موفقیت اضافه شد", "Ok", MessageBoxButtons.OK, MessageBoxIcon.Information);

s_main fm = (s_main)Application.OpenForms["Main"];
fm.blEdit = true;
this.Close();

}

dt.Dispose();
oda.Dispose();
ocn.Dispose();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}

khokhan
جمعه 23 فروردین 1392, 22:10 عصر
راه دوم هم اینه که مثل این نمونه در آخر دستوراتت چک می کنی که اگه این گزینه در بانک بود درجش نکن :لبخند:

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


private void button1_Click(object sender, EventArgs e)
{
if (textBox2.Text == "")
{
MessageBox.Show("کاربر گرامی لطفا کد شخص را وارد کنید. فیلد کد نمی تواند خالی باشد");
}
else

try
{
DialogResult Result_Save = MessageBox.Show("آیا اطلاعات در بانک ذخیره شود", "پیغام", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
if (Result_Save == DialogResult.Yes)
{
con.Open();
SqlCommand command = new SqlCommand("insert into moshtari(cost_id,cost_name) values(@cost_id,@cost_name)", con);
command.Parameters.AddWithValue("@cost_id", Int32.Parse(textBox1.Text));
command.Parameters.AddWithValue("@cost_name", textBox2.Text);

command.ExecuteNonQuery();
MessageBox.Show("اطلاعات با موفقیت ثبت شد");
load();

}

}
catch (SqlException ex)
{
if (ex.Number == 2627)//درصورتی که کد کالا تکراری بود
{

MessageBox.Show("این کد در بانک وجود دارد");

}
}


finally
{
if (con.State != ConnectionState.Closed)
{
con.Close();
}
}
}

ordebehesht
جمعه 23 فروردین 1392, 22:19 عصر
کلمه update
cmm.CommandText = "updat set Obvers FName=@pFName,LName=@pLName,CName=@pCName,Tell=@pT ell,Fax=@pFax,Adderss=@pAdderss,Code=@pCode,active =@pactive,Reg_Date=@pReg_Date where OID=@Codex";

fool66
جمعه 23 فروردین 1392, 22:56 عصر
ممنون حل شد