标签: openedge

最后 - 查询,给出错误的结果

我想使用以下查询来查找最后一个招标ID.

FOR EACH tender-table NO-LOCK WHERE tender-table.kco = 1 BY tender-table.id:
DISPLAY  tender-table.id.
END. 
Run Code Online (Sandbox Code Playgroud)

此查询查看所有投标ID,并以升序返回所有id的所有结果.我得到的结果是

1,035 1.036 ...... 1,060 1,061 1,062 1,063 1,064 1,065 1,066

FOR LAST tender-table NO-LOCK WHERE tender-table.kco = 1 BY tender-table.id:
DISPLAY  tender-table.id.
END.
Run Code Online (Sandbox Code Playgroud)

但是,当我使用此查询来查找最后一个ID时,我得到结果,

1061

当我应该看到结果1,066.任何人都可以建议为什么会这样吗?

progress-4gl openedge

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

正在检查文件存在4GL

如何使用代码检查特定文件的存在.例如.def var a as character.a ="abc.p"

运行值(a).--->首先我要检查工作区中是否存在abc.p.

progress-4gl openedge

3
推荐指数
2
解决办法
5566
查看次数

如何在ABL编码中将数据写入CSV文件

我从查询中填充了一个临时表,临时表看起来像,

ttcomp.inum
ttcomp.iname
ttcomp.iadd
Run Code Online (Sandbox Code Playgroud)

此临时表中有5000条记录,现在我想写入CSV文件.我认为它可以完成,output stream但我不知道如何实现这一点.请有人帮我解决这个问题.

csv progress-4gl openedge

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

如何在Progess OpenEdge过程中两次查询同一个表?

在这个例子中,我有两个表; 订单标题(oe-hdr)和位置(位置).订单表头表包含两个字段(sale-location-key和ship-location-key),这些字段在位置表中具有关联的位置名称.如果我使用SQL来获取结果,我会做这样的事情.

SELECT oe-hdr.order-num, oe-hdr.order-date, saleloc.location-name, shiploc.location-name
FROM oe-hdr,
    (SELECT location.location-name
     FROM oe-hdr, location
     WHERE oe-hdr.sale-location-key = location-key) as saleloc,
    (SELECT location.location-name
     FROM oe-hdr, location
     WHERE oe-hdr.ship-location-key = location-key) as shiploc
WHERE oe-hdr.order-num = saleloc.order-num 
AND oe-hdr.order-num = shiploc.order-num
Run Code Online (Sandbox Code Playgroud)

有谁知道如何在Progress程序中复制它?

progress-4gl openedge

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

具有NULL值的CASE表达式

我正在努力了解如何在进度案例表达式中检查空值。我想查看是否存在一列并使用它,如果不使用后备列。例如,威廉的名字将由Bill在fn.special-char中覆盖。

我有以下查询:

SELECT  
"PUB"."NAME"."LAST-NAME" as LastName,
   CASE fn."SPECIAL-CHAR"
     WHEN   is null  THEN "PUB"."NAME"."FIRST-NAME"
     ELSE   fn."SPECIAL-CHAR"
END as FirstName

FROM "PUB"."NAME"  
LEFT OUTER JOIN "PUB"."DAT-DATA" fn on "PUB"."NAME"."NAME-ID" = fn."DAT-SRC-ID" and 11 = fn."FLD-FIELD-ID" 
Run Code Online (Sandbox Code Playgroud)

当我运行查询时,我得到:

ORBC Progress OpenEdge Wire Protocol驱动程序] [OPENEDGE]语法错误SQL语句等于或大约为“,然后为” PUB“。” NAME“。” FIRST-“(10713)

如果我选择*,我会看到一切。它只是不喜欢空白部分。我还可以将when null更改为when'bob',并且它可以工作。

在进度数据库查询中使用空值是否需要做其他事情?

sql select case progress-db openedge

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

如何为 Progress 4GL 查询中的每个循环添加日期条件?

我在查询时遇到困难,我必须更改该查询以限制从进度数据库导出的数据。我将“myorderdate”导出到文本文件。但是,我必须将数据限制为仅 2012 年之后的订单。

OUTPUT STREAM s1 TO VALUE(exportFileStringDirectory).
FOR EACH poTable NO-LOCK WHERE
 ponum = 1 AND
 /* this doesn't work -->*/
 /*myorderdate.YEAR >= DATE("2012").YEAR AND*/
 conum = 1:

 PUT STREAM s1 UNFORMATTED
    ISO-DATE(myorderdate)
 SKIP. 
END.
OUTPUT STREAM s1 CLOSE.
Run Code Online (Sandbox Code Playgroud)

我是 Progress 4GL 数据库的新手,并且完全使用数据库。我所要做的只是对代码进行一点小小的更改,因此如果描述缺少一些重要信息,请原谅我。

comparison datetime for-loop progress-4gl openedge

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

如何计算OpenEdge ABL中出生日期的年龄?

我是新手,我想从出生日算出年龄,我不知道该怎么做.如果有人知道这个,请帮助我.提前致谢.

到目前为止我尝试过的是:

define var dob as date.
define var age as character.
assign
      dob = 09/16/1988.
      age = STRING(INT(YEAR(TODAY) - YEAR(dob ))).
      message age view-as alert-box.
Run Code Online (Sandbox Code Playgroud)

它显示30岁,但实际上年龄是29岁.

openedge

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

SQL 列出所有公寓的实际所有者

我正在尝试使用查询列出实际所有者的所有公寓。

我的公寓桌子看起来像这样:

building | apartmentNbr | owner |      start |        end
      b1 |           a1 |    o1 | 2009-08-13 | 2010-08-13
      b1 |           a1 |    o2 | 2010-08-14 | 2019-01-01
      b1 |           a2 |    o3 | 2009-01-03 | 2010-01-03
      b1 |           a2 |    o4 | 2010-01-04 | 2010-08-13
      b1 |           a2 |    o5 | 2010-08-14 | 9999-12-31
      b1 |           a3 |    o6 | 2010-08-14 | 2019-12-31
      b1 |           a3 |    o7 | 2020-02-14 | 9999-12-31
      b2 |           b1 |    o8 | …
Run Code Online (Sandbox Code Playgroud)

sql progress-db openedge

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

如何忽略正在进行的 FOR EACH 语句?

我正在努力通过FOR EACH. 我的目标是只从表中读取前 2 条记录,并将一个字段值保存到变量中。

假设我有一个MyTable包含字段PartNr, CreationDate, Company,的表ID

我的FOR EACH声明看起来像这样:

FOR EACH MyTable
   WHERE MyTable.Company = "TestCompany"
      AND MyTable.CreationDate >= 01.01.2021
   NO-LOCK:
   
END.
Run Code Online (Sandbox Code Playgroud)

例如, FOR EACH 语句会找到 15 条记录。然而,我只需要前两个。我想存储PartNr的的first记录在一个变量,而PartNr该的second另一个变量的记录。

之后,FOR EACH声明应该结束。

我也试过使用FIND FIRST,但我不知道如何获得第二条记录。

我几乎找了python相当于break当使用关键字loops

任何帮助深表感谢。

progress-4gl openedge

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

如何通过 Progress Openedge 使用多个屏幕

是否可以定义窗口出现在哪个屏幕上?我试图找到解决方案,但始终只获得有关如何将某些内容显示在屏幕上或如何监视数据库的信息。

progress-4gl openedge

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

标签 统计

openedge ×10

progress-4gl ×7

progress-db ×2

sql ×2

case ×1

comparison ×1

csv ×1

datetime ×1

for-loop ×1

select ×1