PDA

View Full Version : بدست آوردن جمع براساس کد محصول



bmvgod
سه شنبه 20 فروردین 1398, 14:24 عصر
وقتی میخوام جمع تعداد محصلاتی که کد محصول یکسان دارن رو توی گرید ویو نمایش بده وقتی از کد زیر استفاده میکنم:

LinqToTrazoDataContext db = new LinqToTrazoDataContext();
var Test = from t in db.FactorSaleTables
where t.CommodCodFact == t.CommodCodFact
select new
{
Number = db.FactorSaleTables.Sum(r => r.Number),
t.CommodName
};
dataGridView1.DataSource = Test;


ولی به مشکل زیر برخورد میگنم:
149998
ارقام یکسان با نام کالاهای تکراری.

ممنون میشم راهنماییم کنید
با تشکر فرواوان از تمامی بزرگواران

asiatec
سه شنبه 20 فروردین 1398, 15:08 عصر
var Test = db.factorSaleTables.GroupBy(t=>t.CommodFact).select(n=>new{
Number = n.Sum(r=>r.Number),
Name = n.Commdname
})

bmvgod
سه شنبه 20 فروردین 1398, 15:47 عصر
var Test = db.factorSaleTables.GroupBy(t=>t.CommodFact).select(n=>new{
Number = n.Sum(r=>r.Number),
Name = n.Commdname
})


بسیار ممنون از راهنمایتون.
کد رو داخل پروژه گذاشتم بدین صورت شد:

LinqToTrazoDataContext db = new LinqToTrazoDataContext();
var Test = db.FactorSaleTables.GroupBy(t => t.CommodCodFact).Select(n => new
{
Number = n.Sum(r => r.Number),
Name = n.commodName
});

ولی با خطای زیر روبرو شدم:


'System.Linq.IGrouping<string,Projeh_Tarazo.FactorSaleTable>' does not contain a definition for 'commodName' and no extension method 'commodName' accepting a first argument of type 'System.Linq.IGrouping<string,Projeh_Tarazo.FactorSaleTable>' could be found (are you missing a using directive or an assembly reference?)

که مربوط به خط Name = n.commodName میشه.
مشکل از کجاست نمیدونم؟
ممنون میشم راهنماییم کنید
باتشکر از تمامی بزرگواران

asiatec
سه شنبه 20 فروردین 1398, 20:15 عصر
تغییر بدین به
CommodName = n.commodName

bmvgod
سه شنبه 20 فروردین 1398, 21:25 عصر
تغییر بدین به
CommodName = n.commodName


بعد از .n تو لیست CommodName نیست:
150001

mr.sirwan
سه شنبه 20 فروردین 1398, 21:42 عصر
var Test = db.FactorSaleTables.GroupBy(s => new { s.CommodCodFact, s.CommodName }).Select(n => new
{
Number = n.Sum(r => r.Number),
Name = n.Key.CommodName
});

bmvgod
سه شنبه 20 فروردین 1398, 23:16 عصر
var Test = db.FactorSaleTables.GroupBy(s => new { s.CommodCodFact, s.CommodName }).Select(n => new
{
Number = n.Sum(r => r.Number),
Name = n.Key.CommodName
});




بسیار ممنون از راهنماییتون جواب داد.

من این اطلاعات رو داخل یک گریدویو نمیاش میدم، حالا اگه بخوام یک شماره ردیف به گریدویو اضافه کنم که شماره ردیف رو بهم نمایش بده چکار باید بکنم؟
ممنون میشم راهنماییم کنید
با تشکر فراوان

mr.sirwan
سه شنبه 20 فروردین 1398, 23:22 عصر
یک ستون توی دیتاگرید با اسم Row ایجاد کنید و بعد توی ایونت CellFormatting دیتاگرید این کد رو بنویسید:
dataGridView.Rows[e.RowIndex].Cells["Row"].Value = e.RowIndex + 1;

bmvgod
سه شنبه 20 فروردین 1398, 23:53 عصر
یک ستون توی دیتاگرید با اسم Row ایجاد کنید و بعد توی ایونت CellFormatting دیتاگرید این کد رو بنویسید:
dataGridView.Rows[e.RowIndex].Cells["Row"].Value = e.RowIndex + 1;



بسیار ممنون از راهنماییتون جواب داد.
با تشکر فراوان

bmvgod
سه شنبه 20 فروردین 1398, 23:55 عصر
یک ستون توی دیتاگرید با اسم Row ایجاد کنید و بعد توی ایونت CellFormatting دیتاگرید این کد رو بنویسید:
dataGridView.Rows[e.RowIndex].Cells["Row"].Value = e.RowIndex + 1;



در اینجا دکمه ای تحت عنوان "تشکر کردن" برای پست های مورد نظر نداره؟

bmvgod
جمعه 23 فروردین 1398, 01:25 صبح
باسلام خدمت تمامی دوستان و بزرگواران
وقتی فیلدهایی به GroupBy اضافه میکم، که کد بصورت زیر در میاد:

var Test = db.FactorSaleTables.GroupBy(s => new { s.CommodCodFact, s.CommodName,s.CommodSize,s.CompanyName })
.Select(n=>new
{
Number=n.Sum(r=>r.Number) ,
commodName=n.Key.CommodName,
Size = n.Key.CommodSize,
Compony = n.Key.CompanyName
});
dataGridView1.DataSource = Test;

ولی این خروجی رو بهم میده:
150016


وقتی یک فیلد TotalPrice رو به GroupBy اضافه میکنم کلا خروجیم بهم میریزه و به شکل زیر در میاد:
150017
میشه راهنماییم بفرمائید که کجای کدم اشتباه هست و از چه کدی باید استفاده کرد که برنامه درست کار کنه؟
باتشکر از تمامی بزرگواران

asiatec
شنبه 24 فروردین 1398, 16:34 عصر
لطفا مدل کالا رو قرار بدید

bmvgod
شنبه 24 فروردین 1398, 17:37 عصر
لطفا مدل کالا رو قرار بدید

میخوام از جدول فاکتورم، کد کالا به همراه مجموع تعداد اجناسی که فروخته شده به همراه نام جنس، جمع قیمت کل جنس فروخته شده، سایز محصول، شرکت سازنده محصول و تاریخ فروش تو گریدویو فرم گزارشم بهم نمایش بده.
نمیدونم تونستم جواب سوالتونو بدم و منظورمو برسونم؟

asiatec
دوشنبه 26 فروردین 1398, 01:05 صبح
شما باید گروه بندتون بر اساس کلید های خارجی باشه شما کلاس کالا و فاکتور رو بذارید تا بشه برای کوئری تصمیم گرفت

bmvgod
یک شنبه 01 اردیبهشت 1398, 01:59 صبح
شما باید گروه بندتون بر اساس کلید های خارجی باشه شما کلاس کالا و فاکتور رو بذارید تا بشه برای کوئری تصمیم گرفت

در جدول کالا،کلید اصلیم CommodCod و در جدول فاکتورم کلید خارجیم CommodCodFact میشه.که این دو جدول باهم ریلیشن خوردن.
کد درج کالام بدین صورته:

var db = new LinqToTrazoDataContext();
if (btnInsert.Text == "درج")
{
CommoTable codeTbable = new CommoTable
{
InsertDate = DateTime.Parse(dts),
InserTime = DateTime.Now.TimeOfDay,
CommodCod = txtAbbrev.Text + "-" + txtCodCommodity.Text,
CommodName = txtCommodName.Text,
CommodGenre = txtCommodGenre.Text,
CommodSize = txtCommodSize.Text,
CompanyName = txtCo.Text,
CommodNumb = Convert.ToInt16(txtCommodNume.Text),
CommodWeight = float.Parse(txtCommodWeight.Text),
CommodTotal = float.Parse(txtCommodTotal.Text),
UnitPrice = Int16.Parse(txtUnitPrice.Text),
Dicount = byte.Parse(txtDicount.Text),
Tax = Int16.Parse(txtTax.Text),
};
db.CommoTables.InsertOnSubmit(codeTbable);
db.SubmitChanges();
}


و کد بخش فاکتورم بصورت زیره:

var n = ry.CommodNumb;
n = (Int16) (n - Numbertxt);
ry.CommodNumb = n;
db.SubmitChanges();
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 = cmbSiz.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;


ممنون میشم راهنماییم کنید که از چه کدی برای گروه بندی باید استفاده کرد؟
باتشکر از تمامی دوستان و بزرگواران

Mahmoud.Afrad
یک شنبه 01 اردیبهشت 1398, 02:32 صبح
...
ولی این خروجی رو بهم میده:
150016



نوع ستونهای جدول FactorSaleTable در دیتابیس چیه؟ احتمالا مشکل از ستونهای رشته ای هست و مقدار رشته های درج شده در اون دو تا سطر برابر نبوده که تبدیل به یک سطر نشده.

asiatec
یک شنبه 01 اردیبهشت 1398, 09:57 صبح
با این روش که همه چی رشته ای هست اول داده های را چک کنید ببینید کامل شبیه هستند یا خیر،

bmvgod
یک شنبه 01 اردیبهشت 1398, 17:20 عصر
نوع ستونهای جدول FactorSaleTable در دیتابیس چیه؟ احتمالا مشکل از ستونهای رشته ای هست و مقدار رشته های درج شده در اون دو تا سطر برابر نبوده که تبدیل به یک سطر نشده.


جدول فاکتورم بدین شکله:
150061

Mahmoud.Afrad
یک شنبه 01 اردیبهشت 1398, 18:42 عصر
جدول فاکتورم بدین شکله:
150061

شما را ارجاع میدم به پاسخ های قبل

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

با این روش که همه چی رشته ای هست اول داده های را چک کنید ببینید کامل شبیه هستند یا خیر،

bmvgod
چهارشنبه 04 اردیبهشت 1398, 14:27 عصر
شما را ارجاع میدم به پاسخ های قبل


از روش زیر هم استفاده میکنم به نتیجه ای نمیرسم:

var Test = from x in db.FactorSaleTables
where (x.CommodCodFact == x.CommodCodFact && x.CommodName == x.CommodName
&& x.CommodSize == x.CommodSize && x.CompanyName == x.CompanyName)
group x by new
{
x.CommodCodFact,
x.CommodName,
x.CommodSize,
x.CompanyName
}into gxs

select new
{
CommodCodFact = gxs.Key.CommodCodFact,
CommodName=gxs.Key.CommodName,
Numb= gxs.Sum(s=>s.Number),
Size=gxs.Key.CommodSize,
Company=gxs.Key.CompanyName
};

ممنون میشم راهنماییم کنید که کجای کارم اشتباه هست و از چه کدی باید استفاده کنم؟
باتشکر از تمامی دوستان و بزرگواران

bmvgod
یک شنبه 08 اردیبهشت 1398, 22:52 عصر
از روش زیر هم استفاده میکنم به نتیجه ای نمیرسم:

var Test = from x in db.FactorSaleTables
where (x.CommodCodFact == x.CommodCodFact && x.CommodName == x.CommodName
&& x.CommodSize == x.CommodSize && x.CompanyName == x.CompanyName)
group x by new
{
x.CommodCodFact,
x.CommodName,
x.CommodSize,
x.CompanyName
}into gxs

select new
{
CommodCodFact = gxs.Key.CommodCodFact,
CommodName=gxs.Key.CommodName,
Numb= gxs.Sum(s=>s.Number),
Size=gxs.Key.CommodSize,
Company=gxs.Key.CompanyName
};

ممنون میشم راهنماییم کنید که کجای کارم اشتباه هست و از چه کدی باید استفاده کنم؟
باتشکر از تمامی دوستان و بزرگواران

دوستان و بزرگواران میشه راهنماییم بفرمائید کجای کد اشتباهه و از چه کدی باید استفاده کنم تا پروژه درست کار کنه؟
باتشکر از تمامی دوستان و بزرگواران

asiatec
یک شنبه 08 اردیبهشت 1398, 23:30 عصر
به نظر من مستقیم از کوئری سی کول سرور استفاده کن به صورتی که اول کامل تست کن بعد راحت بذار تو برنامه،با این همه فیلد رشته ای زیاد نمیشه کاری کرد

Mahmoud.Afrad
سه شنبه 10 اردیبهشت 1398, 00:32 صبح
دوستان و بزرگواران میشه راهنماییم بفرمائید کجای کد اشتباهه و از چه کدی باید استفاده کنم تا پروژه درست کار کنه؟
باتشکر از تمامی دوستان و بزرگواران

برای بار چندم؛
به احتمال قریب به یقین کد مشکلی ندارد بلکه دیتای ثبت شده در دیتابیس باعث ایجاد چند سطر میشه. دیتا را چک کنید.




پ.ن.
جدول فاکتور نرمال نیست. مشخصات کالا باید در جدول مجزا ثبت بشه.
بعضی از ستونها مثل کد و سایز نبایست رشته باشند.