我正在尝试从UV命令行执行一个简单的LIST:
LIST PSUB TSN.COMMENT
我得到以下内容:
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.**
进一步观察,我可以看到该领域的以下细节:
TSN.COMMENT
TYPE: I
LOC: SUBR('DICT.GET.LEDGER.DET.VALUE',FIELD(@ID,'~',4),FIELD(@ID,'~',6),FIELD(@ID,' ',5)"R%3",'3')<1,1,2>
CONV:
NAME: TSN
FORMAT: 13L
SM: S
我们对这个数据库使用的应用程序是EPICOR Ecplise - 从它们提供的工具生成的报告包括这个字段确实有效,所以我认为数据文件没有问题 - 我认为它是只有我;我对这种类型的数据库并不熟悉,也不知道我不知道的是什么。
DICT.GET.LEDGER.DET.VALUE计划如下:
ED OC DICT.GET.LEDGER.VALUE 531行。
----: P
0001: SUBROUTINE (VAL,ATTB)
0002: $INCLUDE AD.DIR CC~COMMON
0003: *
0004: *
<--And lots more after that -->
我认为代码是正常的,因为有很多其他的I类型字段使用类似的SUBR,当从UV调用目录时,它会以相同的方式出错。我想我只是遗漏了一些东西。
然后看看CC~COMMON中的内容:
COMMON /STDCOM/ COMDATA(150),SECURITY,MAIN.MEN,FILES(50),AOFILES(150),GLDATA(35)
** Version# 13 - 05/07/2008 - 10:24am - BABS - main
COMMON FLAGS(100)
COMMON TCL.LEVEL., RECALL.FLAG, E.MESS.
COMMON LED(200),OLED(200),LD(150),OLD.LD(150)
COMMON PRD(200),PRDP(30),PRD.BR(70),PRDC.BR(30),PRDD.BR(40)
COMMON PGRP(10),PLNE(30),PLNE.BR(20),PLNB(5),BL.BR(50)
COMMON CUS(200),CUSS(200),MA(40)
COMMON TAX(20),AR(50)
COMMON SCROLL.VAR, SVIEW.DEF., SVIEW.DATA.(10)
$INCLUDE CC EQU.ESC.OBJECT
$INCLUDE CC EQUATES
PROMPT CHAR(0)
!BABS~05/07/08~10:24
* Compiled by ECLIPSE on 02/11/12 09:29 from CC:COMMON
*** Version# 13 - 05/07/2008 - 10:24am - BABS - main
答案 0 :(得分:2)
您需要创建一个包装程序来调用OPEN.STANDARD.FILES:
>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
然后您可以在list语句之前执行OPEN.STANDARD.FILES.TCL。如果您没有启动Epicor的框架,这很重要,就像您希望使用.NET或ODBC访问此数据一样。
-Nathan