PDA

View Full Version : سوال: محسابه فیلد های دیتاگرید با هم و دادن حاصل جمع کل در دیتاگرید



davidrobert
چهارشنبه 04 اردیبهشت 1392, 17:09 عصر
سلام میخواستم در دیتاگرید مقداری رو با هم محاسبه کنم یعنی تعداد رو ضرب کنم با قیمت و قیمت کل به دست بیاد و درصد تخفیف رو و قیمت واحد محاسبه کنم و در آخر قیمت واحد کل بر حسب درصد تخفیف حساب کنم در داخل دیتا گرید یعنی 2 تا لباس داریم که هر کدادم 1000 تومان میشه و در فیلد قیمت واحد جمعش رو بده 2000 تومان و 2 درصد هم تخفیف بده و جمع کل تخفیف بیشه 1800 تومان میخواستم این ها رو با دیتاگرید محاسبه کنم ممنون میشم اگه فایلی در این ضمینی داشته باشید من کلی در سورسام که از اینترنت گرفته بودم و اینترنت گشتم فایل کمکی پیدا نکردم که فایل های دیتاگرید رو با هم محاسبه کنه که موقع ثبت در دیتابیس با مشکل بر خورد نکنم ممنون میشم اگه فایل کمکی داشته باشید در اختیار من قرار بدید .ممنون بابت کمکتان من این عمل محاسبه رو برای دریافا فاکتور دریافت خدمات انجام میدم اگه کسی لباس ، شلوار خراب اورد و غیره رو با هم محسابه و ثبت کنم که این کارا اینجام شده این برنامه حسابداری هستش داری مینویسم که تعداد ، قیمت واحد ، قیمت کل ، تخفیف ، تخفیف کل و مبلغ قابل پرداخت رو نشون میده که می یاد اینها رو با هم حساب میکنه و در آخر قیمت کل رو در تخفیف و مبغ قابل پرداخت نشون میده.اگه روش محاسبش به صورت تعداد ضربدری قیمت و درصد تخفیف باشه خیلی ممنون میشم تا بدونم چطور ضرب و درصد تخفیف رو هم حساب کنم با تشکر فراوان.

khokhan
چهارشنبه 04 اردیبهشت 1392, 17:40 عصر
سلام میخواستم در دیتاگرید مقداری رو با هم محاسبه کنم یعنی تعداد رو ضرب کنم با قیمت و قیمت کل به دست بیاد و درصد تخفیف رو و قیمت واحد محاسبه کنم و در آخر قیمت واحد کل بر حسب درصد تخفیف حساب کنم در داخل دیتا گرید یعنی 2 تا لباس داریم که هر کدادم 1000 تومان میشه و در فیلد قیمت واحد جمعش رو بده 2000 تومان و 2 درصد هم تخفیف بده و جمع کل تخفیف بیشه 1800 تومان میخواستم این ها رو با دیتاگرید محاسبه کنم ممنون میشم اگه فایلی در این ضمینی داشته باشید من کلی در سورسام که از اینترنت گرفته بودم و اینترنت گشتم فایل کمکی پیدا نکردم که فایل های دیتاگرید رو با هم محاسبه کنه که موقع ثبت در دیتابیس با مشکل بر خورد نکنم ممنون میشم اگه فایل کمکی داشته باشید در اختیار من قرار بدید .ممنون بابت کمکتان من این عمل محاسبه رو برای دریافا فاکتور دریافت خدمات انجام میدم اگه کسی لباس ، شلوار خراب اورد و غیره رو با هم محسابه و ثبت کنم که این کارا اینجام شده این برنامه حسابداری هستش داری مینویسم که تعداد ، قیمت واحد ، قیمت کل ، تخفیف ، تخفیف کل و مبلغ قابل پرداخت رو نشون میده که می یاد اینها رو با هم حساب میکنه و در آخر قیمت کل رو در تخفیف و مبغ قابل پرداخت نشون میده.اگه روش محاسبش به صورت تعداد ضربدری قیمت و درصد تخفیف باشه خیلی ممنون میشم تا بدونم چطور ضرب و درصد تخفیف رو هم حساب کنم با تشکر فراوان.

سلام
دیوید عزیز این نمونه رو فعلا برای محاسبه جمع دو ستون داشته باش
البته این بهترین نمونه ای است که تا حالا کسی دیده :لبخند::چشمک:
حالا راجع به دو درصد تخفیف هم صحبت می کنیم :لبخند:

gholami146
چهارشنبه 04 اردیبهشت 1392, 18:01 عصر
با سلام
از زمانی که من در این سایت عضو شدم همه فقط دنبال سورس کد آماده هستند
چرا شما تو ی سورس هات نمونه داشتی اما نمیدونی چطوری باید ازش استفاده کنی چون همیشه دونبال لقمه حاضر و آماده هستی
یک سری به گزینه رنگ آمیزی سلول های دیبی گرید بزنی متوجه میشی که برای این کار باید محاسباتت رو در رویداد دیتا چنج و On Col Draw قرار بدی
موفق باشی

davidrobert
چهارشنبه 04 اردیبهشت 1392, 18:20 عصر
با سلام
از زمانی که من در این سایت عضو شدم همه فقط دنبال سورس کد آماده هستند
چرا شما تو ی سورس هات نمونه داشتی اما نمیدونی چطوری باید ازش استفاده کنی چون همیشه دونبال لقمه حاضر و آماده هستی
یک سری به گزینه رنگ آمیزی سلول های دیبی گرید بزنی متوجه میشی که برای این کار باید محاسباتت رو در رویداد دیتا چنج و On Col Draw قرار بدی
موفق باشی
سلام من نزدیک 2000 تا سورس سی شارپ دارم ولی تو هیچ کدام از این سورس ها نبود بخاطر همین اگه بود استفاده میکردم برادر بخاطر همین نتونستم ازشون استفاده کنم ولی هر چیزی که داشت و کمکم میکرد من رو استفاده کردم ولی اونها که نداشت سوال میکردم.

gholami146
چهارشنبه 04 اردیبهشت 1392, 18:25 عصر
خوب من به شما راهنمایی کردم : :لبخند:
حالا الباقیش با خودتون از راهی که به شما دادم میتونید خیلی جاها استفاده کنید برید و راجعبش تحقیق کنید
موفق باشید
در ضمن داشتن سورس ملاک نیست بنظر من ملاک اصلی فهمیدن اتفاقات داخل سورس هاست

davidrobert
چهارشنبه 04 اردیبهشت 1392, 18:46 عصر
خوب من به شما راهنمایی کردم : :لبخند:
حالا الباقیش با خودتون از راهی که به شما دادم میتونید خیلی جاها استفاده کنید برید و راجعبش تحقیق کنید
موفق باشید
در ضمن داشتن سورس ملاک نیست بنظر من ملاک اصلی فهمیدن اتفاقات داخل سورس هاست
بردار ممنون ولی چیزی در مورد DataChangeOnColumnDraw پیدا نکردم

davidrobert
چهارشنبه 04 اردیبهشت 1392, 18:56 عصر
سلام برادر khokhan (http://barnamenevis.org/member.php?131732-khokhan) ممنون بابت کمکتون من کد ها رو نوشتم در رویداد ماشین حساب یا Calc ولی من دیتاگرید رو از محیط طراحی ساختم و کد ها رو نوشتم جواب نگرفتم نه عمل جمع رو انجام داد و نه ضرب من تعداد رو با قیمت رو به هش دادم و نام فیلد های محساباتی هم دادم ولی عمل محاسبه رو انجام نداد و کد ها رو در رویداد CellValueChanged نوشتم وقتی رو فرم دریافت خدمات زدم نشون بده فرم مخفی شود و یه رویداد مثل شما ایجاد کردم و در اونجا فیلد های محسابی که رو دادم ولی هیچ نوع عمل محساباتی انجام نداد در این رویداد نوشتم اینم کدهای من مرور کردم ولی دلیل خطا رو نفهمیدم نام سلول رو درست دادم ولی دلیل محسابه نکردنش رو نمیدانم که تعداد رو با قیمت ضرب کنه و قیمت واحد کل رو بده و قیمت واحد کل رو کم کنم با تخفیف و تخفیف کل رو بده و در آخر مبلغ قابل پرداخت رو نشون بده. من مرحله اول تعداد و قیمت رو دادم ولی عملی انجام نداد اینهم کد من برای محسابه در فرم
private void Calculate(object sender, DataGridViewCellEventArgs e)
{
object cnt = dataGridView1.CurrentRow.Cells["ClmNumber"].Value;
object Ghaymat = dataGridView1.CurrentRow.Cells["ClmPayUint"].Value;
double cntNumber = 0;
double GhaymatNumber = 0;
if (cnt != null)
cntNumber = Double.Parse(cnt.ToString());
if (Ghaymat != null)
GhaymatNumber = Double.Parse(Ghaymat.ToString());
dataGridView1.CurrentRow.Cells["ClmPayUintCol"].Value = cntNumber * GhaymatNumber;
}
و این هم کل کد من در فرم using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace Project_Poshak
{
public partial class FrmListRecFactorKhedemat : Form
{
public FrmListRecFactorKhedemat()
{
InitializeComponent();
Program.MakebuttonStyle(this.BtnExit);
Program.MakebuttonStyle(this.BtnMin);
Program.MakebuttonStyle(this.BtnAddNumDoc);
}


public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();


private void BtnExit_Click(object sender, EventArgs e)
{
this.Close();
}
ClsListRecFoctorKhedemat ClsKhedemat = new ClsListRecFoctorKhedemat();
private void FrmListRecFactorKhedemat_Load(object sender, EventArgs e)
{
ClsKhedemat.ShowDoc_Khedemat(clmDoc);
dataGridView1[0, 0].Value = "1";


//کد مروبط به تغییر رنگ دیتاگرید
for (int i = 0; i < dataGridView1.RowCount; i++)

if (i % 2 == 0)
dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.MediumSlateBlue;
}

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
//if ((e.ColumnIndex == 3) && (e.RowIndex >= 0) && (e.RowIndex != dataGridView1.RowCount - 1))
//{
// dataGridView1.Rows.RemoveAt(e.RowIndex);
//}
}

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == clmDoc.Index && e.RowIndex >= 0)
{
dataGridView1[2, e.RowIndex].Value = ClsKhedemat.ShowDocKhedemat(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());
dataGridView1[3, e.RowIndex].Value = ClsKhedemat.CodeKhedemat(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());
}
for (int i = 0; i < dataGridView1.RowCount; i++)

if (i % 2 == 0)
dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.MediumSlateBlue;
}

private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
dataGridView1[0, dataGridView1.RowCount - 1].Value = dataGridView1.RowCount.ToString();
for (int RowCount = 1; RowCount < dataGridView1.RowCount; RowCount++)
{
dataGridView1[0, RowCount - 1].Value = RowCount.ToString();
}
}

private void dataGridView1_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
{
for (int RowCount = 1; RowCount < dataGridView1.RowCount; RowCount++)
{
dataGridView1[0, RowCount - 1].Value = RowCount.ToString();
}
dataGridView1[0, dataGridView1.RowCount - 1].Value = dataGridView1.RowCount.ToString();
}

private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (dataGridView1.IsCurrentCellDirty)
{
dataGridView1.CommitEdit(DataGridViewDataErrorCont exts.Commit);
}
}

private void BtnExit_MouseHover(object sender, EventArgs e)
{
toolTip1.SetToolTip(BtnExit, "بستن پنجره");
BtnExit.BackColor = Color.PaleVioletRed;
}

private void BtnExit_MouseLeave(object sender, EventArgs e)
{
BtnExit.BackColor = System.Drawing.SystemColors.Highlight;
}

private void BtnMin_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}

private void BtnMin_MouseHover(object sender, EventArgs e)
{
toolTip1.SetToolTip(BtnMin, "کمینه کردن");
BtnMin.BackColor = Color.PaleVioletRed;
}

private void BtnMin_MouseLeave(object sender, EventArgs e)
{
BtnMin.BackColor = System.Drawing.SystemColors.Highlight;
}

private void pictureBox1_MouseHover(object sender, EventArgs e)
{
pictureBox1.BackColor = Color.CornflowerBlue;
}

private void pictureBox1_MouseLeave(object sender, EventArgs e)
{
pictureBox1.BackColor = Color.Transparent;
}

private void panel3_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(this.Handle, 0xa1, 0x2, 0);
}
}

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(this.Handle, 0xa1, 0x2, 0);
}
}

private void panel2_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(this.Handle, 0xa1, 0x2, 0);
}
}

private void BtnAddNumDoc_Click(object sender, EventArgs e)
{
FrmListDocAndNum fm = new FrmListDocAndNum();
fm.ShowDialog();
FrmListRecFactorKhedemat_Load(null, null);
}

private void BtnAddNumDoc_MouseHover(object sender, EventArgs e)
{
toolTip1.SetToolTip(BtnAddNumDoc, "ثبت شماره سند");
BtnAddNumDoc.BackColor = System.Drawing.SystemColors.ButtonShadow;
}

private void BtnAddNumDoc_MouseLeave(object sender, EventArgs e)
{
BtnAddNumDoc.BackColor = System.Drawing.SystemColors.Highlight;
}

private void dataGridView1_AlternatingRowsDefaultCellStyleChang ed(object sender, EventArgs e)
{
for (int i = 0; i < dataGridView1.RowCount; i++)

if (i % 2 == 0)
dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.MediumSlateBlue;
}

private void timer1_Tick(object sender, EventArgs e)
{

}
private void Calculate(object sender, DataGridViewCellEventArgs e)
{
object cnt = dataGridView1.CurrentRow.Cells["ClmNumber"].Value;
object Ghaymat = dataGridView1.CurrentRow.Cells["ClmPayUint"].Value;
double cntNumber = 0;
double GhaymatNumber = 0;
if (cnt != null)
cntNumber = Double.Parse(cnt.ToString());
if (Ghaymat != null)
GhaymatNumber = Double.Parse(Ghaymat.ToString());
dataGridView1.CurrentRow.Cells["ClmPayUintCol"].Value = cntNumber * GhaymatNumber;
}
}
} ممنون بابت کمکتون من از محیط طراحی برای ساخت دیتاگرید استفاده کردم نه کد نویسی برادر اگه به صورت کد نویسی باید دیتاگرید رو درست کنم تا بتونم عمل محاسبات رو انجام بدم اگه به صورت طراحی نمیشه چطور باید دیتاگرید رو داخل پنل نمایش بدم این رو نمی دانم ممنون میشم کمک کنید من رو و همین طور موقع خوندن اطلاعات از دیتابیس داخل دیتاگرید با مشکل بر خورد نکنم.

khokhan
چهارشنبه 04 اردیبهشت 1392, 20:20 عصر
سلام

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


object cnt = dataGridView1.CurrentRow.Cells["ClmNumber"].Value; object Ghaymat = dataGridView1.CurrentRow.Cells["ClmPayUint"].Value;
double cntNumber = 0;
double GhaymatNumber = 0;
if (cnt != null)
cntNumber = Double.Parse(cnt.ToString());
if (Ghaymat != null)
GhaymatNumber = Double.Parse(Ghaymat.ToString());
dataGridView1.CurrentRow.Cells["ClmPayUintCol"].Value = cntNumber * GhaymatNumber;

davidrobert
چهارشنبه 04 اردیبهشت 1392, 20:52 عصر
دستت در نکونه برادر khokhan (http://barnamenevis.org/member.php?131732-khokhan) مشکلم حل شود انشالله شما هم همیشه به راحتی مشکلاتون حل بیشه همین طور که شما کمک میکنید به ما. با تشکر فراوان

davidrobert
پنج شنبه 05 اردیبهشت 1392, 10:18 صبح
سلام برادر khokhan (http://barnamenevis.org/member.php?131732-khokhan) من مشکلم تو محاسبات حل شود ولی یه مشکلی که دارم اینکه مقدار تعداد رو به پیش فرض از NullValue یک قرار دادم و میخوام قیمت رو بدم عمل محسابه رو انجام بده انجام نمیده و وقتی مقدار رو از یک به 2 تغییر میدم عمل محسابه رو انجام میده و امدم مقدار رو خالی کردم و مقدار یک رو دسته دادم مقدار یک رو حساب کرد و با قیمت ولی در قسمت تخفیف کل وقتی تعداد رو دادم در تخفیف کل این پیغام رو داد اول NaN و وقتی قیمت رو دادم این پیغام رو دادم Infinity و وقتی درصد تخفیف رو دادم درصد تخفیف رو حساب کرد میخوام اگه درصدی تخفیف داده نشود یعنی مقدار درصد تخفیف 0 بود قیمت اصلی رو بده و نه اینکه مقدار یک دادم قیمت رو بده و وقتی صفر قرار میدم تو تخفیف تو قسمت تخفیف کل پیغام Infinity میده و اینهم کدهای من برای عمل محاسبه و عمل محسابه رو بر حسب ریال انجام میده چون تو قسمت Format Style شو ر Currency قرار دادم تا بر حسب ریال محاسبه کنه و مقدار Currecy رو یک و یک رقم اعشار کردم .اینم کد ها من برای محسابه ممنون بابت کمکتان.
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
object cnt = dataGridView1.CurrentRow.Cells["ClmNumber"].Value;
object Ghaymat = dataGridView1.CurrentRow.Cells["ClmPayUint"].Value;
double cntNumber = 0;
double GhaymatNumber = 0;
if (cnt != null)
cntNumber = Double.Parse(cnt.ToString());
if (Ghaymat != null)
GhaymatNumber = Double.Parse(Ghaymat.ToString());
dataGridView1.CurrentRow.Cells["ClmPayUintCol"].Value = cntNumber * GhaymatNumber;
object kol = dataGridView1.CurrentRow.Cells["ClmPayUintCol"].Value;
object tekh = dataGridView1.CurrentRow.Cells["ClsSlake"].Value;
double kolghamet = 0;
double tekhkol = 0;
if (kol != null)
kolghamet = Double.Parse(kol.ToString());
if (tekh != null)
tekhkol = Double.Parse(tekh.ToString());
dataGridView1.CurrentRow.Cells["clsSlakeCol"].Value = kolghamet / tekhkol;
dataGridView1.CurrentRow.Cells["ClsGhabelPay"].Value = kolghamet / tekhkol;
}

davidrobert
پنج شنبه 05 اردیبهشت 1392, 15:40 عصر
سلام میخواستم در تخفیف از درصد استفاده کنم یعنی تخفیف رو به صورتی در صدی به دست بیارم از چی علامتی برای درصد باید استفاده کنیم ممنون میشم تا بتونم مقدار رو به درصد به دست بیارم اگه مقدار درصد صفر بود همون مقدار رو نشون بده اگه یک بود یا عدد بالا تر اون موقع درصدی حساب کنه اینم کدا من برای محسابه دیتاگریدprivate void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
object cnt = dataGridView1.CurrentRow.Cells["ClmNumber"].Value;
object Ghaymat = dataGridView1.CurrentRow.Cells["ClmPayUint"].Value;
double cntNumber = 0;
double GhaymatNumber = 0;
if (cnt != null)
cntNumber = Double.Parse(cnt.ToString());
if (Ghaymat != null)
GhaymatNumber = Double.Parse(Ghaymat.ToString());
dataGridView1.CurrentRow.Cells["ClmPayUintCol"].Value = cntNumber * GhaymatNumber;
object kol = dataGridView1.CurrentRow.Cells["ClmPayUintCol"].Value;
object tekh = dataGridView1.CurrentRow.Cells["ClsSlake"].Value;
double kolghamet = 0;
double tekhkol = 0;
if (kol != null)
kolghamet = Double.Parse(kol.ToString());
if (tekh != null)
tekhkol = Double.Parse(tekh.ToString());
dataGridView1.CurrentRow.Cells["clsSlakeCol"].Value = kolghamet / tekhkol;
dataGridView1.CurrentRow.Cells["ClsGhabelPay"].Value = kolghamet / tekhkol;
}

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