نمایش نتایج 1 تا 3 از 3

نام تاپیک: کند اجرا شدن کوئری محاسباتی

  1. #1
    کاربر دائمی
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    تهران
    پست
    159

    Question کند اجرا شدن کوئری محاسباتی

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

    کدهای زیر دکمه جستجو به صورت زیر می باشند :
    Connection cn = new Connection();                        SqlCommand cmd = new SqlCommand("Select * from Invoices where invoice_date between '" + mskDate1.Text + "' and '" + mskDate2.Text + "'", cn.GetConnection());
    cn.Open();
    DataSet ds = new DataSet();
    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    adapter.Fill(ds, "Acc");
    DataTable dtContact = ds.Tables[0];
    dgv.DataSource = dtContact;
    cmd.Dispose();
    cn.Close();
    if (first)
    {
    SetGridView();
    first= false;
    SettxtTotal();
    SetRemain();

    }
    CalcTotal();

    البته تابع آخر هم کدهاش در زیر هست:


    foreach (DataGridViewRow row in dgv.Rows)
    {
    long total = 0;
    int invId = Convert.ToInt32(row.Cells["invoice_id"].Value);
    Connection cn = new Connection();
    SqlCommand cmd = new SqlCommand("Select sell_price,qty,discount,tax from sells where invoice_id = " + invId + "", cn.GetConnection());
    cn.Open();
    SqlDataReader dat;
    dat = cmd.ExecuteReader();
    while (dat.Read())
    {
    long tmpTax = Convert.ToInt64(dat["tax"]);
    long tmpDis = Convert.ToInt64(dat["discount"]);
    long qty = Convert.ToInt64(dat["qty"]);
    long price = Convert.ToInt64(dat["sell_price"]);
    long tmpTotal = Convert.ToInt64(qty * price - tmpDis + tmpTax);
    total += tmpTotal;
    }
    dat.Close();


    row.Cells["txtTotal"].Value = total;
    long tempRemain = total - Convert.ToInt64(row.Cells["pay"].Value);
    row.Cells["txtRemain"].Value = tempRemain;



    }


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

    مواردی که نیاز دارم اینه که کاربر بعد از وارد کردن بازه تاریخ باید در گرید اطلاعات زیر رو ببینه :
    دکمه ویرایش - چاپ - کد - شماره فاکتور - تاریخ - دریافتی - توضیحات - قابل پرداخت - مانده
    اسکرییپت جدول فاکتورها :
    .
    USE [Acc]
    GO


    SET ANSI_NULLS ON
    GO


    SET QUOTED_IDENTIFIER ON
    GO


    CREATE TABLE [dbo].[Invoices](
    [invoice_id] [int] IDENTITY(1100,1) NOT NULL,
    [Serial] [bigint] NULL,
    [buyer_id] [int] NOT NULL,
    [invoice_date] [nchar](10) NULL,
    [pay] [bigint] NOT NULL,
    [comment] [nvarchar](max) NULL,
    CONSTRAINT [PK_Invoices] PRIMARY KEY CLUSTERED
    (
    [invoice_id] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]


    GO


    ALTER TABLE [dbo].[Invoices] WITH CHECK ADD CONSTRAINT [FK_Invoices_Buyers] FOREIGN KEY([buyer_id])
    REFERENCES [dbo].[Buyers] ([buyer_id])
    ON UPDATE CASCADE
    ON DELETE CASCADE
    GO


    ALTER TABLE [dbo].[Invoices] CHECK CONSTRAINT [FK_Invoices_Buyers]
    GO

    اسکریپت اطلاعات فاکتورها:

    USE [Acc]
    GO


    SET ANSI_NULLS ON
    GO


    SET QUOTED_IDENTIFIER ON
    GO


    CREATE TABLE [dbo].[sells](
    [sell_id] [bigint] IDENTITY(1,1) NOT NULL,
    [object_id] [int] NOT NULL,
    [sell_price] [bigint] NOT NULL,
    [qty] [float] NOT NULL,
    [discount] [bigint] NOT NULL,
    [tax] [bigint] NOT NULL,
    [invoice_id] [int] NOT NULL,

    CONSTRAINT [PK_sells] PRIMARY KEY CLUSTERED
    (
    [sell_id] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

    GO
    آخرین ویرایش به وسیله Mahmoud.Afrad : یک شنبه 19 شهریور 1396 در 20:12 عصر

  2. #2

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

    یک join ساده نیاز هست
    Select 
    Invoices.invoice_id,
    Invoices.invoice_date,
    Invoices.buyer_id,
    Invoices.pay,
    SUM(sells.sell_price*sells.qty - discount + tax) as Total,
    SUM(sells.sell_price*sells.qty - discount + tax)-Invoices.pay as Remain
    from Invoices
    join sells on Invoices.Invoice_id = sells.Invoice_id
    where invoice_date between '1396/06/01' and '1396/06/31'
    group by Invoices.invoice_id,
    Invoices.invoice_date,
    Invoices.buyer_id,
    Invoices.pay

  3. #3
    کاربر دائمی
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    تهران
    پست
    159

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

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    یک join ساده نیاز هست
    Select 
    Invoices.invoice_id,
    Invoices.invoice_date,
    Invoices.buyer_id,
    Invoices.pay,
    SUM(sells.sell_price*sells.qty - discount + tax) as Total,
    SUM(sells.sell_price*sells.qty - discount + tax)-Invoices.pay as Remain
    from Invoices
    join sells on Invoices.Invoice_id = sells.Invoice_id
    where invoice_date between '1396/06/01' and '1396/06/31'
    group by Invoices.invoice_id,
    Invoices.invoice_date,
    Invoices.buyer_id,
    Invoices.pay
    ممنون از اینکه وقت گذاشتین. لطفا راهنمایی کنید چطور این کد رو با دیتاگرید خودم نشون بدم. تشکر

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

  1. اجرا شدن کوئری pdo و ثبت نشدن در mysql
    نوشته شده توسط Mohammad-tashi در بخش PHP
    پاسخ: 6
    آخرین پست: پنج شنبه 19 شهریور 1394, 18:32 عصر
  2. آپديت شدن كوئري در فرم
    نوشته شده توسط ryonis در بخش Access
    پاسخ: 4
    آخرین پست: یک شنبه 29 آذر 1388, 11:32 صبح
  3. مقاله: کند اجرا شدن یک برنامه ساده
    نوشته شده توسط amir_port در بخش VB.NET
    پاسخ: 5
    آخرین پست: شنبه 24 مرداد 1388, 20:24 عصر
  4. سوال: اجرا نشدن کوئری
    نوشته شده توسط _abiriamir در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 7
    آخرین پست: دوشنبه 25 خرداد 1388, 12:36 عصر
  5. سوال: کند اجرا شدن برنامه
    نوشته شده توسط drwatson در بخش VB.NET
    پاسخ: 4
    آخرین پست: دوشنبه 10 تیر 1387, 17:05 عصر

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

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