0

我有一个 access Db,它最初是用 ib Access 2003 编写的,但后来升级到 Access 2007 - 我遇到的问题如下:

我有一个表“tblBookings”,它存储特定客户预订或报价的所有相关数据,当用户打开主表单时,该表的客户字段链接到客户表(tblClients)的 PK,选择客户并在下拉列表中选择预订编号,然后继续“编辑预订”,用户可以在其中编辑预订或确认预订。当用户单击“确认预订”cmdButton 时,打开的表单关闭并打开“创建发票”表单。用户从下拉列表中选择预订号,然后打印形式发票或发票。print proforma cammand 按钮打开一个打印必要文件的报告,

话虽这么说,在打印发票之前首先打印形式是很重要的,因此如果已打印形式,我需要将表中的 yes no 字段设置为 yes 或 true,在这种情况下,发票按钮将变得可见并且如果尚未打印,则保持隐藏状态。

cmdProForma 上的事件过程如下(这是我需要在 Pro 字段中设置是/否字段的地方,即 tblBookings 并设置为是/否字段。

Private Sub CmdProForma_Click()
    Dim rs As New ADODB.Recordset 'recordset of existing refs
    Dim t As String 'temp string var
    Dim stDocName As String
    Dim stLinkCriteria As String
    Dim i As Integer 'temp ref variable

       i = CInt(Right(txtBRef, 5))
       t = [txtBRef]


   With rs
      .Open "SELECT BRef,Conf,lock,Pro FROM tblBookings WHERE Bref=" & t & ";", CurrentProject.Connection, adOpenDynamic
      If .BOF Or .EOF Then 'no such ref
      MsgBox "No booking with ref '" & fRef(CInt(t), "B") & "' exists.", vbExclamation, "No booking"
      Else 'ref found: open invoice
      strSQL = "UPDATE tblBookings SET Pro = True"

'db.Execute strSQL, dbFailOnError
      DoCmd.Close acForm, "frmBRefEnter"
        ' !Form!frmBRefEnter!Pro = True
      DoCmd.OpenReport "rptInvoice1", acViewPreview, , "BRef=" & t
        DoCmd.OutputTo acOutputReport, "rptInvoice1", acFormatPDF, destDIR & "\Inv\" & fRef(i, "Pro-Forma") & ".pdf"

           End If

      End With

  End Sub
4

1 回答 1

0

将打印形式的复选框添加到表单中。这对于您的用户为什么不能打印发票是一个很好的指南。您可以将属性设置为 Locked=True

Private Sub CmdProForma_Click()
    ''"From a dropdown list the user selects the booking number", 
    ''so the booking number must exist, no need to check
      DoCmd.OpenReport "rptInvoice1", acViewPreview, , "BRef=" & Me.txtBref
      DoCmd.OutputTo acOutputReport, "rptInvoice1", _
          acFormatPDF, destDIR & "\Inv\" & fRef(i, "Pro-Forma") & ".pdf"
      Me.Pro = True ''Checkbox
      DoCmd.Close acForm, "frmBRefEnter"
End Sub

对于发票按钮:

Me.cmdInvoicePrint.Visible = Me.Pro

如果勾选 Me.Pro,Me.Pro 将为 true,并且发票按钮将可见。

于 2013-03-16T12:49:41.690 回答