davidrobert
سه شنبه 21 خرداد 1392, 11:06 صبح
من اطلاعات خودم رو به وسیله datagriedview ذخیره میکنم. و دستوری قرار دادم ببینی کد خدمات تکراری هستش یا نه و میبینی درست عمل میکنه ولی یه مشکلی دارم من از 2 تا جدول استفاده میکنم یعنی اطلاعات من تو 2 تا جدول ذخیره میشه.یه جدول شامل شماره سند و فاکتور هستش و جدول دیگه شامل ثبت اطلاعات سرویس هستش.
و موقع ثبت اطلاعات دیتاگرید میاد اطلاعات رو رکورد به رکورد ثبت میکنه و اگه کد خدمات تکراری بود پیغام میده تکراری و رکورد های قبلی ثبت میشن و شماره سند و فاکتور برای رکورد قبلی عوض میشن و مقدار جدید مگرین یعنی سند قبلی که 1 هستش باید این مقدار سند قبلی هم 1 باشن ولی شماره سندشون 2 میشه من میخوام قبل از اینکه اطلاعات رو ثبت کنم .در داخل دیتابیس اول بیام چک کنم رکورد های داخل دیتابیس که کد خدمات تکراری نباشه و بعد بیام اول کل رکورد های داخل دیتاگرید رو چک کنم تکراری نباشه و وقتی دیدم مقدار داخل دیتاگرید هم تکراری نیست اطلاعات ثبت کنه ولی اگه چند تا از رکورد های تکراری بود هم اطلاعات که داخل دیتابیس بود نشان بده این هستش داخل دیتابیس و همین طور نشان بده طرف به طور اشتباه چند بار این اطلاعات رو ذخیره کرده. این دستورات من هستش برای ذخیره اطلاعات. public FrmAddFocServicVKhedemat()
{
InitializeComponent();
Program.MakebuttonStyle(this.BtnExit);
Program.MakebuttonStyle(this.BtnMin);
sqlda.SelectCommand = new SqlCommand("select A_ID,A_Doc,A_Foc,A_CodeKhedemat,A_NameServic,A_Dis trebuite,A_Pay,A_Date,A_Time from Tbl_AddFoctorKhedmat where A_ID='0'", db.con);
sqlda.Fill(dataTable1);
dataGridViewX1.DataSource = dataTable1;
sqlda.InsertCommand = new SqlCommand("Insert into Tbl_AddFoctorKhedmat (A_Doc,A_Foc,A_CodeKhedemat,A_NameServic,A_Distreb uite,A_Pay,A_Date,A_Time) values (@A_Doc,@A_Foc,@A_CodeKhedemat,@A_NameServic,@A_Di strebuite,@A_Pay,@A_Date,@A_Time)", db.con);
sqlda.InsertCommand.Parameters.AddWithValue("@A_Doc", typeof(string)).SourceColumn = "A_Doc";
sqlda.InsertCommand.Parameters.AddWithValue("@A_Foc", typeof(string)).SourceColumn = "A_Foc";
sqlda.InsertCommand.Parameters.AddWithValue("@A_CodeKhedemat", typeof(string)).SourceColumn = "A_CodeKhedemat";
sqlda.InsertCommand.Parameters.AddWithValue("@A_NameServic", typeof(string)).SourceColumn = "A_NameServic";
sqlda.InsertCommand.Parameters.AddWithValue("@A_Distrebuite", typeof(string)).SourceColumn = "A_Distrebuite";
sqlda.InsertCommand.Parameters.AddWithValue("@A_Pay", typeof(string)).SourceColumn = "A_Pay";
sqlda.InsertCommand.Parameters.AddWithValue("@A_Date", typeof(string)).SourceColumn = "A_Date";
sqlda.InsertCommand.Parameters.AddWithValue("@A_Time", typeof(string)).SourceColumn = "A_Time";
private void BtnSave_Click(object sender, EventArgs e)
{
try
{
sqlda.Update(dataTable1);
}
catch (SqlException ex)
{
if (ex.Number == 2627)
PersianMessageBox.Show("کد خدمات تکراری می باشد");
}
db.Connect();
db.cmd = new SqlCommand();
db.cmd.Connection = db.con;
db.cmd.CommandText = "Insert into Tbl_AddNumberDocAndFoc (F_Doc,F_Foc)values (@F_Doc,@F_Foc)";
//db.cmd.CommandText = "Insert into Tbl_AddFoctorKhedmat (A_Doc,A_Foc,A_CodeKhedemat,A_NameServic,A_Distreb uite,A_Pay,A_Date,A_Time) values (@A_Doc,@A_Foc,@A_CodeKhedemat,@A_NameServic,@A_Di strebuite,@A_Pay,@A_Date,@A_Time)";
//db.cmd.CommandText = "Insert into Tbl_AddNumberDocAndFoc=1,Tbl_AddFoctorKhedmat=2 (F_Doc,F_Foc,A_Doc,A_Foc,A_CodeKhedemat,A_NameServ ic,A_Distrebuite,A_Pay,A_Date,A_Time) values (@F_Doc,@F_Foc,@A_Doc,@A_Foc,@A_CodeKhedemat,@A_Na meServic,@A_Distrebuite,@A_Pay,@A_Date,@A_Time)";
db.cmd.Parameters.AddWithValue("@F_Doc", Int32.Parse(LblDoc.Text));
db.cmd.Parameters.AddWithValue("@F_Foc", Int32.Parse(LblFoc.Text));
db.cmd.ExecuteNonQuery();
db.Disconnect();
FrmAddFocServicVKhedemat_Load(null, null);
}
از این دستور برای این استفاده میکنم که اطلاعات ثبت شده به روز بشه.
FrmAddFocServicVKhedemat_Load(null, null);
ولی قبل از به روز به بیشه کل اطلاعات رو چک کنه که تکراری توش نباشه و بعد ثبت کنه اطلاعات رو.
ممنون میشم به هم بگید خیلی به هم چین چیزی نیاز دارم و یه سوال دیگه من از این دستور برای جمع کردن یه سلول دیتاگرید استفاده میکنم ولی ایراد میگیره چون از این دستور استفاده میکنم. sqlda.SelectCommand = new SqlCommand("select A_ID,A_Doc,A_Foc,A_CodeKhedemat,A_NameServic,A_Dis trebuite,A_Pay,A_Date,A_Time from Tbl_AddFoctorKhedmat where A_ID='0'", db.con);
sqlda.Fill(dataTable1);
dataGridViewX1.DataSource = dataTable1;
راهی نداره که این دستور من رو ایراد نگیره. این نباشه ایراد نگیره ولی هم اطلاعات رو برای من ذخیره نمیکنی.
int sum = 0;
for (int i = 0; i < dataGridViewX1.Rows.Count; i++)
{
sum += Convert.ToInt32(dataGridViewX1.Rows[i].Cells[6].Value);
}
TxtTotal.Text = sum.ToString();
میخوام اطلاعات هزینه هم رو حساب کنه و داخل تکس باکس بریزه.
ممنون میشم این 2 مرد رو کمک کنید .و این مقدار رو در قسمت private void dataGridViewX1_CellValueChanged(object sender, DataGridViewCellEventArgs e) قرار دادم که ایراد میگیره. میگه مقدار دیتابیس خالی و نمی تونه بخونه.
این خطا رو میگیره.
105388
و موقع ثبت اطلاعات دیتاگرید میاد اطلاعات رو رکورد به رکورد ثبت میکنه و اگه کد خدمات تکراری بود پیغام میده تکراری و رکورد های قبلی ثبت میشن و شماره سند و فاکتور برای رکورد قبلی عوض میشن و مقدار جدید مگرین یعنی سند قبلی که 1 هستش باید این مقدار سند قبلی هم 1 باشن ولی شماره سندشون 2 میشه من میخوام قبل از اینکه اطلاعات رو ثبت کنم .در داخل دیتابیس اول بیام چک کنم رکورد های داخل دیتابیس که کد خدمات تکراری نباشه و بعد بیام اول کل رکورد های داخل دیتاگرید رو چک کنم تکراری نباشه و وقتی دیدم مقدار داخل دیتاگرید هم تکراری نیست اطلاعات ثبت کنه ولی اگه چند تا از رکورد های تکراری بود هم اطلاعات که داخل دیتابیس بود نشان بده این هستش داخل دیتابیس و همین طور نشان بده طرف به طور اشتباه چند بار این اطلاعات رو ذخیره کرده. این دستورات من هستش برای ذخیره اطلاعات. public FrmAddFocServicVKhedemat()
{
InitializeComponent();
Program.MakebuttonStyle(this.BtnExit);
Program.MakebuttonStyle(this.BtnMin);
sqlda.SelectCommand = new SqlCommand("select A_ID,A_Doc,A_Foc,A_CodeKhedemat,A_NameServic,A_Dis trebuite,A_Pay,A_Date,A_Time from Tbl_AddFoctorKhedmat where A_ID='0'", db.con);
sqlda.Fill(dataTable1);
dataGridViewX1.DataSource = dataTable1;
sqlda.InsertCommand = new SqlCommand("Insert into Tbl_AddFoctorKhedmat (A_Doc,A_Foc,A_CodeKhedemat,A_NameServic,A_Distreb uite,A_Pay,A_Date,A_Time) values (@A_Doc,@A_Foc,@A_CodeKhedemat,@A_NameServic,@A_Di strebuite,@A_Pay,@A_Date,@A_Time)", db.con);
sqlda.InsertCommand.Parameters.AddWithValue("@A_Doc", typeof(string)).SourceColumn = "A_Doc";
sqlda.InsertCommand.Parameters.AddWithValue("@A_Foc", typeof(string)).SourceColumn = "A_Foc";
sqlda.InsertCommand.Parameters.AddWithValue("@A_CodeKhedemat", typeof(string)).SourceColumn = "A_CodeKhedemat";
sqlda.InsertCommand.Parameters.AddWithValue("@A_NameServic", typeof(string)).SourceColumn = "A_NameServic";
sqlda.InsertCommand.Parameters.AddWithValue("@A_Distrebuite", typeof(string)).SourceColumn = "A_Distrebuite";
sqlda.InsertCommand.Parameters.AddWithValue("@A_Pay", typeof(string)).SourceColumn = "A_Pay";
sqlda.InsertCommand.Parameters.AddWithValue("@A_Date", typeof(string)).SourceColumn = "A_Date";
sqlda.InsertCommand.Parameters.AddWithValue("@A_Time", typeof(string)).SourceColumn = "A_Time";
private void BtnSave_Click(object sender, EventArgs e)
{
try
{
sqlda.Update(dataTable1);
}
catch (SqlException ex)
{
if (ex.Number == 2627)
PersianMessageBox.Show("کد خدمات تکراری می باشد");
}
db.Connect();
db.cmd = new SqlCommand();
db.cmd.Connection = db.con;
db.cmd.CommandText = "Insert into Tbl_AddNumberDocAndFoc (F_Doc,F_Foc)values (@F_Doc,@F_Foc)";
//db.cmd.CommandText = "Insert into Tbl_AddFoctorKhedmat (A_Doc,A_Foc,A_CodeKhedemat,A_NameServic,A_Distreb uite,A_Pay,A_Date,A_Time) values (@A_Doc,@A_Foc,@A_CodeKhedemat,@A_NameServic,@A_Di strebuite,@A_Pay,@A_Date,@A_Time)";
//db.cmd.CommandText = "Insert into Tbl_AddNumberDocAndFoc=1,Tbl_AddFoctorKhedmat=2 (F_Doc,F_Foc,A_Doc,A_Foc,A_CodeKhedemat,A_NameServ ic,A_Distrebuite,A_Pay,A_Date,A_Time) values (@F_Doc,@F_Foc,@A_Doc,@A_Foc,@A_CodeKhedemat,@A_Na meServic,@A_Distrebuite,@A_Pay,@A_Date,@A_Time)";
db.cmd.Parameters.AddWithValue("@F_Doc", Int32.Parse(LblDoc.Text));
db.cmd.Parameters.AddWithValue("@F_Foc", Int32.Parse(LblFoc.Text));
db.cmd.ExecuteNonQuery();
db.Disconnect();
FrmAddFocServicVKhedemat_Load(null, null);
}
از این دستور برای این استفاده میکنم که اطلاعات ثبت شده به روز بشه.
FrmAddFocServicVKhedemat_Load(null, null);
ولی قبل از به روز به بیشه کل اطلاعات رو چک کنه که تکراری توش نباشه و بعد ثبت کنه اطلاعات رو.
ممنون میشم به هم بگید خیلی به هم چین چیزی نیاز دارم و یه سوال دیگه من از این دستور برای جمع کردن یه سلول دیتاگرید استفاده میکنم ولی ایراد میگیره چون از این دستور استفاده میکنم. sqlda.SelectCommand = new SqlCommand("select A_ID,A_Doc,A_Foc,A_CodeKhedemat,A_NameServic,A_Dis trebuite,A_Pay,A_Date,A_Time from Tbl_AddFoctorKhedmat where A_ID='0'", db.con);
sqlda.Fill(dataTable1);
dataGridViewX1.DataSource = dataTable1;
راهی نداره که این دستور من رو ایراد نگیره. این نباشه ایراد نگیره ولی هم اطلاعات رو برای من ذخیره نمیکنی.
int sum = 0;
for (int i = 0; i < dataGridViewX1.Rows.Count; i++)
{
sum += Convert.ToInt32(dataGridViewX1.Rows[i].Cells[6].Value);
}
TxtTotal.Text = sum.ToString();
میخوام اطلاعات هزینه هم رو حساب کنه و داخل تکس باکس بریزه.
ممنون میشم این 2 مرد رو کمک کنید .و این مقدار رو در قسمت private void dataGridViewX1_CellValueChanged(object sender, DataGridViewCellEventArgs e) قرار دادم که ایراد میگیره. میگه مقدار دیتابیس خالی و نمی تونه بخونه.
این خطا رو میگیره.
105388