صفحه 2 از 2 اولاول 12
نمایش نتایج 41 تا 69 از 69

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

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

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

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    کد زیر رو در تست کنید
    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

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

    ضمیمه 141674

    اما نتیجه کار شما شده این:
    1202265.PNG

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

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

    چیزی که من با کد خودم یعنی این کد ایجاد کردم.


    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);
    }





    نتیجش این شده:
    Me.PNG


    چیزی که من در اصل میخوام اینطور باید باشه:

    Me - Copy.PNG

    ممنون

  3. #43

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

    نقل قول نوشته شده توسط kamiloted مشاهده تاپیک
    ممنونم.کارتون 20
    کدتون هم سریعه و هم جالب.
    فقط مشکلاتی داره.محاسبات رو درست انجام نمیده.بعد شما اومدین کلا کالای: رو فیلتر کردین که نمایش نده.من میخوام نمایش بده اما مبالغش تو محاسبات فیلتر بشه.
    در اینصورت بایست شرط فیلتر رو ببرید جایی که محاسبه انجام میشه یعنی سلکت های درونی
    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
    AND Sharh not like N'کالای :%'),
    RunningTotalBestankari = (SELECT SUM(Bostankar)
    FROM dbo.tbl_Kalaei
    WHERE tbl_Kalaei.Kod_Moshtari = A.Kod_Moshtari
    AND tbl_Kalaei.Tarikh <= A.Tarikh
    AND Sharh not like N'کالای :%')
    FROM tbl_Kalaei AS A
    ) AS B
    ) C
    ORDER BY C.Kod_Moshtari , C.Tarikh

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

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

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    در اینصورت بایست شرط فیلتر رو ببرید جایی که محاسبه انجام میشه یعنی سلکت های درونی
    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
    AND Sharh not like N'کالای :%'),
    RunningTotalBestankari = (SELECT SUM(Bostankar)
    FROM dbo.tbl_Kalaei
    WHERE tbl_Kalaei.Kod_Moshtari = A.Kod_Moshtari
    AND tbl_Kalaei.Tarikh <= A.Tarikh
    AND Sharh not like N'کالای :%')
    FROM tbl_Kalaei AS A
    ) AS B
    ) C
    ORDER BY C.Kod_Moshtari , C.Tarikh

    ممنون.بازم نشد.

    از این فرمول استفاده کنید.
    Mandeh = Mandeh + (bed - bes);
    فیلتر هم اشتباه بود.

  5. #45

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

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

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

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

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    از خروجی کوئری بنده ، عکس بزارید و بگید انتظار دارید چی باشه.
    فرمول محاسبه مانده درست هست: مجموع بستانکاری منهای مجموع بدهکاری برای رکورد جاری و رکوردهای ماقبل.
    سلام ممنونم که وقت میزارید.

    چیزی که از کد شما به دست اومده:

    16565.PNG

    چیزی که من میخوام:

    59898.PNG

    دقیقا برای هر دو عکس از یک اعداد استفاده شده.

  7. #47

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

    توجه کنید که به همین خاطر گفتم به چیزی مثل زمان هم نیاز دارید تا ترتیب بین رکوردها مشخص باشه چون براساس فیلد تاریخ عملیات جمع صورت میگیره(نمیشه به جای تاریخ از ID استفاده کرد چون تضمینی نیست که فیلد ID به ترتیب باشه،در sqlserver 2012 و بالاتر ممکنه پرش داشته باشه یا اصلا ستون ID از نوع uniqueidentifier باشد). ستون تاریخ رو از نوع تاریخ+زمان (datetime2) ایجاد و تست کنید و نتیجه رو بگید.

  8. #48
    مدیر بخش آواتار ژیار رحیمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    1,095

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

    سلام
    روش مانده گیری شما دارای اشکال هست
    1- شما جمع فکتور و همچنین اقلام فاکتور رو نمایش میدی که روش صحیحی نمیباشد و انتظار داری الگوریتم فقط روی جمع فاکتور یا دریافتی/ پرداختی فاکتور اعمال شود که ان هم مستلزم فیلتر کردن بر اساس فیلدی شاخص که جمع مبلغ فاکتور را با مبلغ اقلام متمایز کنی.(در کل روش شما در نمایش کل و جز فاکتور اشتباه میباشد)نمایش جمع فاکتور یا بجای ان اقلام فاکتور در محاسبه مانده کفایت میکند
    2- شما ستون تشخیص(مانده) گذاشتی در صورتی که برای مانده حساب بستانکار از عدد منفی استفاده کردی.این کار اشتباه میباشد.
    3- روش(الگوریتم) مانده گیری ارائه شده صحیح میباشد ولی شما روی ورودی های اشتباه(جمع فاکتور و اقلام فاکتور) پیاده سازی کردی.
    First,solve the problem then write the code

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

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

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    توجه کنید که به همین خاطر گفتم به چیزی مثل زمان هم نیاز دارید تا ترتیب بین رکوردها مشخص باشه چون براساس فیلد تاریخ عملیات جمع صورت میگیره(نمیشه به جای تاریخ از ID استفاده کرد چون تضمینی نیست که فیلد ID به ترتیب باشه،در sqlserver 2012 و بالاتر ممکنه پرش داشته باشه یا اصلا ستون ID از نوع uniqueidentifier باشد). ستون تاریخ رو از نوع تاریخ+زمان (datetime2) ایجاد و تست کنید و نتیجه رو بگید.
    انجام شد اما متاسفانه هیچ تغییری توی نتیجه صورت نگرفت.
    ممنونم

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

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

    سلام.ممنونم.

    1- شما جمع فکتور و همچنین اقلام فاکتور رو نمایش میدی که روش صحیحی نمیباشد و انتظار داری الگوریتم فقط روی جمع فاکتور یا دریافتی/ پرداختی فاکتور اعمال شود که ان هم مستلزم فیلتر کردن بر اساس فیلدی شاخص که جمع مبلغ فاکتور را با مبلغ اقلام متمایز کنی.(در کل روش شما در نمایش کل و جز فاکتور اشتباه میباشد)نمایش جمع فاکتور یا بجای ان اقلام فاکتور در محاسبه مانده کفایت میکند
    (منظور شما این بود؟ این انجام شده.اما من به اون صورت هم نیاز دارم.)
    666.PNG

    2- شما ستون تشخیص(مانده) گذاشتی در صورتی که برای مانده حساب بستانکار از عدد منفی استفاده کردی.این کار اشتباه میباشد.(این رو برای فهم دوستان در نرم افزار پینت گذاشتم)


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

    روش مانده گیری شما دارای اشکال هست.
    ممنون میشم یه راهنمایی کنید.و یه روش به بنده بگید.
    سپاس
    آخرین ویرایش به وسیله Mahmoud.Afrad : دوشنبه 17 آبان 1395 در 16:10 عصر

  11. #51

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

    چیزی به نظرم نمبرسه که بگم جز اینکه فیلد تاریخ برای هر رکورد بایست متفاوت باشه.
    اسکریپت زیر رو در sqlserver management studio تست کنید
    USE [master];

    IF EXISTS(SELECT * FROM sys.databases WHERE name=N'TestDB2')
    BEGIN
    ALTER DATABASE [TestDB2] SET SINGLE_USER WITH ROLLBACK IMMEDIATE ;
    DROP DATABASE [TestDB2];
    END

    CREATE DATABASE [TestDB2];

    USE [TestDB2];

    CREATE TABLE [tbl_Kalaei](
    [Id_Kalaei] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
    [NumSanad] [nvarchar](100) NULL,
    [Kod_Moshtari] [int] NULL,
    [Sharh] [nvarchar](400) NULL,
    [Tedad] [int] NULL,
    [Takhfif] [decimal](18, 0) NULL,
    [PriceVahed] [decimal](18, 0) NULL,
    [PasAzTakhfif] [decimal](18, 0) NULL,
    [Bedehkar] [decimal](18, 0) NULL,
    [Bestankar] [decimal](18, 0) NULL,
    [Tarikh] [datetime2](7) NULL,
    );

    INSERT INTO [tbl_Kalaei] ([NumSanad], [Kod_Moshtari], [Sharh], [Tedad], [Takhfif], [PriceVahed], [PasAzTakhfif], [Bedehkar], [Bestankar], [Tarikh])
    VALUES ('a','1','aaa',10,0,100,1000,1000,0,SYSDATETIME()) ;
    INSERT INTO [tbl_Kalaei] ([NumSanad], [Kod_Moshtari], [Sharh], [Tedad], [Takhfif], [PriceVahed], [PasAzTakhfif], [Bedehkar], [Bestankar], [Tarikh])
    VALUES ('b','1','bbb',1,0,15,15,0,10,SYSDATETIME());
    INSERT INTO [tbl_Kalaei] ([NumSanad], [Kod_Moshtari], [Sharh], [Tedad], [Takhfif], [PriceVahed], [PasAzTakhfif], [Bedehkar], [Bestankar], [Tarikh])
    VALUES ('c','1',N'کالای : ccc',5,0,20,100,70,0,SYSDATETIME());
    INSERT INTO [tbl_Kalaei] ([NumSanad], [Kod_Moshtari], [Sharh], [Tedad], [Takhfif], [PriceVahed], [PasAzTakhfif], [Bedehkar], [Bestankar], [Tarikh])
    VALUES ('d','1','ddd',3,0,70,210,60,0,SYSDATETIME());
    INSERT INTO [tbl_Kalaei] ([NumSanad], [Kod_Moshtari], [Sharh], [Tedad], [Takhfif], [PriceVahed], [PasAzTakhfif], [Bedehkar], [Bestankar], [Tarikh])
    VALUES ('e','2','eee',8,0,30,240,200,0,SYSDATETIME());
    INSERT INTO [tbl_Kalaei] ([NumSanad], [Kod_Moshtari], [Sharh], [Tedad], [Takhfif], [PriceVahed], [PasAzTakhfif], [Bedehkar], [Bestankar], [Tarikh])
    VALUES ('f','2','fff',5,0,100,1000,0,200,SYSDATETIME());
    INSERT INTO [tbl_Kalaei] ([NumSanad], [Kod_Moshtari], [Sharh], [Tedad], [Takhfif], [PriceVahed], [PasAzTakhfif], [Bedehkar], [Bestankar], [Tarikh])
    VALUES ('g','2',N'کالای : ggg',10,0,100,1000,1000,0,SYSDATETIME());


    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
    AND Sharh not like N'کالای :%'),
    RunningTotalBestankari = (SELECT SUM(Bestankar)
    FROM dbo.tbl_Kalaei
    WHERE tbl_Kalaei.Kod_Moshtari = A.Kod_Moshtari
    AND tbl_Kalaei.Tarikh <= A.Tarikh
    AND Sharh not like N'کالای :%')
    FROM tbl_Kalaei AS A
    WHERE Sharh not like N'کالای :%'
    ) AS B
    ) C
    union
    select
    * ,
    RunningTotalBedehkari = null ,
    RunningTotalBestankari = null ,
    Mande = null ,
    Vaziat = null
    from tbl_Kalaei
    where Sharh like N'کالای :%'
    ORDER BY Kod_Moshtari , Tarikh

    آخرین ویرایش به وسیله Mahmoud.Afrad : جمعه 30 مهر 1395 در 23:53 عصر

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

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

    داداش ممنونم.خیلی لطف کردی.
    این خطا رو داد.
    48.PNG

    داداش اگه یه لطف کنی مشکل کد خودم رو بگی ممنون میشم.
    اصلا بیخیال این روش.
    سپاس

  13. #53

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

    لطفا این رو تست کنید


    int M = 0;
    dataGridView1.Rows.Cast<DataGridViewRow>().Where(c 2 => !c2.Cells[3].Value.ToString().StartsWith("کالای"))
    .Where(c3 => !c3.Cells[3].Value.ToString().StartsWith("تخفیف"))
    .All(c =>
    {
    M = 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());
    c.Cells[11].Value = M;
    c.Cells[10].Value = M == 0 ? "تسویه" : (M > 0 ? "بدهکار" : "بستانکار");
    return true;

    });


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

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

    نقل قول نوشته شده توسط hamid_hr مشاهده تاپیک
    لطفا این رو تست کنید


    int M = 0;
    dataGridView1.Rows.Cast<DataGridViewRow>().Where(c 2 => !c2.Cells[3].Value.ToString().StartsWith("کالای"))
    .Where(c3 => !c3.Cells[3].Value.ToString().StartsWith("تخفیف"))
    .All(c =>
    {
    M = 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());
    c.Cells[11].Value = M;
    c.Cells[10].Value = M == 0 ? "تسویه" : (M > 0 ? "بدهکار" : "بستانکار");
    return true;

    });

    ممنونم.جواب داد.
    فق سوالی که داشتم خدمتتون

    کدوم روش بهتر و سریع تر و بهینه و اصولی تر هست.
    که بعدا در داده زیاد باهاش به مشکل نخورم.
    روش شما یا روش من


    // decimal bed = 0, bes = 0, S = 0;
    // for (int i = 0; i < dataGridView1.RowCount; i++)
    // {
    // if (!dataGridView1.Rows[i].Cells[3].Value.ToString().StartsWith("کالای :") && !dataGridView1.Rows[i].Cells[3].Value.ToString().StartsWith("تخفیف"))
    // {
    // bed = Convert.ToDecimal(dataGridView1.Rows[i].Cells[8].Value.ToString());
    // bes = Convert.ToDecimal(dataGridView1.Rows[i].Cells[9].Value.ToString());
    // MandeHesab = MandeHesab + (bed - bes);
    // if (MandeHesab < 0) Vaziat = "بستانکار";
    // if (MandeHesab > 0) Vaziat = "بدهکار";
    // if (MandeHesab == 0) Vaziat = "تسویه";
    // if (MandeHesab < 0)
    // {
    // S = MandeHesab * (-1);
    // dataGridView1.Rows[i].Cells[11].Value = S.ToString();
    // }
    // else
    // {
    // dataGridView1.Rows[i].Cells[11].Value = MandeHesab.ToString();
    // }
    // dataGridView1.Rows[i].Cells[10].Value = Vaziat;
    // }

    // }

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

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

    تایمر گذاشتم با 25 تا ردیف.

    کد شما در 199 میلی ثانیه انجام شد.
    کد من در 299 میلی ثانیه.

    آیا این زمان برای 25 ردیف خوب هست یا خیر؟

  16. #56
    مدیر بخش آواتار ژیار رحیمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    1,095

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

    روش جناب حمید اصلاحیه کدهای شماست(آنچه که بعد از راهنمایی های زیاد جناب افراد شما ترجیح دادی کد شما اصلاح شود).روش شما اشتباه میباشد(گرفتن خروجی دلیل بر روشی مناسب نیست).
    شما datatable رو انتساب دادی به datagrid مجدد با cast کردن سطرها و tostring کردن سلول ها نتیجه رو بدست آوردی.
    چرا این محاسبه مانده رو روی datatable انجام نمیدی سپس نتیجه رو به دیتاگرید انتساب نمیدهی؟
    First,solve the problem then write the code

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

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

    نقل قول نوشته شده توسط ژیار رحیمی مشاهده تاپیک
    روش جناب حمید اصلاحیه کدهای شماست(آنچه که بعد از راهنمایی های زیاد جناب افراد شما ترجیح دادی کد شما اصلاح شود).روش شما اشتباه میباشد(گرفتن خروجی دلیل بر روشی مناسب نیست).
    شما datatable رو انتساب دادی به datagrid مجدد با cast کردن سطرها و tostring کردن سلول ها نتیجه رو بدست آوردی.
    چرا این محاسبه مانده رو روی datatable انجام نمیدی سپس نتیجه رو به دیتاگرید انتساب نمیدهی؟
    ممنونم که پاسخگو هستین.
    بنده دقیقا دنبال همچین روشی هستم .اما الان به علت بد قول نشدن در تحویل پروژه فعلا مجبورم با کار غیر اصولی تحویل بدم.این نرم افزار رو 3سال قبل نوشتم و دادم رفت.الان یه چند آیتم جدیدا به در خواست مشتری بهش اضافه کردم. و امروز تحویل دادم رفت.ممنونم.
    و میخوام حالا این کار رو انجام بدم و به عنوان ورژن 2 برای مشتری نصب کنم.

    در ضمن من از کدهای آقای Mahmoud.Afrad خیلی لذت بردم. و در تلاشم که یاد بگیرم و در پروژه انجام بدم.

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

  18. #58
    مدیر بخش آواتار ژیار رحیمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    1,095

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

    نمونه مانده گیری دو ستون بدهکار و بستانکار
    بجای استفاده از جدول دردیتابیس من از یک لیست در حافظه استفاده کردم

    public partial class Form2 : Form
    {
    private List<Document> documents;
    public Form2()
    {
    InitializeComponent();
    documents=new List<Document>();
    }


    private void InitDoc()
    {
    documents.Add(new Document { Id = 1, Code = 1, Comment = "فروش فاکتور شماره 1", Debit = 200000 });
    documents.Add(new Document { Id = 2, Code = 1, Comment = "فروش فاکتور شماره 2", Debit = 235000 });
    documents.Add(new Document { Id = 3, Code = 1, Comment = "دریافت بابت فاکتور شماره 1", Credit = 200000 });
    documents.Add(new Document { Id = 4, Code = 1, Comment = "دریافت بابت فاکتور شماره 2", Credit = 100000 });
    documents.Add(new Document { Id = 5, Code = 1, Comment = "فروش فاکتور شماره 3", Debit = 200000 });
    documents.Add(new Document { Id = 6, Code = 1, Comment = "دریافت بابت فاکتور شماره 2", Credit = 100000 });
    documents.Add(new Document { Id = 7, Code = 1, Comment = "دریافت بابت فاکتور شماره 2", Credit = 100000 });
    documents.Add(new Document { Id = 8, Code = 1, Comment = "دریافت بابت فاکتور شماره 2", Credit = 200000 });
    documents.Add(new Document { Id = 9, Code = 1, Comment = "پرداخت بابت فاکتور شماره 2", Debit = 65000 });


    documents.Add(new Document { Id = 10, Code = 2, Comment = "فروش فاکتور شماره 1", Debit = 500000 });
    documents.Add(new Document { Id = 11, Code = 2, Comment = "فروش فاکتور شماره 2", Debit = 295000 });
    documents.Add(new Document { Id = 12, Code = 2, Comment = "دریافت بابت فاکتور شماره 1", Credit = 400000 });
    documents.Add(new Document { Id = 13, Code = 2, Comment = "دریافت بابت فاکتور شماره 2", Credit = 100000 });
    documents.Add(new Document { Id = 14, Code = 3, Comment = "فروش فاکتور شماره 3", Debit = 200000 });


    }


    private void GetRemainingByCustomerCode(int Code) //customer code
    {
    decimal sumDebit = 0, sumCredit = 0;
    dataGridView1.DataSource = documents.Where(c => c.Code == Code)
    .Select(c =>
    {
    sumDebit += c.Debit;
    sumCredit += c.Credit;
    return new
    {
    c.Code,
    c.Comment,
    c.Debit,
    c.Credit,
    Remainnig = Math.Abs(sumDebit - sumCredit),
    Nature = (sumCredit > sumDebit) ? "بس" : (sumDebit > sumCredit) ? "بد" : "تس"
    };
    }).ToList();
    }


    private void Form2_Load(object sender, EventArgs e)
    {
    InitDoc();
    }


    private void btnShowResult_Click(object sender, EventArgs e)
    {
    if(string.IsNullOrEmpty(txtCustomerCode.Text))retu rn;
    int code;
    int.TryParse(txtCustomerCode.Text, out code);
    if(code<=0)return;
    GetRemainingByCustomerCode(code);
    }
    }


    public class Document
    {
    public int Id { get; set; }//آی دی رکورد
    public int Code { get; set; }//کد شخص
    public string Comment { get; set; }//توضیحات
    public decimal Debit { get; set; }//ستون بدهکار
    public decimal Credit { get; set; }//ستون بستانکار
    }
    فایل های ضمیمه فایل های ضمیمه
    First,solve the problem then write the code

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

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

    ممنونم بابت نمونه.جناب آفای
    ژیار رحیمی


    آیا
    چرا این محاسبه مانده رو روی datatable انجام نمیدی سپس نتیجه رو به دیتاگرید انتساب نمیدهی؟

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

    توضیح میدید لطفا؟؟

    بنده همیشه محاسبه ای که روی سلکت دیتا تیبل انجام میدم بدین صورته:


    DataTable dt3 = getdata("SELECT tbl_AnbarKala.CodeKala,tbl_SabtMahsool.Name ,MAX(tbl_SabtMahsool.Mojoodi),MAX(tbl_SabtMahsool. Mojoodi) / (tbl_SabtMahsool.TehdadFarei),SUM(tbl_AnbarKala.Vo rodi),SUM(tbl_AnbarKala.Vorodi) / (tbl_SabtMahsool.TehdadFarei),SUM(tbl_AnbarKala.Kh oroji),SUM(tbl_AnbarKala.Khoroji) / (tbl_SabtMahsool.TehdadFarei), (MAX(tbl_SabtMahsool.Mojoodi) + SUM(tbl_AnbarKala.Vorodi)) - SUM(tbl_AnbarKala.Khoroji), ((tbl_SabtMahsool.Mojoodi + SUM(tbl_AnbarKala.Vorodi)) -(SUM(tbl_AnbarKala.Khoroji))) / (tbl_SabtMahsool.TehdadFarei) " +


    بعد میریزم توی دیتا گرید.آیا منظور شما بدین صورت بود؟
    ممنونم

  20. #60
    مدیر بخش آواتار ژیار رحیمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    1,095

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

    برای تبدیل دیتاتیبل به لیست قبلا در تالار بحث شده خروجی دیتاتیبل رو به لیست تبدیل کن بعد از کویری Linq که در بالا گفته شد استفاده کن
    First,solve the problem then write the code

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

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

    سلام دوستان من میخوام یه عمل به همین صورت بر روی این فیلدها پیاده کنم.

    ردیف نوع سند نام کالا تعداد ورود/خروج مانده کالا

    1 فاکتور خرید سویا 250 250

    2 فاکتور خرید سویا 150 400

    3 فاکتور فروش سویا 25 375

    4 فاکتور مرجوعی فروش سویا 12 387

    5 فاکتور مرجوعی خرید سویا 5 382

    6 فاکتور خرید سویا 100 482

    7 فاکتور فروش سویا 60 422

    8 فاکتور خرید سویا 50 472

    9 فاکتور فروش سویا 70 402

    10 فاکتور مرجوعی فروش سویا 20 422

    11 فاکتور مرجوعی خرید سویا 10 412

    12 فاکتور فروش سویا 120 292



    فاکتور خرید و مرجوعی فروش به عنوان ورودی
    و فاکتور فروش و مرجوعی خرید به عنوان خروجی.

    من ستون تعداد را دارم
    میخوام با محاسبه
    ورودی منهای خروجی
    مانده کالا را به دست بیارم و بریزم تو ستون مانده کالا باید چکار کنم ؟؟؟
    ممنونم

  22. #62

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

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

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

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

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

    دوست عزیز برنامه نویسان هر کدوم یه نظری میدن.
    من موندم.کی درست بیان میکنه.

    میشه بفرمایید چه مشکل هایی به وجود میاد.

  24. #64

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

    ببینین به نظر من باید این محاسبات سمت کلاینت انجام بشه
    یعنی توی دیتابیس نباید براش ستون در نظر بگیرین. چون مثلا شما 100 تا ثبت داشتین حالا یکی از سطر ها باید ویرایش بشه اونوقت باید همه سطر های بعد از اون نیز ویرایش بشه تا مشکلی تو اعداد و ارقام پیش نیاد. ولی وقتی در لحظه براش محاسبات انجام بدین این مشکل پیش نمیاد.

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

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

    نقل قول نوشته شده توسط hamid_hr مشاهده تاپیک
    ببینین به نظر من باید این محاسبات سمت کلاینت انجام بشه
    یعنی توی دیتابیس نباید براش ستون در نظر بگیرین. چون مثلا شما 100 تا ثبت داشتین حالا یکی از سطر ها باید ویرایش بشه اونوقت باید همه سطر های بعد از اون نیز ویرایش بشه تا مشکلی تو اعداد و ارقام پیش نیاد. ولی وقتی در لحظه براش محاسبات انجام بدین این مشکل پیش نمیاد.
    ممنونم
    جناب hamid_hr

    حالا شما روشی برای این کار دارین که من توی دیتاتیبل انجام بدم و زمان بارگذاری کمتر داشته باشه.

    و بتونم ستون مانده کالا رو به دست بیارم؟؟؟
    سپاس

  26. #66

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

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

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

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

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

    ردیف نوع سند نام کالا تعداد ورود/خروج مانده کالا

    1 فاکتور خرید سویا 250 250

    2 فاکتور خرید سویا 150 400

    3 فاکتور فروش سویا 25 375

    4 فاکتور مرجوعی فروش سویا 12 387

    5 فاکتور مرجوعی خرید سویا 5 382

    6 فاکتور خرید سویا 100 482

    7 فاکتور فروش سویا 60 422

    8 فاکتور خرید سویا 50 472

    9 فاکتور فروش سویا 70 402

    10 فاکتور مرجوعی فروش سویا 20 422

    11 فاکتور مرجوعی خرید سویا 10 412

    12 فاکتور فروش سویا 120 292



    فاکتور خرید و مرجوعی فروش به عنوان ورودی
    و فاکتور فروش و مرجوعی خرید به عنوان خروجی.

    من ستون تعداد را دارم
    میخوام با محاسبه
    ورودی منهای خروجی
    مانده کالا را به دست بیارم و بریزم تو ستون مانده کالا باید چکار کنم ؟؟؟
    ممنونم
    دوستان دیتا گرید رو با این کد پر میکنم// چطور مانده رو به دست بیارم؟؟



    DataTable dt = new DataTable();
    Database db = new Database();
    string Type = "فاکتور فروش";
    string Type1 = "فاکتور خرید";
    string Type2 = "مرجوعی فروش";
    string Type3 = "مرجوعی خرید";
    int MandeKala = 0;
    dt = db.MySelect(" SELECT '" + Type + "' , NameClient,SerilFactoor,Anbar, ProductName, Tehdad, CostVahed, Takhfif, PasAzTakhfif,Tehdad * PasAzTakhfif,'" + MandeKala + "', Date FROM tbl_Factoor_Kharid " +
    "UNION ALL " +
    "SELECT '" + Type1 + "' , NameClient,codeFactoor,Anbar, ProductName, Tehdad, CostVahed, Takhfif, PasAzTakhfif,Tehdad * PasAzTakhfif,'" + MandeKala + "', Date FROM tbl_Factoor_Foroosh " +
    "UNION ALL " +
    "SELECT '" + Type2 + "', Name_Client , codeFactoors,Anbar, Name_Kala, Tehdad, CostVahed, Takhfif, PasAzTakhfif,Tehdad * PasAzTakhfif,'" + MandeKala + "', Date FROM tbl_Marjoei_Foroosh " +
    "UNION ALL " +
    "SELECT '" + Type3 + "',Client_Name, SerialFactoors, Anbar, Kala_Name, Tehdad, CostVahed, Takhfif, PasAzTakhfif,Tehdad * PasAzTakhfif,'" + MandeKala + "', Date FROM tbl_Marjoei_Kharid");


    dataGridView1.DataSource = dt;

  28. #68

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

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

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

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

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

    من کلا تو تاپیک بالام چگونه این عملیات رو انجام بدم همین

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

صفحه 2 از 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 عصر

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

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