Thursday, 18 July 2013

Direct Print with Report Viewer 2012

// Set report datasource to local report

 LocalReport report = new LocalReport();
            report.Refresh();
            report.ReportPath="ReportOrderReceipt.rdlc";//set your report path
            ReportParameter[] parms = new ReportParameter[5];
            report.DataSources.Add(new ReportDataSource("dsorder", dtitem));
            parms[0] = new ReportParameter("TrnsDisc", Convert.ToString(transactionvalue), false);
            parms[1] = new ReportParameter("TrnsPercentDis", Convert.ToString(transactionDisc), false);
            parms[2] = new ReportParameter("Total", Convert.ToString(total), false);
            parms[3] = new ReportParameter("TransactionId", Convert.ToString(TransactionId), false);
            parms[4] = new ReportParameter("customername", txtcustomername, false);
            report.SetParameters(parms);



// Export the given report as an EMF (Enhanced Metafile) file.

 private void Export(LocalReport report)
        {
            string deviceInfo =
              @"<DeviceInfo>
                <OutputFormat>EMF</OutputFormat>
                <PageWidth>3.25in</PageWidth>
                <PageHeight>11in</PageHeight>
                <MarginTop>0.20in</MarginTop>
                <MarginLeft>0.20in</MarginLeft>
                <MarginRight>0in</MarginRight>
                <MarginBottom>0in</MarginBottom>
            </DeviceInfo>";
            Warning[] warnings;
            m_streams = new List<Stream>();
            report.Render("Image", deviceInfo, CreateStream,
               out warnings);
            foreach (Stream stream in m_streams)
                stream.Position = 0;
        }


 // Handler for PrintPageEvents
        private void PrintPage(object sender, PrintPageEventArgs ev)
        {
            Metafile pageImage = new
               Metafile(m_streams[m_currentPageIndex]);

           // Adjust rectangular area with printer margins.
            Rectangle adjustedRect = new Rectangle(
                ev.PageBounds.Left - (int)ev.PageSettings.HardMarginX,
                ev.PageBounds.Top - (int)ev.PageSettings.HardMarginY,
                ev.PageBounds.Width,
                ev.PageBounds.Height);

            // Draw a white background for the report
            ev.Graphics.FillRectangle(Brushes.White, adjustedRect);

            // Draw the report content
            ev.Graphics.DrawImage(pageImage, adjustedRect);

            // Prepare for the next page. Make sure we haven't                  hit the end.
            m_currentPageIndex++;
            ev.HasMorePages = (m_currentPageIndex < m_streams.Count);
        }

        private void Print()
        {
            if (m_streams == null || m_streams.Count == 0)
                throw new Exception("Error: no stream to print.");
            PrintDocument printDoc = new PrintDocument();
            if (!printDoc.PrinterSettings.IsValid)
            {
                throw new Exception("Error: cannot find the default printer.");
            }
            else
            {
                printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
                m_currentPageIndex = 0;
                printDoc.Print();
            }
        }


// Create a local report for Report.rdlc, load the data,
//    export the report to an .emf file, and print it.


        public void Dispose()
        {
            if (m_streams != null)
            {
                foreach (Stream stream in m_streams)
                    stream.Close();
                m_streams = null;
            }
        }

Wednesday, 17 July 2013

Retrieve Random Record/Row from DataBase Table Using LINQ 2 SQL

var qry = from row in ctx.Customers
          where row.IsActive
          Order by row.Name 
          select row;
int count = qry.Count(); // 1st round-trip
int index = new Random().Next(count);

Customer cust = qry.Skip(index).FirstOrDefault(); // 2nd round-trip

Saturday, 20 April 2013

N level category display in tree structure using stored procedure

 N level category display in tree structure using stored procedure


CREATE PROCEDURE ASD_SP_GetCategoryId   
    (   
      @CultureId INT = 1 ,   
      @CategoryID INT = NULL   
    )   
AS    
 WITH    CTE ( CategoryID, CategoryName, ParentCategoryID, level, ParentName, IsActive ) 
          AS ( SELECT   CategoryID , 
                        CategoryName , 
                        ParentCategoryID , 
                        0 , 
                        CASE WHEN ParentCategoryID = 0 
                             THEN CAST(CategoryName AS VARCHAR(MAX)) 
                             ELSE CAST(CategoryName AS VARCHAR(MAX)) 
                        END , 
                        IsActive 
               FROM     Asd_vw_CategoryMAster 
               WHERE    ParentCategoryID = 0 
                        AND CategoryID <> ISNULL(@CategoryID, -1) 
                        AND IsDeleted = 0 
                        AND cultureId = @CultureId 
               UNION ALL 
               SELECT   C.CategoryID , 
                        C.CategoryName , 
                        C.ParentCategoryID , 
                        level + 1 , 
                        CAST (CT.ParentName + ' >> ' + C.CategoryName AS VARCHAR(MAX)) , 
                        C.IsActive 
               FROM     Asd_vw_CategoryMAster C 
                        INNER JOIN CTE CT ON CT.CategoryID = C.ParentCategoryID 
               WHERE    c.cultureId = @CultureId 
                        AND C.IsDeleted = 0 
                        AND C.CategoryID <> ISNULL(@CategoryID, -1) 
             ) 
    SELECT  CategoryID , 
            ParentName AS CategoryName , 
            ParentCategoryID , 
            IsActive 
    FROM    CTE 
    ORDER BY ParentName