【问题标题】:printing label at specific position在特定位置打印标签
【发布时间】:2015-06-15 22:42:11
【问题描述】:

我有 11 英寸 X 8.5 英寸的纸张来打印标签。论文分为两列,即每列 4.25 宽,每列包含 11 个标签。

所以,每个标签的大小是1 inch X 4.25 inch

现在我的问题是:我在 MS Access 2010 中使用 Northwind DB,考虑到表 dbo_Products,我想打印 Product IDProduct Name每个标签。

我可以加入标签报告形成,但我无法得到输出。

如前所述,工作表包含两列,如果用户想在特定标签位置打印标签,它应该能够在该位置打印。

(例如,用户想在位置5上打印Product ID: 10,对应的产品信息必须打印在位于第5位的标签上页面。(标签在页面上的位置如下图)

1     |     2 

3     |     4

5     |     6

7     |     8

...... till 22 

如果有人可以通过显示表单与标签之间的连接并在特定标签位置打印它来帮助我解决这个问题,那就太好了。

谢谢

【问题讨论】:

  • 感谢@Omar 的编辑。希望我能得到合适的解决方案。
  • 您使用的是普通纸吗?我不知道有两列 4.25 英寸宽的不干胶标签。标签通常设计为从第一个到最后一个打印,从纸张的左上角标签开始。您是说您希望用户能够选择任何给定的“标签”在一张纸上打印?如果是这样,那将需要一些特殊的代码来处理。
  • 是的,我希望用户能够在给定尺寸的不干胶标签纸上打印他选择的标签。你理解我的问题是正确的。 @WayneG.Dunn。希望我能得到解决方案。
  • 看看这个链接,看看它是否满足你的需求...techrepublic.com/blog/how-do-i/…
  • 感谢您提供链接@WayneG.Dunn。它使我了解如何开始。该链接指定创建空白标签然后打印它们。但我需要在指定的标签中打印特定的字段数据。前任。用户想要在位于 4-7 的标签中打印来自 ID 3-6 的客户详细信息,然后如何执行该代码。感谢您的帮助。

标签: ms-access vba ms-access-2007 ms-access-2010


【解决方案1】:

http://www.techrepublic.com/blog/how-do-i/how-do-i-start-an-access-label-report-with-any-label-on-the-sheet/ 的说明开始

接下来我将其修改为三个文本框而不是一个。它们被命名为“txtStart”、“txtEnd”、“txtLabelPos”。为该表单使用下面的代码。

注意 SQL 中的“WHERE”子句...更改表/字段名称以满足您自己的需要。

Option Compare Database
Option Explicit


Private Sub cmdCancel_Click()
    'Reset and take no further action.
    Me!txtStart.Value = 1
End Sub



Private Sub cmdPrint_Click()
'Pass table with label data, position for first label, and label report.

Dim bytPosition As Variant
Dim bytCounter As Byte
Dim rst As New ADODB.Recordset

If IsNull(Me.txtStart) Or Me.txtStart = "" Then
    MsgBox "You must enter a starting range for the data.", vbOKOnly + vbCritical, "Missing Start Range"
    Exit Sub
End If

If IsNull(Me.txtEnd) Or Me.txtEnd = "" Then
    MsgBox "You must enter an ending range for the data.", vbOKOnly + vbCritical, "Missing End Range"
    Exit Sub
End If

If IsNull(Me.txtLabelPos) Or Me.txtLabelPos = "" Or Not IsNumeric(Me.txtLabelPos) Then
    MsgBox "You must enter the starting label position to print on.", vbOKOnly + vbCritical, "Missing Label Position"
    Exit Sub
End If

Set rst.ActiveConnection = CurrentProject.Connection
rst.Open "SELECT * FROM tblCustomerLabels" _
        , , adOpenDynamic, adLockOptimistic

'Delete previous label data.
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE FROM tblCustomerLabels"

'Add one empty record for each missing label.
bytPosition = Nz(Me!txtLabelPos.Value, 0)

For bytCounter = 2 To bytPosition
    rst.AddNew
    rst.Update
Next

'Update label data.
Dim strSQL  As String
strSQL = "INSERT INTO tblCustomerLabels ( Company, [Last Name], [First Name], Address, City, [State/Province], [ZIP/Postal Code], [Country/Region] ) " & _
            "SELECT Customers.Company, Customers.[Last Name], Customers.[First Name], Customers.Address, Customers.City, Customers.[State/Province], Customers.[ZIP/Postal Code], Customers.[Country/Region] " & _
            "FROM Customers " & _
            "Where [Last Name] >= '" & Me.txtStart & "' AND [Last Name] <= '" & Me.txtEnd & "';"
DoCmd.RunSQL strSQL

'Open label report.
DoCmd.SetWarnings True
DoCmd.OpenReport "rptCustomerLabels", acViewPreview

rst.Close
Set rst = Nothing

Exit Sub

errHandler:
MsgBox Err.Number & ": " & Err.Description, vbOKOnly, "Error"
rst.Close
Set rst = Nothing
DoCmd.SetWarnings True

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    相关资源
    最近更新 更多