صفحه 1 از 2 12 آخرآخر
نمایش نتایج 1 تا 40 از 69

نام تاپیک: صورت حساب بدهی یا طلب مشتری (هر رکورد نسبت به رکوردهای قبل محاسبه شود)

  1. #1
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    Post صورت حساب بدهی یا طلب مشتری (هر رکورد نسبت به رکوردهای قبل محاسبه شود)

    سلام دوستان عزیز.

    بنده یک دیتا گرید دارم که مقداربدهی و طلبکاری و نام مشتری را از بانک دریافت میکنه. که من میخوام 2 فیلد مانده حساب و وضعیت که در جدول مربوطه نیست و به این دیتا گرید اضافه کنم. و میخوام محاسبات زیر روی آن انجام بشه:
    اگر در سطر 1 مبلغ بدهی بزرگتر از صفر باشه و بستانکاری مساوی صفر باشه مانده حساب مبلغ بدهکاری رو نشان دهد یا به نحوی منها بشن. و وضعیت بدهکار را نشان بدهد.
    و یا اگر در سطر 1 مبلغ بدهکاری صفر و بستانکاری بیشتر از صفر باشد مانده حساب مبلغ بستانکاری را نشان بدهد و وضعیت بستانکار را نشان بدهد.
    و برای سطر های بعدی محاسبات به صورت زیر باشد.
    اگر در سطر 2 بدهکاری بزرگتر از صفر باشد و بستانکاری صفر باشد.مانده حساب سطر 1 با بدهکاری سطر 2 جمع میشود. و مبلغ در مانده حساب سطر 2نمایش میدهد و وضعیت اگرمنفی شد بستانکار و اگر مثبت شد بدهکار را نشان میدهد.
    یا اگر در سطر 2 بستانکاری بزرگتر از صفر باشد و بدهکاری صفر باشد.مانده حساب سطر 1 از بستانکاری سطر2 کم میشود. و مبلغ در مانده حساب سطر 2نمایش میدهد و وضعیت اگرمنفی شد بستانکار و اگر مثبت شد بدهکار را نشان میدهد.
    و در سطر 3مانده حساب سطر 2 از اینها کم میشود یا جمع میشود.
    وبه همین ترتیب در سطرهای بعد تا بی نهایت ادامه میدهیم.


    مثال:

    ردیف نام مشتری مبلغ بدهی مبلغ بستانکاری مانده حساب وضعیت

    1 علی 10 0 10 بدهکار
    2 علی 10 0 20 بدهکار
    3 علی 10 0 30 بدهکار
    4 علی 0 10 20 بدهکار
    5 علی 0 10 10 بدهکار
    6 علی 0 20 10- بستانکار
    7 علی 0 5 15- بستانکار
    8 علی 5 0 10- بدهکار
    ...
    ....
    ....


    و به همین ترتیب ادامه میدهیم.
    نکته :من نمیخوام که دو فیلد مانده حساب و وضعیت رو به جدولم اضافه کنم.میخوام سمت سی شارپ به دیتاگرید اضافه کنم.

    پیشاپیش ازهمه سپاسگذارم.
    لطفا نمونه کد بزارین فقط.چون پس فردا باید تحویل بدم.ممنونم

  2. #2

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    سلام دوست عزیز.
    میتونی با حلقه سطر به سطر بخونی و تفریق بدهکار و بستانکار رو توی یه متغیر ذخیره کنی و توی همون حلقه اخر دیتاگرید اضافش کنی و همون متغییر رو تا اخر حلقه داشته باشی.
    یه چیز تقریبا اینجوری:

    decimal bed=0,bes=0,mande=0;
    for(int i=0;i<dgv.rowcount;i++)
    {
    bed=convert.todecimal(dgv.rows[i].cell["bedehi"].value.tostring());
    bes=...
    mande=mande+(bes-bed);
    string vaz="بدهکار";
    if(mande>0) vaz="بستانکار";
    if(mande==0) vaz="بی حساب";
    dgv.rows[i].cell["vaziat"].value=vaz;
    dgv.rows[i].cell["man"].value=mande.tostring();
    }
    }

  3. #3
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    نقل قول نوشته شده توسط reza_ali202000 مشاهده تاپیک
    سلام دوست عزیز.
    میتونی با حلقه سطر به سطر بخونی و تفریق بدهکار و بستانکار رو توی یه متغیر ذخیره کنی و توی همون حلقه اخر دیتاگرید اضافش کنی و همون متغییر رو تا اخر حلقه داشته باشی.
    یه چیز تقریبا اینجوری:

    decimal bed=0,bes=0,mande=0;
    for(int i=0;i<dgv.rowcount;i++)
    {
    bed=convert.todecimal(dgv.rows[i].cell["bedehi"].value.tostring());
    bes=...
    mande=mande+(bes-bed);
    string vaz="بدهکار";
    if(mande>0) vaz="بستانکار";
    if(mande==0) vaz="بی حساب";
    dgv.rows[i].cell["vaziat"].value=vaz;
    dgv.rows[i].cell["man"].value=mande.tostring();
    }
    }
    ممنونم دوست عزیز.
    اما این خطا رو میده.

    1e.PNG

    لطفا راهنمایی بفرمایید.

  4. #4

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    نقل قول نوشته شده توسط kamiloted مشاهده تاپیک
    ممنونم دوست عزیز.
    اما این خطا رو میده.

    1e.PNG

    لطفا راهنمایی بفرمایید.
    دوست عزیز اسم کالومن وضعیتتون هرچی هست همونو بزارید.
    من این کد رو به عنوان نمونه نوشتم.

  5. #5
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

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

  6. #6
    کاربر تازه وارد
    تاریخ عضویت
    تیر 1395
    محل زندگی
    اصفهان
    سن
    23
    پست
    46

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    اگه میخوای اضافه کنی اینطوری میشه


    dataGridViw1.rows.add(هرچی که میخوای اضافه کنی را بزار)


  7. #7
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    نقل قول نوشته شده توسط aryadev مشاهده تاپیک
    اگه میخوای اضافه کنی اینطوری میشه


    dataGridViw1.rows.add(هرچی که میخوای اضافه کنی را بزار)

    ممنونم.دوست عزیز .
    من هرچی اضافه میکنم.بازم همینو میگه.
    لطفا یه کد منظم بهم بدین ممنون میشم

  8. #8

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    به دیتاگرید دو تا ستون بنام های vaziat و man اضافه کن بعد کد زیر رو استفاده کن..

    decimal bed=0,bes=0,mande=0;
    for(int i=0;i<dgv.rowcount;i++)
    {
    bed=convert.todecimal(dgv.rows[i].cell["bedehi"].value.tostring());
    bes=...
    mande=mande+(bes-bed);
    string vaz="بدهکار";
    if(mande>0) vaz="بستانکار";
    if(mande==0) vaz="بی حساب";
    dgv.rows[i].cell["vaziat"].value=vaz;
    dgv.rows[i].cell["man"].value=mande.tostring();
    }
    }




  9. #9
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    نقل قول نوشته شده توسط hosseines مشاهده تاپیک
    به دیتاگرید دو تا ستون بنام های vaziat و man اضافه کن بعد کد زیر رو استفاده کن..

    decimal bed=0,bes=0,mande=0;
    for(int i=0;i<dgv.rowcount;i++)
    {
    bed=convert.todecimal(dgv.rows[i].cell["bedehi"].value.tostring());
    bes=...
    mande=mande+(bes-bed);
    string vaz="بدهکار";
    if(mande>0) vaz="بستانکار";
    if(mande==0) vaz="بی حساب";
    dgv.rows[i].cell["vaziat"].value=vaz;
    dgv.rows[i].cell["man"].value=mande.tostring();
    }
    }



    ممنونم دوست عزیز.
    اما 2تا ستونی که ایجاد کردم میاد اول دیتا گرید.
    به این صورت:

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

  10. #10

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    ستون ها را بصورت دستی ایجاد میکنی یا با کد ...؟

  11. #11
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    نقل قول نوشته شده توسط hosseines مشاهده تاپیک
    ستون ها را بصورت دستی ایجاد میکنی یا با کد ...؟
    بقیه ستونها رو با کد و این 2 مورد رو که شما فرمودین به صورت دستی.

  12. #12
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    و یه سوال دیگه.چکار کنم که در دیتا گرید و یا ریپورت مقدار منفی مثلا -200 نوشته نشه اما همچنان سیستم وضعیت رو تشخیص بده که بدهکاره یا بستانکار؟

  13. #13

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    میتونی بررسی کنی که اگه مانده منفی بود در -1 ضرب کنی..

  14. #14
    کاربر دائمی
    تاریخ عضویت
    مهر 1389
    محل زندگی
    استان -مركزي دليجان
    پست
    165

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    اطلاعات را دستی وارد میکنم

  15. #15

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    نقل قول نوشته شده توسط mojtaba0912433 مشاهده تاپیک
    11 ضمیمه 141506

    آقا ما هم يه سوء استفاده از اين تايپيك ببريم اين كد را من ضميمه پروژه كردم ميشه راهنمايي كنيد خطايي كه ميگره مربوط به چي هست
    سلام
    حلقه ای که گذاشتین به دلیل اینکه دیتاگرید میتونید فیلد اضافه کنید حتما باید یه ردیف ازش کم کنید که جواب بده:

    for (int i = 0; i < dgv.RowCount-1; i++)

  16. #16
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    اما 2تا ستونی که ایجاد کردم میاد اول دیتا گرید.
    به این صورت:

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

  17. #17
    کاربر دائمی آواتار mrprestige
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    کرج
    پست
    646

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    نقل قول نوشته شده توسط kamiloted مشاهده تاپیک
    اما 2تا ستونی که ایجاد کردم میاد اول دیتا گرید.
    به این صورت:

    وضعیت - مانده حساب - کد مشتری - نام مشتری - بدهکار - بستانکار
    باید چطور جابه جا کنم.؟
    که به صورت زیر بشه.
    کد مشتری - نام مشتری - بدهکار - بستانکار -وضعیت- مانده حساب
    ممنونم که وقت میزارید
    سلام دوست عزیز ، شما اگه به دیتاگرید دقت کنید میبینید در بالا سمت راست اون یه فلش ریز مشکی رنگ وجود داره روی اون کلیک کن و در کادری که باز میشه روی Edit Column کلیک کن پنجره ای باز میشه که ستون های جدول شما توی اون قرار داره حالا روی هر ستونی که میخوای کلیک کن کنار همون کادری که نام ستون هات قرار داره دوتا فلش مشکی رنگ هست با اون ها ترتیب ستون هات رو به صورتی که میخوای تغییر بده و Ok کن .

    پیرو و موفق باشی .

  18. #18
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    776

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    سلام
    با DisplayIndex میتونید محل قرارگیری ستونها را تنظیم کنید
    برای نمونه لینک زیر را ببینید :
    https://msdn.microsoft.com/en-us/lib...v=vs.100).aspx

  19. #19
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    نقل قول نوشته شده توسط mrprestige مشاهده تاپیک
    سلام دوست عزیز ، شما اگه به دیتاگرید دقت کنید میبینید در بالا سمت راست اون یه فلش ریز مشکی رنگ وجود داره روی اون کلیک کن و در کادری که باز میشه روی Edit Column کلیک کن پنجره ای باز میشه که ستون های جدول شما توی اون قرار داره حالا روی هر ستونی که میخوای کلیک کن کنار همون کادری که نام ستون هات قرار داره دوتا فلش مشکی رنگ هست با اون ها ترتیب ستون هات رو به صورتی که میخوای تغییر بده و Ok کن .

    پیرو و موفق باشی .
    ممنونم دوست عزیز.
    من اون 6 مورد رو با کد آوردم.و اون 2 مورد رو به این طریقی که شما میفرمایین آوردم.
    اینقدر مبتدی دیگه نیستم.ممنونم

  20. #20

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

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

  21. #21
    کاربر دائمی آواتار mrprestige
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    کرج
    پست
    646

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    نقل قول نوشته شده توسط kamiloted مشاهده تاپیک
    ممنونم دوست عزیز.
    من اون 6 مورد رو با کد آوردم.و اون 2 مورد رو به این طریقی که شما میفرمایین آوردم.
    اینقدر مبتدی دیگه نیستم.ممنونم
    قصد جسارت نداشتم دوست عزیز میدونم شما حرفه ای هستید ، من وقتی جوابی به یک سوال میدم سعی میکنم طوری جواب بدم که اگه کسی هم مبتدی بود و همین مشکل رو داشت به پست بنده نگاه کرد براش نا مفهموم نباشه .

    پیروز موفق باشی.

  22. #22
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    سلام .ممنونم از دوستانی که برای این تاپیک وقت گذاشتن.
    اما متاسفانه اون چیزی که میخواستم کسی اشاره نکرد.خودم بالاخره موفق شدم با یه خط کد بنویسم بخش آخر سوالم رو منظورمه(نکته :من نمیخوام که دو فیلد مانده حساب و وضعیت رو به جدولم اضافه کنم.میخوام سمت سی شارپ به دیتاگرید اضافه کنم.).اگر کسی خواست تا براش توضیح بدم.

    الان من میخوام مانده حساب را به این صورت به دست بیارم.
    مثلا سطر اول نوشته نام مشتری علی و سطر دوم نوشته نام مشتری مهدی و سطر سوم نوشته محسن
    و سطر چهارم نوشته علی وبه همین ترتیب میره تا بی نهایت.در ضمن نام علی تصادفی تکرار میشه.احتمال داره 3بار یا بیشتر پشت سر هم تکرار بشه.
    حال من میخوام مانده حساب علی رو به شیوه ی بالا به دست بیارم در صورتی که بدهکاری و بستانکاری بقیه مشتری ها رو نادیده بگیره و فقط برای علی محاسبه بشه.
    ممنونم اگه راهنمایی کنید.

  23. #23

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    ببین این خوبه

    dgv.Rows.Cast<DataGridViewRow>()
    .All(c =>
    {
    c.Cells["مانده حساب"].Value =
    dgv.Rows.Cast<DataGridViewRow>()
    .Where(c1 => c1.Index < c.Index)
    .Where(c1 => c1.Cells["نام مشتری"].Value.ToString().Equals(c.Cells["نام مشتری"].Value.ToString()))
    .Select(c1 => int.Parse(c1.Cells["بستانکار"].Value.ToString()) -
    int.Parse(c1.Cells["بدهکار"].Value.ToString())).Sum() +
    int.Parse(c.Cells["بستانکار"].Value.ToString()) - int.Parse(c.Cells["بدهکار"].Value.ToString());

    return true;
    });


    test.zip

    اینم یک نمونه
    آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 29 مهر 1395 در 04:20 صبح

  24. #24
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    نقل قول نوشته شده توسط hamid_hr مشاهده تاپیک
    test.zip

    اینم یک نمونه
    ممنونم دوست عزیز کدهاتون عالی بودن.
    اگر ما بخواهیم طبق ستون شرح تصویر زیر محاسبات رو به روال قبل انجام بدیم باید چکار کنیم؟
    230.PNG
    مثلا در ستون شرح متن ستون ها به صورت تصادفی تا بی نهایت اتفاق می افته.
    من الان میخوام اون فیلدهایی که نوشته
    فروش کالا طی فاکتور شماره 5
    و خرید کالا طی فاکتور شماره 10
    و تسویه فاکتور خرید شماره 10 با اسناد پرداختنی
    محاسبه بشن.
    و اون فیلد هایی که نوشته کالای مثلا شانی مبلغ بدهکاری وبستانکاریشون نادیده گرفته بشه.
    و وضعیت مشتری هم ذکر بشه که آیا بدهکاره یا بستانکار
    ممنونم که وقت میزارید

  25. #25

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    خب من یه شرط گذاشتم به این صورت
     .Where(c1 => c1.Cells["نام مشتری"].Value.ToString().Equals(c.Cells["نام مشتری"].Value.ToString()))


    حالا شما باید اینو بر اساس کاری که میخواین تغییر بدین

  26. #26
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    نقل قول نوشته شده توسط hamid_hr مشاهده تاپیک
    خب من یه شرط گذاشتم به این صورت
     .Where(c1 => c1.Cells["نام مشتری"].Value.ToString().Equals(c.Cells["نام مشتری"].Value.ToString()))


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

    .Where(c1 => c1.Cells["شرح"].Value.ToString().Equals(c.Cells["شرح"].Value.ToString()))



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

    مانند تصویر زیر:
    230.PNG


    dataGridView1.Rows.Cast<DataGridViewRow>().Where(c 2 => !c2.Cells[3].Value.ToString().StartsWith("کالای")) .Where(c3 => !c3.Cells[3].Value.ToString().StartsWith("تخفیف"))




    ممنونم که وقت میزارید
    آخرین ویرایش به وسیله kamiloted : پنج شنبه 29 مهر 1395 در 01:34 صبح

  27. #27

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    خب باید شرطو عوض کنی
    مثلا میشه
    .Where(c1 => !c1.Cells["شرح"].Value.ToString().StartsWith("کالای")

  28. #28
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    نقل قول نوشته شده توسط hamid_hr مشاهده تاپیک
    خب باید شرطو عوض کنی
    مثلا میشه
    .Where(c1 => !c1.Cells["شرح"].Value.ToString().StartsWith("کالای")
    ممنونم.اما شرط رو هر طوری مینویسم اصلا اون چیزی که میخوام نمیشه.باید چکار کنم دقیق
    بعد میخوام هر مانده حساب دقیق روبروی خودش باشه طبق تصویر.کد شما همه رو تو 5 سطر اول مینویسه.

  29. #29

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    خب اینطوری باید بشه
    یه شرط اضافه میشه
                dgv.Rows.Cast<DataGridViewRow>()                .Where(c2 => !c2.Cells[0].Value.ToString().StartsWith("کالای"))
    .All(c =>
    {
    c.Cells[3].Value =
    dgv.Rows.Cast<DataGridViewRow>()
    .Where(c1 => c1.Index < c.Index)
    .Where(c1 => !c1.Cells[0].Value.ToString().StartsWith("کالای"))
    .Select(c1 => int.Parse(c1.Cells[1].Value.ToString()) -
    int.Parse(c1.Cells[2].Value.ToString())).Sum() +
    int.Parse(c.Cells[1].Value.ToString()) - int.Parse(c.Cells[2].Value.ToString());


    return true;
    });


    خط دوم اضافه میشه

  30. #30
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    Post صورت حساب بدهی یا طلب مشتری.

    سلام دوستان.
    من برای صورتحساب یه مشتری مبلغ بدهکاری رو منهای مبلغ بستانکاری میکنم و مانده حساب رو به دست میارم.مانند تصویر زیر.
    6552.PNG
    حال من یه کد نوشتم تا اگه مانده حساب کمتر از صفر بود بستانکار بنویسه.
    و اگه بیشتر بود بدهکار و اگه مساوی صفر بود تسویه.
    اما همونطور که توی شکل میبینید.همه رو تسویه نشون میده.
    مشکل از چیه دوستان..؟؟
    اینم کدی که برای این نوشتم:


    try
    {
    DataTable dt = new DataTable();
    Database db = new Database();
    string Vaziat = "";
    int MandeHesab = 0;
    dt = db.MySelect("SELECT Id_Kalaei, Kod_Moshtari, Name_Moshtari, Sharh, Tedad, Takhfif, PriceVahed, PasAzTakhfif, Bedehkar, Bostankar, '" + Vaziat + "', '" + MandeHesab + "', Tarikh FROM tbl_Kalaei");

    dataGridView1.DataSource = dt;


    dataGridView1.Rows.Cast<DataGridViewRow>().Where(c 2 => !c2.Cells[3].Value.ToString().StartsWith("کالای"))
    .Where(c3 => !c3.Cells[3].Value.ToString().StartsWith("تخفیف"))
    .All(c =>
    {

    MandeHesab = Convert.ToInt32(c.Cells[11].Value.ToString());

    if (MandeHesab > 0) Vaziat = "بدهکار";
    if (MandeHesab < 0) Vaziat = "بستانکار";
    if (MandeHesab == 0) Vaziat = "تسویه";
    c.Cells[10].Value = Vaziat;
    c.Cells[11].Value = dataGridView1.Rows.Cast<DataGridViewRow>()
    .Where(c1 => c1.Index < c.Index)

    .Where(c1 => !c1.Cells[3].Value.ToString().StartsWith("کالای"))

    .Select(c1 => int.Parse(c1.Cells[8].Value.ToString()) -
    int.Parse(c1.Cells[9].Value.ToString())).Sum() +
    int.Parse(c.Cells[8].Value.ToString()) - int.Parse(c.Cells[9].Value.ToString());

    return true;
    } );

    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }



    ممنونم از همگی

  31. #31
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: صورت حساب بدهی یا طلب مشتری.


    .Select(c1 => int.Parse(c1.Cells[8].Value.ToString()) - int.Parse(c1.Cells[9].Value.ToString())).Sum() +

    int.Parse(c.Cells[8].Value.ToString()) - int.Parse(c.Cells[9].Value.ToString());




    مبلغ مانده چجور بدست میارید؟
    ستون بد منهای جمع ستون بس و ستون بد
    به نظر من نیاز نیست به اون sum

    معمولا ستون مانده اینجوری بدست میاد

    total = total + Bes - Bed;
    آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 28 مهر 1395 در 20:47 عصر

  32. #32

    نقل قول: جمع و تفریق در datagridview بین سلول های آن

    کل این عمل رو میتونید با کوئری SQL پیاده کنید. دنبال مطلبی با عنوان Running Total باشید.

  33. #33
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    نقل قول: صورت حساب بدهی یا طلب مشتری.

    دوستمون Mahmoud.Afrad فرموده بودن که :
    کل این عمل رو میتونید با کوئری SQL پیاده کنید. دنبال مطلبی با عنوان Running Total باشید.

    ومن با جستجو این و پیدا کردم.
    http://www.codeproject.com/Articles/...-in-SQL-Server

    http://www.1keydata.com/sql/sql-running-totals.html
    خلاصه من نمیدونم چکار کنم دوستان میشه منو راهنمایی کنید.ممنونم

  34. #34

    نقل قول: صورت حساب بدهی یا طلب مشتری (هر رکورد نسبت به رکورد قبلی محاسبه شود)

    لینک زیر روشهای مختلف همراه با پرفورمنس بررسی شده اند
    https://sqlperformance.com/2014/01/t...running-totals

  35. #35
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    نقل قول: صورت حساب بدهی یا طلب مشتری (هر رکورد نسبت به رکورد قبلی محاسبه شود)

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    لینک زیر روشهای مختلف همراه با پرفورمنس بررسی شده اند
    https://sqlperformance.com/2014/01/t...running-totals
    سلام ممنونم .
    این لینک رو دیده بودم.
    من الان این کار ها رو انجام دادم.
    الان فقط همون تکه کد


    if (MandeHesab > 0) Vaziat = "بدهکار"; if (MandeHesab < 0) Vaziat = "بستانکار";
    if (MandeHesab == 0) Vaziat = "تسویه";




    مشکل دارم.
    چرا درست نمینویسه باید به چه شیوه ای بنویسم.
    چون وقت ندارم.ممنونم

  36. #36

    نقل قول: صورت حساب بدهی یا طلب مشتری (هر رکورد نسبت به رکورد قبلی محاسبه شود)

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

    اگر جدول زیر رو داشته باشیم
    CREATE TABLE [dbo].[TestTable](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [PersonId] [int] NOT NULL,
    [Bestankari] [decimal](18, 0) NOT NULL,
    [Bedehkari] [decimal](18, 0) NOT NULL,
    [Tarikh] [datetime2](7) NOT NULL
    )

    کوئری زیر پاسخ شماست. توجه کنید که زمان ثبت برای هر رکورد بایست وجود داشته باشه که میتونه از نوع datetime2 باشه تا بتوان بر حسب اون مجموع بدست بیاد
    select
    C.* ,
    (CASE WHEN Mande>0 THEN N'بدهکار'
    WHEN Mande<0 THEN N'طلبکار'
    ELSE N'تسویه'
    END) as Vaziat
    from
    (
    select
    B.Id ,
    B.PersonId ,
    B.Bedehkari ,
    B.Bestankari ,
    B.Tarikh ,
    (B.RunningTotalBedehkari - B.RunningTotalBestankari) as Mande
    From
    (
    SELECT
    A.*,
    RunningTotalBedehkari = (SELECT SUM(Bedehkari)
    FROM dbo.TestTable
    WHERE TestTable.PersonId = A.PersonId
    AND TestTable.Tarikh <= A.Tarikh),
    RunningTotalBestankari = (SELECT SUM(Bestankari)
    FROM dbo.TestTable
    WHERE TestTable.PersonId = A.PersonId
    AND TestTable.Tarikh <= A.Tarikh)
    FROM TestTable AS A
    ) AS B
    ) C
    ORDER BY C.PersonId , C.Tarikh

  37. #37
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    نقل قول: صورت حساب بدهی یا طلب مشتری (هر رکورد نسبت به رکورد قبلی محاسبه شود)

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    وقتی سوال میپرسید در همان پست اول جتما کد و در صورت لزوم اسکریپت جدول رو بزارید تا بشه تست کرد.

    اگر جدول زیر رو داشته باشیم
    CREATE TABLE [dbo].[TestTable](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [PersonId] [int] NOT NULL,
    [Bestankari] [decimal](18, 0) NOT NULL,
    [Bedehkari] [decimal](18, 0) NOT NULL,
    [Tarikh] [datetime2](7) NOT NULL
    )

    کوئری زیر پاسخ شماست. توجه کنید که زمان ثبت برای هر رکورد بایست وجود داشته باشه که میتونه از نوع datetime2 باشه تا بتوان بر حسب اون مجموع بدست بیاد
    select
    C.* ,
    (CASE WHEN Mande>0 THEN N'بدهکار'
    WHEN Mande<0 THEN N'طلبکار'
    ELSE N'تسویه'
    END) as Vaziat
    from
    (
    select
    B.Id ,
    B.PersonId ,
    B.Bedehkari ,
    B.Bestankari ,
    B.Tarikh ,
    (B.RunningTotalBedehkari - B.RunningTotalBestankari) as Mande
    From
    (
    SELECT
    A.*,
    RunningTotalBedehkari = (SELECT SUM(Bedehkari)
    FROM dbo.TestTable
    WHERE TestTable.PersonId = A.PersonId
    AND TestTable.Tarikh <= A.Tarikh),
    RunningTotalBestankari = (SELECT SUM(Bestankari)
    FROM dbo.TestTable
    WHERE TestTable.PersonId = A.PersonId
    AND TestTable.Tarikh <= A.Tarikh)
    FROM TestTable AS A
    ) AS B
    ) C
    ORDER BY C.PersonId , C.Tarikh
    ممنونم آقای Mahmoud.Afrad.

    اگه توجه کنید من در تصویر بالا فیلتر گذاشتم ونمیخوام بعضی از بدهکاری ها و بستانکاری ها تو محاسبه بیاد.
    و همینطور من 2 ستون وضعیت و مانده حساب را در جدول ندارم.
    اسکریپت جدول من:


    CREATE TABLE [dbo].[tbl_Kalaei](
    [Id_Kalaei] [int] IDENTITY(1,1) NOT NULL,
    [NumSanad] [char](10) NULL,
    [Kod_Moshtari] [char](10) NULL,
    [Name_Moshtari] [nvarchar](50) NULL,
    [Sharh] [nvarchar](400) NULL,
    [Tedad] [nvarchar](50) NULL,
    [Takhfif] [nvarchar](50) NULL,
    [PriceVahed] [nvarchar](50) NULL,
    [PasAzTakhfif] [nvarchar](50) NULL,
    [Bedehkar] [decimal](18, 0) NULL,
    [Bostankar] [decimal](18, 0) NULL,
    [Tarikh] [date] NULL,
    CONSTRAINT [PK_tbl_Kalaei] PRIMARY KEY CLUSTERED
    (
    [Id_Kalaei] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]


    بعد آیا من کد شما رو توی استور پروسیجر بریزم؟
    من اونا رو سمت سی شارپ نوشتم.
    ممنونم بیشتر منو راهنمایی کنید.

  38. #38

    نقل قول: صورت حساب بدهی یا طلب مشتری (هر رکورد نسبت به رکوردهای قبل محاسبه شود)

    شرطها(فیلتر) چی هست؟

    در ضمن
    اگر جدولی برای مشخصات مشتری دارید، نیازی به نام مشتری در tbl_Kalaei ندارید و میتونید با کدمشتری رابطه برقرار کنید.
    اگر در یک روز چند رکورد برای یک شخص بخواهید ثبت کنید نیاز دارید ستون تاریخ رو از نوع Datetime2 بگیرید.(تاریخ به تنهایی کافی نیست)
    آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 29 مهر 1395 در 00:19 صبح

  39. #39
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    نقل قول: صورت حساب بدهی یا طلب مشتری (هر رکورد نسبت به رکوردهای قبل محاسبه شود)

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    شرطها(فیلتر) چی هست؟

    در ضمن
    اگر جدولی برای مشخصات مشتری دارید، نیازی به نام مشتری در tbl_Kalaei ندارید و میتونید با کدمشتری رابطه برقرار کنید.
    اگر در یک روز چند رکورد برای یک شخص بخواهید ثبت کنید نیاز دارید ستون تاریخ رو از نوع Datetime2 بگیرید.(تاریخ به تنهایی کافی نیست)
    خب من یه شرط گذاشتم به این صورت
     .Where(c1 => c1.Cells["نام مشتری"].Value.ToString().Equals(c.Cells["نام مشتری"].Value.ToString()))


    حالا شما باید اینو بر اساس کاری که میخواین تغییر بدین[/QUOTE]

    دوست عزیز اگه من اینطور بنویسم

    .Where(c1 => c1.Cells["شرح"].Value.ToString().Equals(c.Cells["شرح"].Value.ToString()))



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

    مانند تصویر زیر:
    230.PNG


    dataGridView1.Rows.Cast<DataGridViewRow>().Where(c 2 => !c2.Cells[3].Value.ToString().StartsWith("کالای")) .Where(c3 => !c3.Cells[3].Value.ToString().StartsWith("تخفیف"))




    اگر در یک روز چند رکورد برای یک شخص بخواهید ثبت کنید نیاز دارید ستون تاریخ رو از نوع Datetime2 بگیرید.(تاریخ به تنهایی کافی نیست)
    دلیل این رو میفرمایید؟؟

    ممنونم که وقت میزارید

  40. #40

    نقل قول: صورت حساب بدهی یا طلب مشتری (هر رکورد نسبت به رکوردهای قبل محاسبه شود)

    کد زیر رو در تست کنید
    select
    C.* ,
    (CASE WHEN Mande>0 THEN N'بدهکار'
    WHEN Mande<0 THEN N'طلبکار'
    ELSE N'تسویه'
    END) as Vaziat
    from
    (
    select
    B.* ,
    (B.RunningTotalBedehkari - B.RunningTotalBestankari) as Mande
    From
    (
    SELECT
    A.*,
    RunningTotalBedehkari = (SELECT SUM(Bedehkar)
    FROM dbo.tbl_Kalaei
    WHERE tbl_Kalaei.Kod_Moshtari = A.Kod_Moshtari
    AND tbl_Kalaei.Tarikh <= A.Tarikh),
    RunningTotalBestankari = (SELECT SUM(Bostankar)
    FROM dbo.tbl_Kalaei
    WHERE tbl_Kalaei.Kod_Moshtari = A.Kod_Moshtari
    AND tbl_Kalaei.Tarikh <= A.Tarikh)
    FROM tbl_Kalaei AS A
    WHERE A.Sharh not like N'کالای :%'
    ) AS B
    ) C
    ORDER BY C.Kod_Moshtari , C.Tarikh

    اینکه گفتم زمان رو هم ذخیره کنید برای اینکه در سلکت داخلی برحسب تاریخ و زمان میاد جمع رو برای رکوردهای قبل انجام میده. حالا اگر فقط تاریخ باشه، جمع ممکن هست اشتباه بشه. البته این به منطقی که پیاده کردید برمیگرده که آیا در یک روز برای یک شخص چند رکورد ذخیره میشه یا نه؟
    آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 29 مهر 1395 در 02:54 صبح

صفحه 1 از 2 12 آخرآخر

تاپیک های مشابه

  1. سوال: qml و html مزیت های هر کدام نسبت به دیگری
    نوشته شده توسط ravand در بخش برنامه نویسی در محیط QT و هم خانواده هایش
    پاسخ: 15
    آخرین پست: جمعه 20 فروردین 1395, 12:18 عصر
  2. پاسخ: 15
    آخرین پست: دوشنبه 27 بهمن 1393, 20:04 عصر
  3. پاسخ: 4
    آخرین پست: سه شنبه 12 دی 1391, 12:13 عصر
  4. پاسخ: 2
    آخرین پست: شنبه 08 آبان 1389, 23:15 عصر
  5. رکورد جدید به جدول اضافه نمی شود!
    نوشته شده توسط odiseh در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: دوشنبه 30 مهر 1386, 21:35 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •