0

我正在尝试查询火箭宇宙数据库。在大多数情况下,它都有效,直到我遇到某些类型为 I 的字段(不是全部,而是一些)。在供应商文档 (EPICOR ECLIPSE) 中,它作为注释提到以下内容,“任何包含对公共文件句柄的引用的字典都将在不调用 'OPEN.STANDARD.FILES' 的情况下工作,因此您可能需要包装标准字典。”

所以我的问题是如何做到这一点?

当我直接从 TCL 查询数据库时(cd c:/u2/eclipse 并键入“uv”以进入 TCL 环境),我得到以下信息。

"LIST PSUB TSN.COMMENT 07:37:39am  22 Mar 2014  PAGE    1
@ID..................................... TSN..........

**Program "DICT.GET.LEDGER.DET.VALUE": Line 9, Improper data type.**

当我在供应商的应用程序环境中运行相同的查询时,它可以工作。他们的环境是一个类似 DOS 的菜单系统,它也允许下拉到 TCL 环境。但是,显然他们的托管环境中的某些东西满足了成功查询所需的依赖关系。

子程序的前几行如下:

>ED OC OPEN.STANDARD.FILES
429 lines long.

----: P
0001:           SUBROUTINE
0002:           $INCLUDE AD.DIR CC~COMMON
0003: *
0004: *
0005: *
0006: *
0007: *
0008: *
0009: *
0010: *
0011: *
0012: *
0013: *
0014: *
0015: *
0016: *
0017: *
0018: *
0019: *
0020:           IF FILES.ARE.OPEN$ THEN RETURN
0021: *
0022:           OPEN 'ABC.CODES'        TO ABCCFILE    ELSE
----:
0023:              FLNM = 'ABC.CODES'
----:
0024:              GOSUB EXIT.OPN
.
.
.
4

1 回答 1

2

要为此例程创建包装器,请执行以下操作:

>ED BP OPEN.STANDARD.FILES.TCL
001 * OPEN.STANDARD.FILES.TCL
002 CALL OPEN.STNADARD.FILES
003 STOP
004 END

>BASIC BP OPEN.STANDARD.FILES.TCL
>CATALOG BP OPEN.STANDARD.FILES.TCL

然后您可以在列表语句之前执行 OPEN.STANDARD.FILES.TCL。我刚刚注意到您已将此标记为“u2netsdk”。您是使用 .NET api 还是“cd c:/u2/eclipse”和“uv”访问 Epicor?

如果您使用的是 .NET api,那么您可以在执行 list 语句之前直接从 .NET api 调用 OPEN.STANDARD.FILES。

-内森

于 2014-03-28T14:33:00.310 回答