小编Tom*_*com的帖子

4GL ABL Openedge 循环通过手柄?

这是我当前的代码

def var hbTT as handle.

for each Cust:
  hbTT:buffer-create().
  assign
    hbTT::Name    = Cust.Name
    hbTT::address = Cust.Address.
end.
Run Code Online (Sandbox Code Playgroud)

现在我想做的是遍历 hbtt。我怎样才能做到这一点?

我试过

for each hbTT:
  /* Do something */
end.
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

未知或不明确的表 hbTT。(725)

谢谢你

4gl progress-4gl openedge

3
推荐指数
1
解决办法
1241
查看次数

用于Progress DB SQL的LIKE运算符

我正在尝试在Progress SQL中做这样的事情(这不是POSTGRES!)

SELECT
    CASE WHEN code LIKE '%foo%' THEN 'Y' ELSE 'N' END as foo
FROM
    bar
Run Code Online (Sandbox Code Playgroud)

但是Progress不支持LIKE运算符.INSTR看起来它可能会完成这项工作,但它是一个Progress扩展,我正在使用的数据库不支持.是否有另一种使用标准ODBC函数实现此目的的方法?

谢谢

sql progress-db case-statement openedge sql-like

2
推荐指数
1
解决办法
1万
查看次数

正在使用Break by keyword 4GL

正在进行的关键工作4GL的确切用途是什么?我没有从开放边缘的关键字帮助中获得清晰的想法.by和break by关键字之间的主要区别是什么?

progress-4gl openedge

2
推荐指数
1
解决办法
1万
查看次数

从临时表创建数据库表(通过代码)

我有一个名为 tt 的临时表。我想使用我的临时表创建一个具有相同字段名称和类型的数据库表。

我不知道在Progress-4gl 中该怎么做。这可能吗 ?

谢谢。

progress-4gl openedge

2
推荐指数
1
解决办法
2092
查看次数

以“ .d”文​​件格式转储OpenEdge数据库表中的记录子集

我正在寻找一种以Progress “ .d”文件格式手动转储OpenEdge数据库表中的记录子集的最简单方法。

我能想到的最好方法是创建一个额外的测试数据库,该数据库具有与源数据库相同的架构,然后使用FOR EACH和BUFFER-COPY语句将记录的子集复制到测试数据库中。然后,只需使用“ 转储数据和定义表内容(.d文件)...”菜单选项从测试数据库中导出数据即可。

progress-4gl openedge

2
推荐指数
1
解决办法
612
查看次数

进度4gl-内部程序名称

这对我来说似乎很简单,但我找不到合适的属性.出于错误报告的目的,我想知道我所在的内部程序的名称.

以下是最简单的示例:

运行测试.

程序测试.

/*我怎么能在这里显示程序名称'test'?*/

结束程序.

progress-4gl openedge

2
推荐指数
1
解决办法
646
查看次数

进度隐藏json字段

我正在使用Progress OpenEdge.

我创建了一个数据集并嵌套了一些临时表.我放入特定字段以关联临时表.

在xml中,如果要隐藏用于关联临时表的字段,可以在定义临时表的字段旁边使用xml-node-type"HIDDEN".

因此,当您在"数据集句柄"之后查看xml文档时:write-xml("whatever-paramters").没有看到关系字段.

问题......

我如何用json做同样的事情?

我找不到任何类似于xml的xml-node-type"HIDDEN"的东西.

json progress-4gl openedge

2
推荐指数
1
解决办法
282
查看次数

4gl 中如何重新抛出捕获的异常?

我找不到有关如何重新抛出我刚刚捕获的相同异常的任何信息。

我的 catch 表达式如下所示:

CATCH ex1 AS Progress.Lang.Error :
        MESSAGE ex1:NumMessages.
        DEFINE VARIABLE iteration AS INTEGER NO-UNDO.
        DO iteration = 1 TO 6:
             clsLog:inf(ex1:GetMessage(iteration)).
        END.

         clsLog:inf(SUBSTITUTE("ex1:CallStack: &1", ex1:CallStack)).
    END CATCH.
Run Code Online (Sandbox Code Playgroud)

如何在不丢失它携带的任何消息或数据的情况下重新抛出此特定异常?或者,如果您可以在 Internet 上找到有关重新抛出正在进行的异常的任何信息,我将不胜感激。

progress-4gl openedge

2
推荐指数
1
解决办法
120
查看次数

Progress4gl 如何锁定自己?

在单元测试中,我需要验证程序在处理表时是否跳过锁定的记录。我一直无法设置锁定记录,因为测试无法锁定自己,这很有意义。

这是我试图实现的目标的示例。

  DEV VAR v_isCommitted        AS LOGI NO-UNDO.
  DEF VAR hl                   AS HANDLE   NO-UNDO.
  DEF BUFFER bufl              FOR tablename. 
  hl = BUFFER bufl:HANDLE. 

  LOCKED_RECORDS:
  DO TRANSACTION ON ERROR UNDO, LEAVE LOCKED_RECORDS:
      /*Setup : Create record not committed yet*/
      CREATE tablename.
      ASSIGN tablename.fields = fieldsvalue.



      /*ACT :  Code I'm trying to test*/   
      /*...some code...*/  
      v_isCommitted = hl:FIND-BY-ROWID(ROWID(tablename), EXCLUSIVE-LOCK, NO-WAIT)
                                AND AVAILABLE(bufl) 
                                AND NOT LOCKED(bufl).
      /*...some code touching the record if it is commited...*/   

      /*ASSERT :  program left new record tablename AS …
Run Code Online (Sandbox Code Playgroud)

progress-4gl openedge

2
推荐指数
1
解决办法
73
查看次数

为 OpenEdge-SQL 选择列名

我正在使用 DBeaver 连接到支持 SQL 函数的 Open-Edge 11 数据库。这里使用的功能不起作用。这是一个示例和结果:

功能:

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'TxMSAGrading'
Run Code Online (Sandbox Code Playgroud)

错误:

SQL Error [42S02]: [DataDirect][OpenEdge JDBC Driver][OpenEdge] Table/view/synonynm "INFORMATION_SCHEMA.COLUMNS" cannot be found. (15814)
Run Code Online (Sandbox Code Playgroud)

如何获取列名?

sql progress-db openedge

2
推荐指数
1
解决办法
311
查看次数

标签 统计

openedge ×10

progress-4gl ×8

progress-db ×2

sql ×2

4gl ×1

case-statement ×1

json ×1

sql-like ×1