没有时间帮你做个新的,自己将就着看吧,希望对你有帮助,这是我做过的一个工程中的打印'功能: 打印指定的内部使用出库清单 '参数:sCoID-指定的内部使用出库单据的单据编号 ' iFlag-库存类别标志,iFlag为0时,药品;iFlag为1时,材料。 '返回值:F_PrintConsumeBill-打印成功,返回True;打印失败,返回False。 Public Function F_PrintConsumeBill(ByVal sCoID As String, iFlag As Integer) As Boolean Dim i As Integer Dim rsConsume As New ADODB.Recordset
F_PrintConsumeBill = False If sCoID = "" Then Exit Function
On Error GoTo ErrConsumeBill If iFlag = 0 Then sSql = "Select * from vw_MedicineConsumeBill " _ & "where 单据编码='" & sCoID & "'" Else sSql = "Select * from vw_MaterialConsumeBill " _ & "where 单据编码='" & sCoID & "'" End If rsConsume.Open sSql, DB_Connection, adOpenKeyset, adLockReadOnly If (rsConsume.EOF Or rsConsume.BOF) Then MsgBox "没有您需要的相关信息,打印失败!", vbOKOnly + vbInformation, gCs_SysWarning rsConsume.Close: Set rsConsume = Nothing Exit Function End If
With DRepExport If iFlag = 0 Then .Sections(1).Controls("LabSubTitle").Caption = "药品出库单" .Sections(2).Controls("Label11").Caption = "药 品 编 号" Else .Sections(1).Controls("LabSubTitle").Caption = "材料出库单" .Sections(2).Controls("Label11").Caption = "材 料 编 号" End If
If iFlag = 0 Then sSql = "Select 国际编码,药品名称,规格,单位,出库数量,进价,金额,库存数量 " _ & " from vw_MedicineConsumeDetail " _ & " where 单据编码='" & sCoID & "'" Else sSql = "Select 国际编码,材料名称,规格,单位,出库数量,进价,金额,库存数量 " _ & " from vw_MaterialConsumeDetail " _ & " where 单据编码='" & sCoID & "'" End If rsConsume.Open sSql, DB_Connection, adOpenKeyset, adLockReadOnly If (rsConsume.EOF Or rsConsume.BOF) Then MsgBox "没有您需要的出库单明细!", vbOKOnly + vbInformation, gCs_SysWarning rsConsume.Close: Set rsConsume = Nothing Exit Function End If
Set DRepExport.DataSource = rsConsume .Sections(3).Controls("TxtSum").DataField = "金额" .Sections(3).Controls("TxtType").DataField = "规格" .Sections(3).Controls("TxtID").DataField = "国际编码" If iFlag = 0 Then .Sections(3).Controls("TxtName").DataField = "药品名称" Else .Sections(3).Controls("TxtName").DataField = "材料名称" End If .Sections(3).Controls("TxtUnitName").DataField = "单位" .Sections(3).Controls("TxtLocate").DataField = "出库数量" .Sections(3).Controls("TxtPrice").DataField = "进价" .Sections(3).Controls("TxtStorage").DataField = "库存数量" .Sections(5).Controls("FunctionSum").DataField = "金额" i = .PrintReport(False, rptRangeAllPages) End With On Error GoTo 0
F_PrintConsumeBill = True Exit Function ErrConsumeBill: MsgBox Err.Description & ",单据打印失败!", vbOKOnly + vbInformation, gCs_SysWarning End Function'功能: 打印指定的库存报损清单 '参数:sDmgID-指定的库存报损单据的单据编号 ' iFlag-库存类别标志,iFlag为0时,药品;iFlag为1时,材料。 '返回值:F_PrintDamageBill-打印成功,返回True;打印失败,返回False。 Public Function F_PrintDamageBill(ByVal sDmgID As String, iFlag As Integer) As Boolean Dim i As Integer Dim rsDamage As New ADODB.Recordset
F_PrintDamageBill = False If sDmgID = "" Then Exit Function
On Error GoTo ErrDamage If iFlag = 0 Then sSql = "Select 药品名称,批次进价,单位,残损数量,残损金额,残损原因,生成日期 " _ & "from vw_MediDamage where 单据编码='" & sDmgID & "'" DRepReturn.Title = "药 品 报 损 单 据" Else sSql = "Select 材料名称,批次进价,单位,残损数量,残损金额,残损原因,生成日期 " _ & "from vw_MateDamage where 单据编码='" & sDmgID & "'" DRepReturn.Title = "材 料 报 损 单 据" End If rsDamage.Open sSql, DB_Connection, adOpenKeyset, adLockReadOnly If Not (rsDamage.EOF Or rsDamage.BOF) Then With DRepReturn Set .DataSource = rsDamage If iFlag = 0 Then .Sections(3).Controls("TxtName").DataField = "药品名称" Else .Sections(3).Controls("TxtName").DataField = "材料名称" End If .Sections(3).Controls("TxtPrice").DataField = "批次进价" .Sections(3).Controls("TxtUnit").DataField = "单位" .Sections(3).Controls("TxtSum").DataField = "残损数量" .Sections(3).Controls("TxtAccount").DataField = "残损金额" .Sections(3).Controls("TxtMemo").DataField = "残损原因" .Sections(1).Controls("LabDate").Caption = Format(rsDamage.Fields("生成日期"), "yyyy年mm月dd日") .Sections(2).Controls("LabMemo").Caption = "残 损 原 因" i = .PrintReport(False, rptRangeAllPages) End With Else MsgBox "没有您需要的相关信息,打印失败!", vbOKOnly + vbInformation, gCs_SysWarning End If rsDamage.Close: Set rsDamage = Nothing On Error GoTo 0
F_PrintDamageBill = True Exit Function ErrDamage: MsgBox Err.Description & ",单据打印失败!", vbOKOnly + vbInformation, gCs_SysWarning End Function'打印系统中的各项单据 Private Sub MnuPrintBill_Click() If mS_CurNode = "" Then Exit Sub End If If lvwListView.ListItems.Count > 0 Then mS_CurKey = lvwListView.SelectedItem.Text Else Exit Sub End If Select Case Mid(mS_CurNode, 1, 2) Case "MB" '药品单据 Select Case Mid(mS_CurNode, 7, 2) Case "NH" '内部用药出库单据 Call F_PrintConsumeBill(mS_CurKey, 0) Case "BS" '报损单据 Call F_PrintDamageBill(mS_CurKey, 0) Case "FY" '返药单据 Call F_PrintReturnBill(mS_CurKey, 0) Case "PD" '盘点单据 Call F_PrintCheckBill(mS_CurKey, 0) Case Else MsgBox "改单据不能打印!", vbOKOnly + vbInformation, gCs_SysWarning End Select Case "WB" '物资单据 Select Case Mid(mS_CurNode, 7, 2) Case "CK" '出库单据 Call F_PrintConsumeBill(mS_CurKey, 1) Case "BS" '报损 Call F_PrintDamageBill(mS_CurKey, 1) Case "FY" '返货 Call F_PrintReturnBill(mS_CurKey, 1) Case "PD" '盘点单据 Call F_PrintCheckBill(mS_CurKey, 1) Case Else MsgBox "改单据不能打印!", vbOKOnly + vbInformation, gCs_SysWarning End Select Case Else MsgBox "改单据不能打印!", vbOKOnly + vbInformation, gCs_SysWarning End Select End Sub部分例子,其余的自己考虑一下!!!!!!
'参数:sCoID-指定的内部使用出库单据的单据编号
' iFlag-库存类别标志,iFlag为0时,药品;iFlag为1时,材料。
'返回值:F_PrintConsumeBill-打印成功,返回True;打印失败,返回False。
Public Function F_PrintConsumeBill(ByVal sCoID As String, iFlag As Integer) As Boolean
Dim i As Integer
Dim rsConsume As New ADODB.Recordset
F_PrintConsumeBill = False
If sCoID = "" Then Exit Function
On Error GoTo ErrConsumeBill
If iFlag = 0 Then
sSql = "Select * from vw_MedicineConsumeBill " _
& "where 单据编码='" & sCoID & "'"
Else
sSql = "Select * from vw_MaterialConsumeBill " _
& "where 单据编码='" & sCoID & "'"
End If
rsConsume.Open sSql, DB_Connection, adOpenKeyset, adLockReadOnly
If (rsConsume.EOF Or rsConsume.BOF) Then
MsgBox "没有您需要的相关信息,打印失败!", vbOKOnly + vbInformation, gCs_SysWarning
rsConsume.Close: Set rsConsume = Nothing
Exit Function
End If
With DRepExport
If iFlag = 0 Then
.Sections(1).Controls("LabSubTitle").Caption = "药品出库单"
.Sections(2).Controls("Label11").Caption = "药 品 编 号"
Else
.Sections(1).Controls("LabSubTitle").Caption = "材料出库单"
.Sections(2).Controls("Label11").Caption = "材 料 编 号"
End If
.Sections(1).Controls("LabUsage").Caption = rsConsume.Fields("用途")
.Sections(1).Controls("LabDepartment").Caption = rsConsume.Fields("科室")
.Sections(1).Controls("LabDate").Caption = Format(rsConsume.Fields("领取日期"), "yyyy年mm月dd日")
.Sections(5).Controls("LabConfirm").Caption = rsConsume.Fields("主管审批")
rsConsume.Close
If iFlag = 0 Then
sSql = "Select 国际编码,药品名称,规格,单位,出库数量,进价,金额,库存数量 " _
& " from vw_MedicineConsumeDetail " _
& " where 单据编码='" & sCoID & "'"
Else
sSql = "Select 国际编码,材料名称,规格,单位,出库数量,进价,金额,库存数量 " _
& " from vw_MaterialConsumeDetail " _
& " where 单据编码='" & sCoID & "'"
End If
rsConsume.Open sSql, DB_Connection, adOpenKeyset, adLockReadOnly
If (rsConsume.EOF Or rsConsume.BOF) Then
MsgBox "没有您需要的出库单明细!", vbOKOnly + vbInformation, gCs_SysWarning
rsConsume.Close: Set rsConsume = Nothing
Exit Function
End If
Set DRepExport.DataSource = rsConsume
.Sections(3).Controls("TxtSum").DataField = "金额"
.Sections(3).Controls("TxtType").DataField = "规格"
.Sections(3).Controls("TxtID").DataField = "国际编码"
If iFlag = 0 Then
.Sections(3).Controls("TxtName").DataField = "药品名称"
Else
.Sections(3).Controls("TxtName").DataField = "材料名称"
End If
.Sections(3).Controls("TxtUnitName").DataField = "单位"
.Sections(3).Controls("TxtLocate").DataField = "出库数量"
.Sections(3).Controls("TxtPrice").DataField = "进价"
.Sections(3).Controls("TxtStorage").DataField = "库存数量"
.Sections(5).Controls("FunctionSum").DataField = "金额"
i = .PrintReport(False, rptRangeAllPages)
End With
On Error GoTo 0
F_PrintConsumeBill = True
Exit Function
ErrConsumeBill:
MsgBox Err.Description & ",单据打印失败!", vbOKOnly + vbInformation, gCs_SysWarning
End Function'功能: 打印指定的库存报损清单
'参数:sDmgID-指定的库存报损单据的单据编号
' iFlag-库存类别标志,iFlag为0时,药品;iFlag为1时,材料。
'返回值:F_PrintDamageBill-打印成功,返回True;打印失败,返回False。
Public Function F_PrintDamageBill(ByVal sDmgID As String, iFlag As Integer) As Boolean
Dim i As Integer
Dim rsDamage As New ADODB.Recordset
F_PrintDamageBill = False
If sDmgID = "" Then Exit Function
On Error GoTo ErrDamage
If iFlag = 0 Then
sSql = "Select 药品名称,批次进价,单位,残损数量,残损金额,残损原因,生成日期 " _
& "from vw_MediDamage where 单据编码='" & sDmgID & "'"
DRepReturn.Title = "药 品 报 损 单 据"
Else
sSql = "Select 材料名称,批次进价,单位,残损数量,残损金额,残损原因,生成日期 " _
& "from vw_MateDamage where 单据编码='" & sDmgID & "'"
DRepReturn.Title = "材 料 报 损 单 据"
End If
rsDamage.Open sSql, DB_Connection, adOpenKeyset, adLockReadOnly
If Not (rsDamage.EOF Or rsDamage.BOF) Then
With DRepReturn
Set .DataSource = rsDamage
If iFlag = 0 Then
.Sections(3).Controls("TxtName").DataField = "药品名称"
Else
.Sections(3).Controls("TxtName").DataField = "材料名称"
End If
.Sections(3).Controls("TxtPrice").DataField = "批次进价"
.Sections(3).Controls("TxtUnit").DataField = "单位"
.Sections(3).Controls("TxtSum").DataField = "残损数量"
.Sections(3).Controls("TxtAccount").DataField = "残损金额"
.Sections(3).Controls("TxtMemo").DataField = "残损原因"
.Sections(1).Controls("LabDate").Caption = Format(rsDamage.Fields("生成日期"), "yyyy年mm月dd日")
.Sections(2).Controls("LabMemo").Caption = "残 损 原 因"
i = .PrintReport(False, rptRangeAllPages)
End With
Else
MsgBox "没有您需要的相关信息,打印失败!", vbOKOnly + vbInformation, gCs_SysWarning
End If
rsDamage.Close: Set rsDamage = Nothing
On Error GoTo 0
F_PrintDamageBill = True
Exit Function
ErrDamage:
MsgBox Err.Description & ",单据打印失败!", vbOKOnly + vbInformation, gCs_SysWarning
End Function'打印系统中的各项单据
Private Sub MnuPrintBill_Click()
If mS_CurNode = "" Then
Exit Sub
End If
If lvwListView.ListItems.Count > 0 Then
mS_CurKey = lvwListView.SelectedItem.Text
Else
Exit Sub
End If
Select Case Mid(mS_CurNode, 1, 2)
Case "MB" '药品单据
Select Case Mid(mS_CurNode, 7, 2)
Case "NH" '内部用药出库单据
Call F_PrintConsumeBill(mS_CurKey, 0)
Case "BS" '报损单据
Call F_PrintDamageBill(mS_CurKey, 0)
Case "FY" '返药单据
Call F_PrintReturnBill(mS_CurKey, 0)
Case "PD" '盘点单据
Call F_PrintCheckBill(mS_CurKey, 0)
Case Else
MsgBox "改单据不能打印!", vbOKOnly + vbInformation, gCs_SysWarning
End Select
Case "WB" '物资单据
Select Case Mid(mS_CurNode, 7, 2)
Case "CK" '出库单据
Call F_PrintConsumeBill(mS_CurKey, 1)
Case "BS" '报损
Call F_PrintDamageBill(mS_CurKey, 1)
Case "FY" '返货
Call F_PrintReturnBill(mS_CurKey, 1)
Case "PD" '盘点单据
Call F_PrintCheckBill(mS_CurKey, 1)
Case Else
MsgBox "改单据不能打印!", vbOKOnly + vbInformation, gCs_SysWarning
End Select
Case Else
MsgBox "改单据不能打印!", vbOKOnly + vbInformation, gCs_SysWarning
End Select
End Sub部分例子,其余的自己考虑一下!!!!!!