在Rocket UNIVERSE数据库中使用查询的“不正确的数据类型”

时间:2014-03-22 13:32:18

标签: universe

我正在尝试从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

1 个答案:

答案 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