bmvgod
پنج شنبه 13 دی 1397, 01:29 صبح
باسلام خدمت دوستان
در پروژم بعد از اینکه عمل درج انجام میشه، پیغامی گذاشتم مبنی بر اینکه: آیا اقلام جدیدی میخواهید اضافه کنید؟
که کاربر اگر گزینه Yes را انتخاب کنه، دوباره اطلاعات رو میگیره و با همون شماره فاکتور و تاریخ درج میکنه.
اطلاعات درج میشه ولی مشکل اینکه شماره ردیفم در گرید ویو تکراری نمایش میده، درحالی که در جدول دیتابیس شماره ردیف درسته درج شده.
من از کد زیر استفاده کردم:
private void btnInsert_Click(object sender, EventArgs e)
{
db = new LinqToTrazoDataContext();
var fcTable = new FactorSaleTable();
fcTable.SaleDate = DateTime.Now;
fcTable.FactorNo = int.Parse(txtCodFactor.Text);
fcTable.CommodCodFact = txtSaleCodCommodity.Text;
fcTable.CommodName = cmbCommodityName.Text;
fcTable.CompanyName = txtNameCO.Text;
fcTable.Number = Int16.Parse(txtNumber.Text);
fcTable.TotalPrice = float.Parse(txtTotalPrice.Text);
fcTable.Weight = float.Parse(txtWeight.Text);
fcTable.TotalWeight = float.Parse(txtTotalWeight.Text);
fcTable.CommodSize = txtSize.Text;
fcTable.UnitPrice = float.Parse(txtUnitPrice.Text);
fcTable.Tax = float.Parse(txtTax.Text);
fcTable.Dicount = float.Parse(txtTax.Text);
db.FactorSaleTables.InsertOnSubmit(fcTable);
db.SubmitChanges();
dgvSalesInvoi.DataSource = db.FactorSaleTables;
DialogResult result = MessageBox.Show("آیا اقلام جدیدی میخواهید وارد کنید؟",
"وضعیت خرید", MessageBoxButtons.YesNo, MessageBoxIcon.Question,
MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading);
if (result == DialogResult.Yes)
{
txtNumber.Text = "0";
txtWeight.Text = "0";
txtTotalWeight.Text = "0";
txtTotalPrice.Text = "0";
db = new LinqToTrazoDataContext();
fcTableYes = new FactorSaleTable();
fcTableYes.SaleDate = DateTime.Now;
fcTableYes.FactorNo = int.Parse(txtCodFactor.Text);
fcTableYes.CommodCodFact = txtSaleCodCommodity.Text;
fcTableYes.CommodName = cmbCommodityName.Text;
fcTableYes.CompanyName = txtNameCO.Text;
fcTableYes.Number = Int16.Parse(txtNumber.Text);
fcTableYes.TotalPrice = float.Parse(txtTotalPrice.Text);
fcTableYes.Weight = float.Parse(txtWeight.Text);
fcTableYes.TotalWeight = float.Parse(txtTotalWeight.Text);
fcTableYes.CommodSize = txtSize.Text;
fcTableYes.UnitPrice = float.Parse(txtUnitPrice.Text);
fcTableYes.Tax = float.Parse(txtTax.Text);
fcTableYes.Dicount = float.Parse(txtTax.Text);
db.FactorSaleTables.InsertOnSubmit(fcTableYes);
db.SubmitChanges();
dgvSalesInvoi.DataSource = db.FactorSaleTables;
}
else if (result == DialogResult.No)
{
var lastRecord = db.FactorSaleTables.Select(fn => fn.FactorNo);
txtCodFactor.Text = (lastRecord.Max() + 1).ToString();
txtNumber.Clear();
txtWeight.Clear();
txtTotalWeight.Clear();
txtTotalPrice.Clear();
}
if (btnInsert.Text == "ویرایش")
{
SelectedIndexId = int.Parse(dgvSalesInvoi.CurrentRow.Cells["RowFact"].Value.ToString());
db = new LinqToTrazoDataContext();
var fcTableEdit = db.FactorSaleTables.Where(c=>c.RowFact==SelectedIndexId).Single();
//SaleDate = DateTime.Now,
//FactorNo = int.Parse(txtCodFactor.Text),
fcTableEdit.CommodCodFact = txtSaleCodCommodity.Text;
fcTableEdit.CommodName = cmbCommodityName.Text;
fcTableEdit.CompanyName = txtNameCO.Text;
fcTableEdit.Number = Int16.Parse(txtNumber.Text);
fcTableEdit.TotalPrice = float.Parse(txtTotalPrice.Text);
fcTableEdit.Weight = float.Parse(txtWeight.Text);
fcTableEdit.TotalWeight = float.Parse(txtTotalWeight.Text);
fcTableEdit.CommodSize = txtSize.Text;
fcTableEdit.UnitPrice = float.Parse(txtUnitPrice.Text);
fcTableEdit.Tax = float.Parse(txtTax.Text);
fcTableEdit.Dicount = float.Parse(txtTax.Text);
btnInsert.Text = "درج";
//db.FactorSaleTables.InsertOnSubmit(fcTableEdit);
db.SubmitChanges();
dgvSalesInvoi.DataSource = db.FactorSaleTables;
txtNumber.Clear();
txtWeight.Clear();
txtTotalWeight.Clear();
txtTotalPrice.Clear();
}
}
ردیف جدل فاکتورم در دیتابیس بصورت زیره:
149549
همانطور که میبینید ریف تکراری ندارم.
ولی در گریدویم پروژم بعد از اینکه هر بار قبول میکنم که میخوام اقلام جدید وارد کنم،ردیف تکراری در گرید ویو نمایش میده، ولی برا اقلام جدید نه،برنامه درست کار میکنه، فقط شماره ردیف به اندازه تعداد اقلامی که با یک شماره فاکتور ثبت شده فاصلست،گرید ویو پروژه بصورت زیره:
149550
ولی شماره ردیف در دیتابیس درست درج شده.
ممنون میشم راهنماییم کنید که کدم کجاش مشکل داره و چه کدی باید بجاش بنویسم؟
اگر تکنیک برنامم هم مشکل داره یا نظری بهتر دارید ممنون میشم راهنماییم کنید.
با تشکر
در پروژم بعد از اینکه عمل درج انجام میشه، پیغامی گذاشتم مبنی بر اینکه: آیا اقلام جدیدی میخواهید اضافه کنید؟
که کاربر اگر گزینه Yes را انتخاب کنه، دوباره اطلاعات رو میگیره و با همون شماره فاکتور و تاریخ درج میکنه.
اطلاعات درج میشه ولی مشکل اینکه شماره ردیفم در گرید ویو تکراری نمایش میده، درحالی که در جدول دیتابیس شماره ردیف درسته درج شده.
من از کد زیر استفاده کردم:
private void btnInsert_Click(object sender, EventArgs e)
{
db = new LinqToTrazoDataContext();
var fcTable = new FactorSaleTable();
fcTable.SaleDate = DateTime.Now;
fcTable.FactorNo = int.Parse(txtCodFactor.Text);
fcTable.CommodCodFact = txtSaleCodCommodity.Text;
fcTable.CommodName = cmbCommodityName.Text;
fcTable.CompanyName = txtNameCO.Text;
fcTable.Number = Int16.Parse(txtNumber.Text);
fcTable.TotalPrice = float.Parse(txtTotalPrice.Text);
fcTable.Weight = float.Parse(txtWeight.Text);
fcTable.TotalWeight = float.Parse(txtTotalWeight.Text);
fcTable.CommodSize = txtSize.Text;
fcTable.UnitPrice = float.Parse(txtUnitPrice.Text);
fcTable.Tax = float.Parse(txtTax.Text);
fcTable.Dicount = float.Parse(txtTax.Text);
db.FactorSaleTables.InsertOnSubmit(fcTable);
db.SubmitChanges();
dgvSalesInvoi.DataSource = db.FactorSaleTables;
DialogResult result = MessageBox.Show("آیا اقلام جدیدی میخواهید وارد کنید؟",
"وضعیت خرید", MessageBoxButtons.YesNo, MessageBoxIcon.Question,
MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading);
if (result == DialogResult.Yes)
{
txtNumber.Text = "0";
txtWeight.Text = "0";
txtTotalWeight.Text = "0";
txtTotalPrice.Text = "0";
db = new LinqToTrazoDataContext();
fcTableYes = new FactorSaleTable();
fcTableYes.SaleDate = DateTime.Now;
fcTableYes.FactorNo = int.Parse(txtCodFactor.Text);
fcTableYes.CommodCodFact = txtSaleCodCommodity.Text;
fcTableYes.CommodName = cmbCommodityName.Text;
fcTableYes.CompanyName = txtNameCO.Text;
fcTableYes.Number = Int16.Parse(txtNumber.Text);
fcTableYes.TotalPrice = float.Parse(txtTotalPrice.Text);
fcTableYes.Weight = float.Parse(txtWeight.Text);
fcTableYes.TotalWeight = float.Parse(txtTotalWeight.Text);
fcTableYes.CommodSize = txtSize.Text;
fcTableYes.UnitPrice = float.Parse(txtUnitPrice.Text);
fcTableYes.Tax = float.Parse(txtTax.Text);
fcTableYes.Dicount = float.Parse(txtTax.Text);
db.FactorSaleTables.InsertOnSubmit(fcTableYes);
db.SubmitChanges();
dgvSalesInvoi.DataSource = db.FactorSaleTables;
}
else if (result == DialogResult.No)
{
var lastRecord = db.FactorSaleTables.Select(fn => fn.FactorNo);
txtCodFactor.Text = (lastRecord.Max() + 1).ToString();
txtNumber.Clear();
txtWeight.Clear();
txtTotalWeight.Clear();
txtTotalPrice.Clear();
}
if (btnInsert.Text == "ویرایش")
{
SelectedIndexId = int.Parse(dgvSalesInvoi.CurrentRow.Cells["RowFact"].Value.ToString());
db = new LinqToTrazoDataContext();
var fcTableEdit = db.FactorSaleTables.Where(c=>c.RowFact==SelectedIndexId).Single();
//SaleDate = DateTime.Now,
//FactorNo = int.Parse(txtCodFactor.Text),
fcTableEdit.CommodCodFact = txtSaleCodCommodity.Text;
fcTableEdit.CommodName = cmbCommodityName.Text;
fcTableEdit.CompanyName = txtNameCO.Text;
fcTableEdit.Number = Int16.Parse(txtNumber.Text);
fcTableEdit.TotalPrice = float.Parse(txtTotalPrice.Text);
fcTableEdit.Weight = float.Parse(txtWeight.Text);
fcTableEdit.TotalWeight = float.Parse(txtTotalWeight.Text);
fcTableEdit.CommodSize = txtSize.Text;
fcTableEdit.UnitPrice = float.Parse(txtUnitPrice.Text);
fcTableEdit.Tax = float.Parse(txtTax.Text);
fcTableEdit.Dicount = float.Parse(txtTax.Text);
btnInsert.Text = "درج";
//db.FactorSaleTables.InsertOnSubmit(fcTableEdit);
db.SubmitChanges();
dgvSalesInvoi.DataSource = db.FactorSaleTables;
txtNumber.Clear();
txtWeight.Clear();
txtTotalWeight.Clear();
txtTotalPrice.Clear();
}
}
ردیف جدل فاکتورم در دیتابیس بصورت زیره:
149549
همانطور که میبینید ریف تکراری ندارم.
ولی در گریدویم پروژم بعد از اینکه هر بار قبول میکنم که میخوام اقلام جدید وارد کنم،ردیف تکراری در گرید ویو نمایش میده، ولی برا اقلام جدید نه،برنامه درست کار میکنه، فقط شماره ردیف به اندازه تعداد اقلامی که با یک شماره فاکتور ثبت شده فاصلست،گرید ویو پروژه بصورت زیره:
149550
ولی شماره ردیف در دیتابیس درست درج شده.
ممنون میشم راهنماییم کنید که کدم کجاش مشکل داره و چه کدی باید بجاش بنویسم؟
اگر تکنیک برنامم هم مشکل داره یا نظری بهتر دارید ممنون میشم راهنماییم کنید.
با تشکر