PDA

View Full Version : سوال: خواندن و ذخیره سازی داده، 50 تکست باکس در C # توسط تابع



MoRTeZa`
جمعه 06 آذر 1394, 09:41 صبح
من یک پروژه در C # که حدود 50 تکست باکس داره رو باید تکست باکس ها رو بخونم و سپس در پایگاه داده ذخیره کنم.
این با استفاده از تابع انجام می شود.
تنها مشکل من ساخت تابع هست.
از شما سپاسگزارم.
چه باید انجام شود؟


x8 = int.Parse( txtt10x100t.Text);
if (x8 > 0)
{
SqlConnection cn = new SqlConnection("Data Source=.;Initial Catalog=database;Integrated Security=True");
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandText = "INSERT INTO tbltable " + "(id, name, value , date, iid) " + "VALUES(@id, @name, @value, @date, @iid )";
cmd.Parameters.AddWithValue("@id", v2);
cmd.Parameters.AddWithValue("@name", "10*100");
cmd.Parameters.AddWithValue("@value", x8);
cmd.Parameters.AddWithValue("@date", tarikh);
cmd.Parameters.AddWithValue("@iid", xxiid);
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
x9 = int.Parse(txtt10x150t.Text);
if (x9 > 0)
{
SqlConnection cn = new SqlConnection("Data Source=.;Initial Catalog=dbdatabase;Integrated Security=True");
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandText = "INSERT INTO tbltable " + "(id, name, value, date, iid) " + "VALUES(@id, @name, @value, @date, @iid )";
cmd.Parameters.AddWithValue("@id", v2);
cmd.Parameters.AddWithValue("@name", "10*150");
cmd.Parameters.AddWithValue("@value", x9);
cmd.Parameters.AddWithValue("@date", tarikh);
cmd.Parameters.AddWithValue("@iid", xxiid);
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
x10 = int.Parse(txtt15x100t.Text);
if (x10 > 0)
{
SqlConnection cn = new SqlConnection("Data Source=.;Initial Catalog=dbdatabase;Integrated Security=True");
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandText = "INSERT INTO tbltable " + "(id, name, value, date, iid) " + "VALUES(@id, @name, @value, @date, @iid )";
cmd.Parameters.AddWithValue("@id", v2);
cmd.Parameters.AddWithValue("@name", "15*100");
cmd.Parameters.AddWithValue("@value", x10);
cmd.Parameters.AddWithValue("@date", tarikh);
cmd.Parameters.AddWithValue("@iid", xxiid);
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();

// , ete ....

sgh_programer
جمعه 06 آذر 1394, 09:56 صبح
سلام دوست عزیز
من که دقیقا متوجه نشدم چی میخوای اما ساختار کدنویسیتون تقریبا صحیح نیست
مثلا لازم نیست هر دفعه کانکشن استرینگ رو تعریف کنی

بیشتر توضیح بده

MoRTeZa`
جمعه 06 آذر 1394, 10:03 صبح
سلام دوست عزیز
من که دقیقا متوجه نشدم چی میخوای اما ساختار کدنویسیتون تقریبا صحیح نیست
مثلا لازم نیست هر دفعه کانکشن استرینگ رو تعریف کنی

بیشتر توضیح بده

تشکر بابت پاسخ
من اینو عمدا اینجوری نوشتم تا موضوع رو کامل مطرح کنم .
ما 50 تکست باکس داریم .
قراره توی هر تکست باکس یه مقدار وارد بشه .
هر تکست باکس اسمی دارد که در صورتیکه مقدارش بیشتر از صفر باشه در زمان چاپ اسم فارسی آن به همراه مقدار آن چاپ میشود .
حالا هر مقدار تکست باکس با نام خاص آن و تاریخ ثبت آن باید در دیتا بیس ذخیره شود .
بحث من بیشتر برای این هست که آیا راهی وجود داره که مقادیر تکست باکس ها را بشه با تابع خواند ؟
یعنی تمامی تکست باکس ها رو بخونه و در دیتا بیس ذخیره کنه ...

یه تابع میخوام بنویسم .

sgh_programer
جمعه 06 آذر 1394, 10:18 صبح
داداش کد زیر تمام تکست باکس هاتون رو با مقدارشون میخونه
foreach (Control temp in this.Controls) {
if (temp is TextBox)
{
TextBox t = temp as TextBox;
string str_txtName= t.Name.ToString();
string str_txtTextValue = t.Text;
MessageBox.Show(str_txtName+".Text="+str_txtTextValue);
}
}
حالا شما با ی خورده تغییر می تونی کارت رو راه بندازی
در ضمن اگر تکس باکس هاتون توی گروپ باکس هستند به جای this.controls باید توشت groupbox1.controls
موفق باشی

MoRTeZa`
جمعه 06 آذر 1394, 10:51 صبح
داداش کد زیر تمام تکست باکس هاتون رو با مقدارشون میخونه
foreach (Control temp in this.Controls) {
if (temp is TextBox)
{
TextBox t = temp as TextBox;
string str_txtName= t.Name.ToString();
string str_txtTextValue = t.Text;
MessageBox.Show(str_txtName+".Text="+str_txtTextValue);
}
}
حالا شما با ی خورده تغییر می تونی کارت رو راه بندازی
در ضمن اگر تکس باکس هاتون توی گروپ باکس هستند به جای this.controls باید توشت groupbox1.controls
موفق باشی

بسیار سپاسگذارم .
الان با این قطعه کد ، اسم و مقدار تکست باکس رو داریم .
مهمترین قسمت همین بود .
برم ببینم میشه چه کارهایی کرد .
باز هم ممنون

sgh_programer
جمعه 06 آذر 1394, 10:58 صبح
درسته که تعداد textbox ها زیاده اما با یه خورده خلاقیت میتونی کدنویسی رو کم کنی

موفق باشید

hadi vafaii
شنبه 07 آذر 1394, 01:18 صبح
من از این روش واسه دیتابیس اکسس استفاده می کنم حالا شما یکم تغییر بدی شاید بدرد شمام خورد

البته بنده داخل یه کلاس کد ها رو نوشتم تا خیلی قاطی پاتی نشه
#region setconnection

public static OleDbConnection connection()
{

OleDbConnection con = new OleDbConnection(Connection.Conection.ConnectedToDa teBase("db.mdb"));
return con;

}
#endregion


#region new Record
public static void newuser(string Id, string name, string famil, string pedar, string shenasname, string codemeli, string tavalod, string tell1, string mobile, string adress, string post, string moaref, string tarikh, string elat, string tozih)
{


OleDbConnection con = connection();
string g = "insert into tbl1 values('" + Id + "','" + name + "','" + famil + "','" + pedar + "','" + shenasname + "','" + codemeli + "','" + tavalod + "','" + tell1 + "','" + mobile + "','" + adress + "','" + post + "','" + moaref + "','" + tarikh + "','" + elat + "','" + tozih + "')";
OleDbCommand comand = new OleDbCommand(g, con);
con.Open();
comand.ExecuteNonQuery();
con.Close();
}

#endregion