用户输入的要在MS Access VBA中打印的页面数

时间:2018-07-10 00:49:24

标签: sql vba ms-access printing

是否可以让用户输入希望打印到表单上的所需页数,并能够在每页上打印“ Y的X页”?

我有一个小型的货运标签应用程序,要求为任何给定的货运打印动态数量的标签,并由用户输入。

用于标签信息的数据是从以下存储过程中返回的

SELECT C1.CompanyName,
        C1.Address1,
        C1.Address2,
        C1.City,
        C1.Province,
        C1.PostalCode,
        C2.CustomerName,
        C2.ShippingAddress1,
        C2.ShippingAddress2,
        C2.ShippingAddress3,
        C2.ShippingAddress4,
        C2.City,
        C2.Province,
        C2.PostalCode
FROM MyCompany_tb C1,
    Customer_tb C2
WHERE C2.CustomerID = @CUSTOMER_ID
    AND C2.InvoiceNumber = @INVOICE_NUMBER

这将产生一个包含我公司的“退货地址”信息(C1)并将其与客户的运送信息(C2)配对的记录。获得的标签 打印出来的内容需要根据用户输入的值打印出“ 3个方框1”,“ 3个方框2”等。

我找到了this article,但我希望这样做而不在Access中创建“临时表”。这样可能吗?

1 个答案:

答案 0 :(得分:0)

您需要一个附加表,但它可以是一个简单的number table,其中一个LongInt列ID的编号为1..n

然后使用笛卡尔积获取所需的记录数。

在VBA中:

' lngNumRecords is the number entered by the user
TempVars.Add "NumRecords", lngNumRecords

查询:

SELECT YourQuery.*, "Box " & [tblNumbers].[ID] & " of " & [TempVars]![NumRecords] AS BoxNo
FROM YourQuery, tblNumbers
WHERE tblNumbers.ID <= [TempVars]![NumRecords]

没有JOIN,因此您可以将主记录复制到指定ID的次数。

这假设YourQuery仅返回一条记录。