1397-08-12 17:37 راهنمایی برای ذخیره کردن و نمایش دادن تاریخ تولد در دیتابیس و گرید ویو (سی شارپ+اس کیو ال کامپکت)
booysusa

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

این تیکه کدهایی هست که من برای برنامه نوشتم لطفا راهنمایی کنید چطوری باید تاریخ را درج کنم که مثلا بصورت 1397/08/12 در بیاید
لازم به ذکر هست که داده های سطر تاریخ تولد رو Datetime تنظیم کردم
من نوشتن کد ذخیره تاریخ را بلد نیستم، معمولا با Nvarchar وارد می کردم که کار زیبایی نیست و همچنین نمیخوام مدام اسلش ها / را بصورت دستی وارد کنم برای همین میخواهم با داده های Datetime وارد دیتابیس کنم
البته من منظورم این هست که در TextBox بصورت دستی هم بتونم تاریخ وارد کنم کافی هست ولی این هم یک DLL تقویم فارسی بسیار زیبا هست که اگر بشود در برنامه استفاده کردم عالی هست

لینک دانلودش هم این هست

//============ برای افزودن عضو من از این کدها استفاده کردم

public void ReadFromDatabase()
{
SqlCeConnection myConnection = new SqlCeConnection() ;
myConnection.ConnectionString = @"Data Source=K:\Programs\Daftarche\DaftarcheDB.sdf";

//insert into TableName(Coulmns) Values('','','' )
SqlCeCommand mycommand = new SqlCeCommand() ;
mycommand.Connection = myConnection;
mycommand.CommandText = "INSERT into [User] (FirstName,LastName,Dateofbirth) Values(@FirstName,@LastName,@SerialBirthCertificate)";
mycommand.Parameters.AddWithValue("@FirstName", txtFirstName.Text) ;
mycommand.Parameters.AddWithValue("@LastName", txtLastName.Text) ;
mycommand.Parameters.AddWithValue("@Dateofbirth", txtDateofbirth.Text) ;

myConnection.Open() ;
mycommand.ExecuteNonQueryAsync() ;
myConnection.Close() ;
MessageBox.Show("عملیات با موفقیت انجام شد" ) ;
ShowFromDatabase() ;
}

//============ get; set;

private void btnEdit_Click(object sender, EventArgs e)
{
tabControl1.SelectedTab = tabControl1.TabPages[2];
}

public string FirstName { get; set; }
public string LastName { get; set; }
public string Dateofbirth { get; set; }
public int ID { get; set; }

//============

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
//وقتی کاربری روی هر یک از ردیف ها کلیک میکنه این رویداد اجرا میشه
//و ما اطلاعات اون ردیف رو تو متغییر ها میریزیم.
if (e.RowIndex != -1)
{
FirstName = "";
LastName = "";
Dateofbirth = ""; //خطا مشاهده شده است در این تیکه کد

FirstName = dataGridView1.Rows[e.RowIndex].Cells["ClmnFirstName"].Value.ToString() ;
LastName = dataGridView1.Rows[e.RowIndex].Cells["ClmnLastName"].Value.ToString() ;
Dateofbirth = dataGridView1.Rows[e.RowIndex].Cells["ClmnDateofbirth"].Value.ToString() ;
ID = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells["ClmnID"].Value) ;
}
}

private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
{
//وقتی شما روی ویرایش کلیک میکنید و سلکت تب رو تغییر میدید این رویداد اتفاق می افته
//و ما بایه شرط بررسی میکنیم که تب ویرایشه یا نه. اگه تب ویرایش بود اون اطلاعات متغییر هارو درون اون تکست ها نمایش میدید
if (e.TabPageIndex == 2)
{
txtFirstNameV.Text = FirstName;
txtLastNameV.Text = LastName;
txtDateofbirthV.Text = Dateofbirth ;
}
}

//============ ویرایش کاربر

private void btnSaveVirayesh_Click(object sender, EventArgs e)
{
var result = MessageBox.Show("آیا مایل به ویرایش هستید؟", "اطلاع", MessageBoxButtons.YesNo) ;
if (result == DialogResult.Yes)
{
try
{
SqlCeConnection myConnection = new SqlCeConnection() ;
myConnection.ConnectionString = @"Data Source=K:\Programs\Daftarche\DaftarcheDB.sdf";


//آپدیت کردن کاربر
SqlCeCommand mycommand = new SqlCeCommand() ;
mycommand.Connection = myConnection;

mycommand.CommandText = "update [User] set (FirstName,LastName,Dateofbirth) Values(@FirstName,@LastName,@Dateofbirth)";
mycommand.Parameters.AddWithValue("@FirstName", txtFirstName.Text) ;
mycommand.Parameters.AddWithValue("@LastName", txtLastName.Text) ;
mycommand.Parameters.AddWithValue("@Dateofbirth", txtDateofbirth.Text) ;

myConnection.Open() ;
mycommand.ExecuteNonQuery() ;
myConnection.Close() ;
MessageBox.Show("عملیات با موفقیت انجام شد" ) ;
ShowFromDatabase() ;
}
catch (Exception ex)
{//اگر خطایی رخ داد این قسمت میگه دلیل خطا چی بوده
MessageBox.Show(ex.Message) ;
}
}
}
1397-08-12 23:35
حاجی شریفی
مؤسس سایت
 
سلام
نقل قول نوشته شده توسط: booysusa
... ما اطلاعات اون ردیف رو تو متغییر ها میریزیم ... اگه تب ویرایش بود اون اطلاعات متغییر هارو درون اون تکست ها نمایش میدید ...

چرا؟
چرا مقادیر را در چند فیلد میریزید و سپس در کنترلرها میریزید؟ چرا همان اول در کنترلرها نریزیم؟!

نقل قول نوشته شده توسط: booysusa
... من نوشتن کد ذخیره تاریخ را بلد نیستم ...

بجای TextBox از همین کنترلر استفاده میکنید.
فقط TextBox خصیصه Text دارد وشما باید از خصیصه SelectedDateInDateTime این کنترلر استفاده کنید.
بقیه اش زیاد متفاوت نیست.

mycommand.Parameters.AddWithValue("@FirstName", txtFirstName.Text) ;
mycommand.Parameters.AddWithValue("@BirthDate", f_BirthDate.SelectedDateInDateTime) ;

تلاشی کنید ، گمان نمیکنم مشکلی برایتان پیش بیاید

خواستید چند کنترلر را هم میتوانید از اینجا امتحان کنید:

کنترلر تاریخ شمسی تکی
http://support.h02.ir/fwlink/?LinkId=1002976157

کنترلر تاریخ شمسی برای گرید
http://support.h02.ir/fwlink/?LinkId=1002435777

کنترلر ساعت عقربه ای
http://support.h02.ir/fwlink/?LinkId=1005350577

نمونه های Demo را میتوانید در در پوشه bin پیدا واجرا کنید.