PDA

View Full Version : سوال: اشکال در فرم اجرای



davidrobert
شنبه 25 خرداد 1392, 21:56 عصر
من برنامه حسابداری دارم مینویسم یه قسمت دارم به نام ثبت سرویس خدمات من در این فرم شماره سند رو اخریش رو به دست میارم و با این دستور جمع میکنم و مقدار رو در شماره فاکتور میریزم.این دستو برای جمع شدن شماره فکاتر و شماره سند و هستش و جواب نهایی در شماره فاکتور میریزه.Lblfoc.Text = (Convert.ToInt32(LblDoc.Text) + 1000).ToString(); و از این دستور استفاده میکنم برای شماره سند و فاکتور در دیتاگرید ویو که میام شماره سند رو با لبل شماره سند جمع میکنم و در سلول سند دیتاگرید میریزم اینم دستوراتش.
برای اینکه وقتی اطلاعات وارد میکنم و کلید Tab رو میزنم اطلاعات وارد سلول میشه و اخرین شماره سند و فاکتور که به دست میاد در این سلول ها قرار میده به وسیله این دستور. private void dataGridViewX1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
dataGridViewX1.CurrentRow.Cells["A_Doc"].Value = (Convert.ToInt32(LblDoc.Text) + 0).ToString();
dataGridViewX1.CurrentRow.Cells["A_Foc"].Value = (Convert.ToInt32(LblDoc.Text) + 1000).ToString(); ولی مشکلی که دارم وقتی به مقدار داده به شماره 10 میرسه دیگه آخرین شماره سند رو به دست نمیاره که بخوام با شماره فاکتور لبل و شماره سند و فاکتور دیتاگرید رو با لبل سند محاسبه کنه و وقتی مقدار 10 میرسه دیگه اطلاعات رو به روز نمیکنه.و من از این دستور برای خالی کردن دیتاگرید استفاده میکنم.که تمام سلول های دیتاگرید رو پاک میکنه و دوباره سلول ها رو قرار میده تا اطلاعات رو وارد کنیم در دیتاگرید ویو من اطلاعات ر در دیتاگرید ویو وارد میکنم چندین رکورد که وارد شد و در آخر اطلاعات رو ذخیره میکنم. و با زدن دکمه جدید اطلاعات رو به وسیله یکی از این دستورات پاک میکنم. private void BtnNew_Click(object sender, EventArgs e)
{
if (dataGridViewX1.CurrentRow == null)
return;
//dataGridViewX1.DataSource = null;
dataGridViewX1.Columns.Clear(); و به وسیله این دستور اطلاعات رو دوباره سلول ها رو اضافه میکنم. private void GridDegin()
{

dataGridViewX1.Columns.Add("A_ID", "انتخاب");
//dataGridViewX1.Columns["A_ID"].Visible= false;
dataGridViewX1.Columns.Add("A_Doc", "شماره سند");
//dataGridViewX1.Columns["A_Doc"].Visible = false;
dataGridViewX1.Columns.Add("A_Foc", "شماره فاکتور");
//dataGridViewX1.Columns["A_Foc"].Visible = false;
dataGridViewX1.Columns.Add("A_CodeKhedemat", "کد خدمات");
dataGridViewX1.Columns.Add("A_NameServic", "نام سرویس");
dataGridViewX1.Columns.Add("A_Distrebuite", "شرح و توزیح");
dataGridViewX1.Columns.Add("A_Pay", "هزینه");
dataGridViewX1.Columns.Add("A_Date", "تاریخ");
//dataGridViewX1.Columns["A_Date"].Visible = false;
dataGridViewX1.Columns.Add("A_Time", "ساعت");
//dataGridViewX1.Columns["A_Time"].Visible = false;

for (int a = 0; a < dataGridViewX1.RowCount; a++)
if (a % 2 == 0)
dataGridViewX1.Rows[a].DefaultCellStyle.BackColor = Color.Wheat;
}
private void BtnNew_Click(object sender, EventArgs e)
{
if (dataGridViewX1.CurrentRow == null)
return;
//dataGridViewX1.DataSource = null;
dataGridViewX1.Columns.Clear();


GridDegin();
و به وسیله این دستورات اطلاعات دیتاگرید رو خالی و به وسیله این دستور GridDegin(); دوباره سلول های دیتاگرید رو میسازم ولی مشکلی که دارم وقتی اطلاعات با اول در دیتاگرید میدم و ثبت میکنم و بعد دکمه جدید رو میزنم که اطلاعات داخل دیتاگرید خالی بیشه ولی دوباره سلول ها رو بسازه ولی این کار رو نمیکنی سلول های قبلی رو میزاره میمونه و دوباره در ادامه دیتاگرید ویو سلول میسازه وقت بار اول که دکمه جدید رو میزنم اطلاعات رو پاک میکنه و دوباره اول رو میسازه ولی بار دوم میزنم روی دکمه جدید میزنم سلول های که قبلاً ساخته رو میزاره میمونه و سلول دوباره اضافه میکنه. این 2 تا ایراد رو دارم. وقتی به وسیله این دستور بار اول اطلاعات رو خالی میکنم به کل یه سط میاره //dataGridViewX1.DataSource = null; ولی به وسیله این دستور dataGridViewX1.Columns.Clear(); اطلاعات رو بار اول خالی میکنه و جدول رو میسازه هر چند تا که رکورد تعریف بیشه در دفعه قبل و ذخیره بیشه و روی دکمه جدید زده بیشه هر چند تا سطر که وارد شده بود همون تعدا سطر خالی میشه اگه 3تا رکورد وارد کرده باشم همون 3 تا رکود رو نشان میده که خالی .

در کل خطا های من این ها هستن.
1- تا اخرین شماره سند 10 رو نشان میده و وقتی هر چقدر اطلاعات ذخیره کنم بیشتر از شماره 10 که باید درون لبل بیاره نمیاره.
2- اطلاعات رو وارد میکنم بار اول ذخیره میکنه سلول ها دیتا گرید رو پاک میکنه و دوباره سلول ها رو میسازه. و بار دوم سلو رو که از قبل وجود داره رو میزاره میمونه و دوباره قرار میده در ادامه سلول .

این خطا ها من هستش و از این دستور برای به روز کردن فرم استفاده میکنم در دکمه جدید
//FrmAddFocServicVKhedemat_Load(null, null); که مقدار label شماره سند به روز بشه تا اخرین شماره سند رو نشان بده.

ممنون میشم به هم بگید چطور میتوانم این 2 تا ایراد رو بر طرف کنم تا بیشتر از 10 رو بیاره شماره سند و وقتی هم اطلاعات رو ذخیره میکنم دیتاگرید خالی بیشه و همون رکورد ها رو از صفر بیاره برای وارد کردن نه اینکه همون سلول ها بمونان و همون سلول ها رو در ادامه باز بسازن خیلی ممنون میشم کمک کنید من رو خلی گیر کردم. اگه خواستید بگید کل دستورات رو قرار میدم.

اگه دستوری هستش وقت محتوایات دیتاگرید رو خالی کنه و بیاد سط اول برای وارد کردن اطلاعات. وقت محتویات دیتاگرید رو خالی کنه و مقدار رو از سطح اول بیاره.

davidrobert
شنبه 25 خرداد 1392, 22:26 عصر
لطفاً یکی کمک کنه خیلی گیرم.

davidrobert
یک شنبه 26 خرداد 1392, 00:18 صبح
یکی کمک کنه لطفاً

mousa1992
یک شنبه 26 خرداد 1392, 03:26 صبح
بس زیاد بود حوصلم نشد بخونم همشو :|
گریدت رو چجوری پرش میکنی ؟
از datatable استفاده میکنی و به datasource گرید میدی ؟ اگه همین کارو میکنی از این کد استفاده کن
datatable dt = ....
d.rows.clear();
و دوباره گرید رو مقدار دهی کن ببینم جواب میگیری

موفق

davidrobert
یک شنبه 26 خرداد 1392, 05:36 صبح
از این دستور استفاده کردم و خطا دا و گفت نمی نوانه سط هارو خالی کنی . dataGridViewX1.Rows.Clear(); من به وسیله این کد dataGridViewX1.DataSource = dataTable1; و از این هم استفاده کردم و دیتاگرید رو خالی نکرد. dataGridViewX1.DataSource = dataTable1; اصلا دستور خواندن اطلاعات از دیتابیس رو فراخونی نکرد که اطلاعات داخل خالی بیشه من شرط قرار دادم اگه مقدار Id برابر 0 بود اطلاعات رو نشان بده که این عمل باعث بشه هیچ مقداری رو نشان نده.
در قسمت public FrmAddFocServicVKhedemat()
{
InitializeComponent();
Program.MakebuttonStyle(this.BtnExit);
Program.MakebuttonStyle(this.BtnMin);
Program.MakebuttonStyle(this.BtnNew);
Program.MakebuttonStyle(this.BtnAdd);
Program.MakebuttonStyle(this.BtnEdit);
Program.MakebuttonStyle(this.BtnDelete);
Program.MakebuttonStyle(this.BtnETotal);

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; اطلاعاتم رو پور میکنم چون من داد ها خودم رو داخل دیتاگرید وارد و بعد اطلاعات داخل دیتاگرید رو ذخیره میکنم.چند تا رکورد در دیتاگرید وارد میکنم و بعد کل اطلاعات رو میخوام موقع زدن روی دکمه new اطلاعات ثبت بیشه و اطلاعات خالی و دیتاگرید دوباره بیاد سر رکورد اول نه اینکه هر چند تا رکورد تعریف کردیم رو خالی کنه و همون چند تا رکورد خالی به مونه. ممنون بابت کمکتان ولی جواب نگرفتم چون دیتاگرید من با دیتابیسم من ارتباط داره.و به صورت کد نویسی کار میکنم نه کد تولیدی خودش.

davidrobert
یک شنبه 26 خرداد 1392, 10:17 صبح
یکی کمک کنه لطفاً چطور وقت محتویات دیتاگرید رو خالی کنم برای وارد کردن اطلاعات جدید برای ذخیره.

davidrobert
یک شنبه 26 خرداد 1392, 11:54 صبح
برادر alex کمک کرد به وسیله دستور datatable.clear();