在运行时打印时,Crystal Reports为空(没有查看器)

2020-08-15 16:06发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我正在使用 VB.Net ,MS...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在使用 VB.Net ,MS Sql和Crystal Reports开发小型POS系统。 我可以使用Cry Rep Viewer轻松查看报告。 但是,当我尝试在运行时打印帐单时,报告将为空。 以下是我在该过程中执行的顺序。

  • 生成账单编号
  • 从库存中扣除数量
  • 将交易从临时表添加到最终销售表
  • 打印账单
  • 删除临时表事务
  • 清除下一笔交易

但是我的问题出在票据打印过程中。 Bill不会从销售表中提取必要的记录。 以下是我的打印账单和最终交易的完整代码。 (我正在使用自己的一些方法和函数,这些方法和函数是来自另一个类的,并且我还使用了用于测试的修订单)

我还要附上2张钞票。 第一个是从Cry Report Viewer中查看和导出的一个。 第二个是有问题的,即使表中存在记录,它也为空。 有人可以在这件事上给我建议吗?

'打印帐单
     现金不足,余额则加倍
     Dim crepBill作为新的repBill
     crepBill.SetDatabaseLogon(" sa",dbPwd)
     现金= Val(Me.txtCash.Text)
     余额= 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()


 
私人子endCurrentTransaction()
     尝试
         Dim sqlTempBill As String =" SELECT * FROM tb_transactions其中cur_user ='"&curUser&"'"
         Dim sqlSales As String =" SELECT * FROM tb_sales where bill_no =""

         '获取帐单号
         昏暗的newBillNo作为字符串= generateBillNo()

         '减少IT数量
         Dim tempBill作为DataTable
         tempBill = myTbClass.myFunctionFetchTbData(sqlTempBill)

         Dim i As Integer = 0
         双倍的暗淡数量= 0
         Double的Dim trQty = 0
         昏暗更新数量为双精度= 0

         对于i = 0到tempBill.Rows.Count-1
             当前数量= 0
             '获取当前库存数量
             Dim sqlgetCurQty As String ="从tb_stock中选择cur_qty,其中it_batch_code ='"&tempBill.Rows(i).Item(" it_batch_code")&"'

             conn.Open()
             昏暗的SqlCmdCurQty作为新的SqlCommand(sqlgetCurQty,conn)
             Dim DataReadercurQty为SqlDataReader = SqlCmdCurQty.ExecuteReader
             而DataReadercurQty.Read()
                 curQty = DataReadercurQty.Item(0)
             结束时间
             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()
             昏暗的SqlCmdQty作为新的SqlCommand(sqlUpdateQtyString,conn)
             SqlCmdQty.ExecuteNonQuery()
             conn.Close()

             '增加销售
             昏暗的tempTbSales作为数据表
             tempTbSales = myTbClass.myFunctionFetchTbData(sqlSales)
             Dim dataRow为DataRow = tempTbSales.NewRow
             dataRow(" it_code")=修剪(tempBill.Rows(i).Item(" it_code"))
             dataRow(" it_batch_code")=修剪(tempBill.Rows(i).Item(" it_batch_code"))
             dataRow(" it_name")=修剪(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")=修剪(tempBill.Rows(i).Item(" profit_profile"))
             dataRow(" discount_profile")=修剪(tempBill.Rows(i).Item(" discount_profile"))
             dataRow(" cus_name")=修剪(tempBill.Rows(i).Item(" cus_name"))
             dataRow(" tr_type")=修剪(cmbTrans.Text)
             dataRow(" cr_card_type")=修剪(cmbCardType.Text)
             dataRow(" card_no")=修剪(txtCardNo.Text)
             dataRow(" bill_no")= newBillNo
             dataRow(" discount_profile")=修剪(tempBill.Rows(i).Item(" cus_name"))
             dataRow(" cur_user")= curUser
             dataRow(" added_date")= curServerDateTime
             tempTbSales.Rows.Add(dataRow)
             调用myTbClass.MyMethodUpdateTable(sqlSales,tempTbSales)
         下一个

         我= 0

     '打印帐单
     现金不足,余额则加倍
     Dim crepBill作为新的repBill
     crepBill.SetDatabaseLogon(" sa",dbPwd)
     现金= Val(Me.txtCash.Text)
     余额= 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()

     '删除临时账单表
     对于i = 0到tempBill.Rows.Count-1
         tempBill.Rows(i).Delete()
     下一个
     调用myTbClass.MyMethodUpdateTable(sqlTempBill,tempBill)

     重置前端
     调用loadBill()
     调用clearCurrentTransaction()
     调用clearCurrentSubTotals()
     调用clearCurCashBalance()

     '将账单号增加1
     调用gainBillNo()

     txtItCode.Focus()
     异常捕获
     MsgBox("此错误是在endCurrentTransaction()处生成的)
     结束尝试
 结束

(15.8 kB)
2条回答
Baoming ROSE
2020-08-15 16:26 .采纳回答

在调用

 crepBill.PrintToPrinter(1,False,0,0)

之前,您需要添加以下行:

 crepBill.Refresh  ()

这实际上将运行报表,以便在其中包含数据。

-Dell

一周热门 更多>