【问题标题】:Mirth : database reader, how to deal with [multiple rows] returned from sql query?Mirth : 数据库阅读器,如何处理从 sql 查询返回的[多行]?
【发布时间】:2017-01-27 03:19:22
【问题描述】:

我是 Mirth connect 的新手,我需要一些帮助

我正在做如下演示:

来源是数据库阅读器 目标是文档编写者

源中的 SQL 选择查询返回多行“这就是我需要的” 我正在尝试生成一个 pdf 文档 [文档作者],其中包含所有返回的列的值 但实际上,文件中写入的只是最后返回的行

这是我写的 HTML 模板

<html>
<head></head>

<body>
<div>
${Target_path}\\${fileName}
</div>

</body>
</html>

在目的地,我有 Mapping 类型的转换器,它将返回的列的值映射到字符串

SQL 语句从我的数据库中选择两列,都是字符串

第一列代表路径,第二列代表文件名 所以我有很多从sql语句返回的文件名,我需要把它们都写到这个文件中

关于如何处理从查询返回的每一行的任何提示?

最好的问候,

【问题讨论】:

  • 您必须循环模板内容...只需检查此链接,您就会知道mirthified.wordpress.com/category/mirth-tool .. 当您从数据库中获取数据时,您也会循环内容。 leakymllp.com/2010/08/17/MirthHL7ToPDF.html
  • 我明白了,但这里的区别是我不是从 HL7msg 而是从 xml 转换,数据库选择 .. 所以我也在做同样的事情,但我对这一行有问题:var file_name = msg['file_name'].toString();,它给了我这个错误 TypeError: Cannot call method "toString" of undefined .. 哪个先行?来自数据库阅读器源的 javascript 转换器或 sql 查询?关于如何克服这个问题的任何提示?

标签: html database mirth


【解决方案1】:

我使用 JavaScript 来提取我的数据,但您可以预先格式化您的条目并将它们插入到 ArrayList 中。从那里,将列表映射到通道映射变量。

var dbConn;
var result;
var entryList = java.util.ArrayList();

try {
    dbConn = DatabaseConnectionFactory.createDatabaseConnection('DRIVER', 'ADDRESS', 'USERNAME', 'PASSWORD');
    result = dbConn.executeCachedQuery('YOUR QUERY');
    while (result.next()) {
        var entry = result.getString(1) + "//" + result.getString(2);
        list.add(entry);
    }
} finally {
    if (dbConn) {
        dbConn.close();
    }
}

channelMap.put('entryList', entryList);

在您的模板中,您可以在 html 模板中使用 Velocity 来动态创建 PDF。

<html>
    <head/>
    <body>
        #foreach ($entry in ${entryList})
        <div>
            $entry
        </div>
        #end
    </body>
</html>

【讨论】:

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