【问题标题】:Printing a "tag" with a barcode using reporting services and DB values in asp.net在 asp.net 中使用报告服务和 DB 值打印带有条形码的“标签”
【发布时间】:2013-02-07 08:27:18
【问题描述】:

编辑 7:我终于成功了!发布答案。

编辑 6:我废弃了 CSS 和 div 并使用了报告服务。查看帖子下方的编辑以了解我现在的位置。

我现在完全迷路了。
抱歉,如果我的问题不够清楚,我可以根据需要对其进行编辑以添加信息。我会尽量提供尽可能多的信息。
我已经在谷歌上搜索了几个小时,但没有找到任何可以帮助我的东西。

我正在尝试使用我在数据库中的用户信息创建多个“标签”,并将它们放在页面上以打印它们。另外,我每页只需要 1 个标签。
我得到了一个存储过程,它返回给我用户名、姓名和姓氏,以及我用来在特定事件中为每个用户生成条形码的 ID。

CREATE PROCEDURE Schema.GetAllTags
@IdEvent int
AS
BEGIN
    SELECT  Mem.Nom, Mem.Prenom, Mem.Pseudo, Use.IdUser
FROM    Schema.User Use
JOIN    Schema.Member Mem ON Use.IdMember = Mem.IdMember
WHERE   Use.IdEvent = @IdEvent
END


条形码是通过调用一个 asp 页面并给它我从页面参数中存储的过程中收到的 ID 生成的。 asp 页面是我用来在其他页面中显示我的条形码的图像。

我尝试使用 div、CSS、asp 内容和所有这些东西来制作标签,而且效果很好……除了打印部分。标签一直在调整大小,即使我尽一切努力使其成为 25.4 毫米(1 英寸),页边距也不是一英寸,并且在它之上,页面的 url 始终显示在预览打印中。客户只需取消选中显示网址并在选项中自己设置边距即可解决所有这些问题。但我不想强迫客户做这些来解决问题。我希望它是 3 x 2 英寸,边距为 1 且没有 url,而无需更改打印选项。

有人告诉我,使用报告服务可以解决我的打印问题。但我不知道如何从报告服务中获得我需要的东西(我知道报告服务是什么)......更不用说如何在其中获取我的条形码了。

下面是标签在打印页面上的最终外观。 3 英寸 x 2 英寸,打印时顶部和左侧边距为 1 英寸。

这是我用来打印标签的 CSS:

<style type="text/css">
    @page
    {
        margin: 25.4mm 25.4mm 25.4mm 25.4mm;  
    }

    @media print 
    {
        body *  
        {
            visibility:hidden;
        }
        #tagPrint, #tagPrint * 
        {
            visibility:visible;
        }
        #tagPrint
        {
            position:fixed;
            top: 0px;
            left: 0px;
        }
        #NOPRINT
        {
            display:none;
        }
    }

这里是asp(这是我的页面,只显示1个标签):

<asp:UpdatePanel ID="UpdatePanel1" runat="server" >
    <ContentTemplate>
        <div id="tag" class="formRow">
            <div id="tagPrint" style="border:1px solid;width:76.2mm;height:50.8mm">
                <p style="text-align:center" />
                <br />
                <asp:Label ID="lblUserTag" runat="server" style="font-weight:bold;font-size:18px" />
                <br />
                <asp:Label ID="lblFullNameTag" runat="server" style="font-weight:bold;font-size:16px" />
                <br />
                <br />
                <asp:Image ID="imgBarcodeTag" runat="server" />
                <br />
                <asp:Label ID="lblIdTag" runat="server" style="font-weight:bold;font-size:16px" />
            </div>
        </div>
        </ContentTemplate>
    </asp:UpdatePanel>

目前在我的页面上使用转发器生成我的标签以生成多个标签并将 dataset.tables[0].Rows 绑定到转发器。允许我创建这些标签。

是否有任何方法可以在不使用仅使用 javascript 和 CSS 的报告服务的情况下做到这一点? 报告服务是否可行(在报告服务中使用 asp 页面制作条形码)?由于我的条形码来自字体,是否有任何其他方法可以在计算机上添加字体以便在报告服务中使用它? (我不希望客户端必须安装字体)会使标签的 pdf 更容易/更好吗?

编辑:开始使用报告服务。 现在我得到了用 4 个参数制作的报告。 (用户名、全名、条形码 url 和 ID) 我会更新接下来会发生什么。

编辑 2 :所以......在设法制作报告服务并将其显示在页面中之后。我似乎无法让我的图像显示在报告上。即使我这样做了。我不知道如何在报告上制作多页或如何打印。 我决定尝试以 PDF 格式制作我的 Div Tag 并尝试以这种方式打印。明天有机会尝试更新。

编辑 3:除了想把我的头砸在墙上几次之外,我尝试在 PDF 中进行,但它不起作用。发现它可能可以在 Flash 中完成,但我不想在 Flash 中完成。所以我回到了报告服务。 我使用网格创建了一个报告服务,我将数据集发送到网格并将数据放在每个字段中。我安装了字体以便能够在报告中使用它。现在我似乎无法将我的数据集绑定到报告。我尝试了 SqlDataSource 和 ObjectDataSource,但似乎没有任何效果。我在一个新项目中开始了另一份报告,以尝试从废品中提取。也许我当前项目中的某些东西正在与我作对。 我快要放弃了。 -_-

编辑 4:我终于成功了。我的页面上的报告工作得很好。

现在我唯一要做的就是设法让报告有多个页面。

编辑 5:重读我的编辑,我意识到我忘了说,在编辑 2 之后,我放弃了参数的东西并改用了数据集。此外,我放弃了有关 CSS 和 div 的所有内容,以使用报告服务保存标签的 PDF 文件。

【问题讨论】:

  • 你的问题有点含糊。我明白了一般的想法,但那里没有具体的问题或问题,只是“任何帮助/链接将不胜感激”,但这是不可能回答的。你能改写一下你的问题,让它问一些具体的问题吗?
  • 我知道这个问题有点含糊。我编辑了“任何帮助/链接将不胜感激”。对于更具体的事情。我主要想知道我做的是对还是错,以及什么是获得我想要的最好的行动方案。

标签: asp.net sql printing reporting-services barcode


【解决方案1】:

所以让我先解释一下 SSRS:你做错了。

我的意思是,如果您只是想在 SSRS 中嵌入 ASP 代码和输出以实现图形保真度,那是不会发生的。

向您推荐 SSRS 的原因是因为它可以获取一组数据,并以各种报告样式、格式和输出方法以高图形保真度再现这些数据。

但是您必须从头开始构建它。没有 HTML,没有 CSS,没有 ASP,没有 .Net(嗯.. 有点。对你来说,是的,不需要 .Net。)

哇,哇,哇,你要去哪里?我保证,这并不难。

所以...首先,让我们为您在 SSRS 中执行此操作设置一个任务列表。在我们做这件事之前,让我们构建一个向导驱动的报告,这样我们就可以将您的 ID 标签数据集放入报告中。它将让您对 SSRS 如何使用数据并将其转换为报告有一个基本的了解。

  1. 创建一个全新的 Reporting Services 项目。
  2. 向该项目添加新报告。在解决方案资源管理器中,右键单击“报告”文件夹并“添加新报告”。
  3. 第一步是选择数据源。使用您正在运行的存储过程将其连接到您的数据库,测试您的连接,然后继续。
  4. 下一步是设计查询 - 但您已经使用 Sproc 完成了这项工作,因此只需将其粘贴到 - 现在,为您的 IdEvent 添加硬编码值。我们稍后会解决这个问题。
  5. 现在选择您的报告类型 - 我们现在只使用表格。 Matrix 更适用于大量行/列动态,而您只是在寻找一个简单的可打印报告,所以表格适合您。
  6. 现在在设计表格时,只需将所有输出列添加到 Detils 组。
  7. 选择任何旧的 Table 样式,到最后你都会把它全部扔掉。
  8. 将您的报告命名为有用的名称并完成。

现在您已经有了一个 RDL,它有一个数据源、一个数据集和设计器区域中的一些代码。您可以通过单击设计器区域中的“预览”选项卡来预览到目前为止所做的工作。非常棒,您的所有数据都在表格的小行中。现在呢?

现在是任务列表。开始谷歌搜索,您可以学习所有这些,不会花费太长时间,当您完成后,您将准备好一组格式良好的 ID 标签供打印机使用。如果您遇到具体问题 - 那么,这就是该网站的用途,对吧?

  1. 创建一个参数以将您的 IDEvent 传递给您的存储过程。
  2. 将动态外部图像插入从 ASP 页面检索条形码的行。 (提示:阅读在 SSRS 中使用“表达式”。)
  3. 弄清楚如何使用 SSRS 中的分页符选项,每页只打印 1 个标签。
  4. 使用属性窗口设置表格中每一“行”的格式,使其看起来像您的标记。
  5. 确定是将报告导出为 PDF 还是仅使用提供的 MHTML 版本。

您可能还想学习如何在 .Net 应用程序中嵌入 SSRS 报告(无论如何,您的客户如何打印标签?)当然,SSRS 有很多小方法、属性和方面超出了此特定任务的范围,但至少值得在以后的项目中查看。

祝你好运!

【讨论】:

  • 感谢您的回复。但我已经制作了 SSRS 的东西。 (看看我的编辑。我也会编辑以发布一个屏幕。)现在我的报告是正确的。唯一缺少的是有多个页面可以工作。
  • 哦,我的客户在 3x2 英寸的纸上打印标签,需要 1 英寸的顶部和左边距来打印标签。 (查看带有标签的屏幕截图以查看确切格式)
【解决方案2】:

终于!我成功了!

这就是我所做的。

  1. 制作了一个 SSRS。
  2. 制作了报表查看器和ObjectDataBinder
  3. 使用我的存储过程为 SSRS 创建一个数据集。
  4. 将报表查看器绑定到 SSRS。
  5. 围绕 SSRS 进行操作,以按照需要放置的方式放置字段。
  6. 将 SSRS 中的页边距设置为 1 英寸。将报告设置为 3x2 英寸。
  7. 将报告大小设置为 5x4 英寸。
  8. 测试并享受我在这些小时的挫折中取得的胜利。

注意:我花了很多时间,因为 Visual Studio 对我进行了窃听,我不得不完全删除并重做我的 SSRS。

结果:

一个漂亮的 PDF 文件,大小完美,边距完美,带有代码栏。胜利!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    相关资源
    最近更新 更多