Results 1 to 2 of 2

Thread: Crystal Reports empty when printed during runtime(without viewer)

  1. #1

    Thread Starter
    Junior Member
    Join Date
    Jun 2020
    Posts
    17

    Crystal Reports empty when printed during runtime(without viewer)

    I'm developing a small POS system using VB.Net , MS Sql and Crystal Reports. I have no trouble viewing reports using Cry Rep Viewer. But when i try to print a bill during runtime the report becomes empty. Following is the sequence i'm executing within the procedure.

    Generate bill no
    Deduct qty from stocks
    add the transaction from temp table to final sales table
    print bill
    delete temp table transactions
    clear for next transaction
    But my problem comes during the bill printing. Bill does not pickup the necessary records from the sales table. Following is my code for the end transaction. (I am using few of my own methods and functions which are from another class and im also using a fix bill no for testing)


    Code:
       Private Sub endCurrentTransaction()
        Try
            Dim sqlTempBill As String = "SELECT * FROM tb_transactions where cur_user='" & curUser & "'"
            Dim sqlSales As String = "SELECT * FROM tb_sales where bill_no=''"
    
            'Get Bill No
            Dim newBillNo As String = generateBillNo()
    
            'Deduct IT qty
            Dim tempBill As DataTable
            tempBill = myTbClass.myFunctionFetchTbData(sqlTempBill)
    
            Dim i As Integer = 0
            Dim curQty As Double = 0
            Dim trQty As Double = 0
            Dim updatedQty As Double = 0
    
            For i = 0 To tempBill.Rows.Count - 1
                curQty = 0
                'Get the Current stock qty
                Dim sqlgetCurQty As String = "SElECT cur_qty FROM tb_stock where it_batch_code='" & tempBill.Rows(i).Item("it_batch_code") & "'"
    
                conn.Open()
                Dim SqlCmdCurQty As New SqlCommand(sqlgetCurQty, conn)
                Dim DataReadercurQty As SqlDataReader = SqlCmdCurQty.ExecuteReader
                While DataReadercurQty.Read()
                    curQty = DataReadercurQty.Item(0)
                End While
                DataReadercurQty.Close()
                conn.Close()
    
                trQty = tempBill.Rows(i).Item("qty")
                updatedQty = curQty - trQty
                Dim sqlUpdateQtyString As String = "UPDATE tb_stock SET cur_qty=" & Math.Round((updatedQty), 3) & " Where it_batch_code='" & tempBill.Rows(i).Item("it_batch_code") & "'"
                conn.Open()
                Dim SqlCmdQty As New SqlCommand(sqlUpdateQtyString, conn)
                SqlCmdQty.ExecuteNonQuery()
                conn.Close()
    
                'add to sales
                Dim tempTbSales As DataTable
                tempTbSales = myTbClass.myFunctionFetchTbData(sqlSales)
                Dim dataRow As DataRow = tempTbSales.NewRow
                dataRow("it_code") = Trim(tempBill.Rows(i).Item("it_code"))
                dataRow("it_batch_code") = Trim(tempBill.Rows(i).Item("it_batch_code"))
                dataRow("it_name") = Trim(tempBill.Rows(i).Item("it_name"))
                dataRow("buy_price") = Math.Round(tempBill.Rows(i).Item("buy_price"), 3)
                dataRow("sell_price") = Math.Round(tempBill.Rows(i).Item("sell_price"), 3)
                dataRow("qty") = Math.Round(tempBill.Rows(i).Item("qty"), 3)
                dataRow("gross_val") = Math.Round(tempBill.Rows(i).Item("gross_val"), 3)
                dataRow("discount_val") = Math.Round(tempBill.Rows(i).Item("discount_val"), 3)
                dataRow("net_val") = Math.Round(tempBill.Rows(i).Item("net_val"), 3)
                dataRow("profit_profile") = Trim(tempBill.Rows(i).Item("profit_profile"))
                dataRow("discount_profile") = Trim(tempBill.Rows(i).Item("discount_profile"))
                dataRow("cus_name") = Trim(tempBill.Rows(i).Item("cus_name"))
                dataRow("tr_type") = Trim(cmbTrans.Text)
                dataRow("cr_card_type") = Trim(cmbCardType.Text)
                dataRow("card_no") = Trim(txtCardNo.Text)
                dataRow("bill_no") = newBillNo
                dataRow("discount_profile") = Trim(tempBill.Rows(i).Item("cus_name"))
                dataRow("cur_user") = curUser
                dataRow("added_date") = curServerDateTime
                tempTbSales.Rows.Add(dataRow)
                Call myTbClass.MyMethodUpdateTable(sqlSales, tempTbSales)
            Next
    
            i = 0
    
        'Print bill
        Dim cash, balance As Double
        Dim crepBill As New repBill
        crepBill.SetDatabaseLogon("sa", dbPwd)
        cash = Val(Me.txtCash.Text)
        balance = Val(Me.txtBalance.Text)
    
        crepBill.RecordSelectionFormula = "{TB_SALES.bill_no} ='" & "000015" & "'"
        crepBill.DataDefinition.FormulaFields("txtCash").Text = Format(cash, "#0.00")
        crepBill.DataDefinition.FormulaFields("txtBal").Text = Format(balance, "#0.00")
    
        crepBill.PrintToPrinter(1, False, 0, 0)
        crepBill.Dispose()
    
        'delete temp bill table
        For i = 0 To tempBill.Rows.Count - 1
            tempBill.Rows(i).Delete()
        Next
        Call myTbClass.MyMethodUpdateTable(sqlTempBill, tempBill)
    
        'reset front end
        Call loadBill()
        Call clearCurrentTransaction()
        Call clearCurrentSubTotals()
        Call clearCurCashBalance()
    
        'Íncrease the bill no by 1
        Call increaseBillNo()
    
        txtItCode.Focus()
        Catch ex As Exception
        MsgBox("This error was generated at endCurrentTransaction()")
        End Try
    End Sub
    enter image description here

  2. #2
    Frenzied Member
    Join Date
    Feb 2003
    Posts
    1,945

    Re: Crystal Reports empty when printed during runtime(without viewer)

    Quote Originally Posted by dilhanmail View Post
    I'm developing a small POS system using VB.Net , MS Sql and Crystal Reports. I have no trouble viewing reports using Cry Rep Viewer. But when i try to print a bill during runtime the report becomes empty. Following is the sequence i'm executing within the procedure.

    Generate bill no
    Deduct qty from stocks
    add the transaction from temp table to final sales table
    print bill
    delete temp table transactions
    clear for next transaction
    But my problem comes during the bill printing. Bill does not pickup the necessary records from the sales table. Following is my code for the end transaction. (I am using few of my own methods and functions which are from another class and im also using a fix bill no for testing)


    Code:
       Private Sub endCurrentTransaction()
        Try
            Dim sqlTempBill As String = "SELECT * FROM tb_transactions where cur_user='" & curUser & "'"
            Dim sqlSales As String = "SELECT * FROM tb_sales where bill_no=''"
    
            'Get Bill No
            Dim newBillNo As String = generateBillNo()
    
            'Deduct IT qty
            Dim tempBill As DataTable
            tempBill = myTbClass.myFunctionFetchTbData(sqlTempBill)
    
            Dim i As Integer = 0
            Dim curQty As Double = 0
            Dim trQty As Double = 0
            Dim updatedQty As Double = 0
    
            For i = 0 To tempBill.Rows.Count - 1
                curQty = 0
                'Get the Current stock qty
                Dim sqlgetCurQty As String = "SElECT cur_qty FROM tb_stock where it_batch_code='" & tempBill.Rows(i).Item("it_batch_code") & "'"
    
                conn.Open()
                Dim SqlCmdCurQty As New SqlCommand(sqlgetCurQty, conn)
                Dim DataReadercurQty As SqlDataReader = SqlCmdCurQty.ExecuteReader
                While DataReadercurQty.Read()
                    curQty = DataReadercurQty.Item(0)
                End While
                DataReadercurQty.Close()
                conn.Close()
    
                trQty = tempBill.Rows(i).Item("qty")
                updatedQty = curQty - trQty
                Dim sqlUpdateQtyString As String = "UPDATE tb_stock SET cur_qty=" & Math.Round((updatedQty), 3) & " Where it_batch_code='" & tempBill.Rows(i).Item("it_batch_code") & "'"
                conn.Open()
                Dim SqlCmdQty As New SqlCommand(sqlUpdateQtyString, conn)
                SqlCmdQty.ExecuteNonQuery()
                conn.Close()
    
                'add to sales
                Dim tempTbSales As DataTable
                tempTbSales = myTbClass.myFunctionFetchTbData(sqlSales)
                Dim dataRow As DataRow = tempTbSales.NewRow
                dataRow("it_code") = Trim(tempBill.Rows(i).Item("it_code"))
                dataRow("it_batch_code") = Trim(tempBill.Rows(i).Item("it_batch_code"))
                dataRow("it_name") = Trim(tempBill.Rows(i).Item("it_name"))
                dataRow("buy_price") = Math.Round(tempBill.Rows(i).Item("buy_price"), 3)
                dataRow("sell_price") = Math.Round(tempBill.Rows(i).Item("sell_price"), 3)
                dataRow("qty") = Math.Round(tempBill.Rows(i).Item("qty"), 3)
                dataRow("gross_val") = Math.Round(tempBill.Rows(i).Item("gross_val"), 3)
                dataRow("discount_val") = Math.Round(tempBill.Rows(i).Item("discount_val"), 3)
                dataRow("net_val") = Math.Round(tempBill.Rows(i).Item("net_val"), 3)
                dataRow("profit_profile") = Trim(tempBill.Rows(i).Item("profit_profile"))
                dataRow("discount_profile") = Trim(tempBill.Rows(i).Item("discount_profile"))
                dataRow("cus_name") = Trim(tempBill.Rows(i).Item("cus_name"))
                dataRow("tr_type") = Trim(cmbTrans.Text)
                dataRow("cr_card_type") = Trim(cmbCardType.Text)
                dataRow("card_no") = Trim(txtCardNo.Text)
                dataRow("bill_no") = newBillNo
                dataRow("discount_profile") = Trim(tempBill.Rows(i).Item("cus_name"))
                dataRow("cur_user") = curUser
                dataRow("added_date") = curServerDateTime
                tempTbSales.Rows.Add(dataRow)
                Call myTbClass.MyMethodUpdateTable(sqlSales, tempTbSales)
            Next
    
            i = 0
    
        'Print bill
        Dim cash, balance As Double
        Dim crepBill As New repBill
        crepBill.SetDatabaseLogon("sa", dbPwd)
        cash = Val(Me.txtCash.Text)
        balance = Val(Me.txtBalance.Text)
    
        crepBill.RecordSelectionFormula = "{TB_SALES.bill_no} ='" & "000015" & "'"
        crepBill.DataDefinition.FormulaFields("txtCash").Text = Format(cash, "#0.00")
        crepBill.DataDefinition.FormulaFields("txtBal").Text = Format(balance, "#0.00")
    
        crepBill.PrintToPrinter(1, False, 0, 0)
        crepBill.Dispose()
    
        'delete temp bill table
        For i = 0 To tempBill.Rows.Count - 1
            tempBill.Rows(i).Delete()
        Next
        Call myTbClass.MyMethodUpdateTable(sqlTempBill, tempBill)
    
        'reset front end
        Call loadBill()
        Call clearCurrentTransaction()
        Call clearCurrentSubTotals()
        Call clearCurCashBalance()
    
        'Íncrease the bill no by 1
        Call increaseBillNo()
    
        txtItCode.Focus()
        Catch ex As Exception
        MsgBox("This error was generated at endCurrentTransaction()")
        End Try
    End Sub
    enter image description here
    Hello dilhanmai,

    Your code appears to referring to several objects that presumably are on some form. Without those it is impossible to further examine your code properly.

    yours,
    Peter Swinkels

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width