我有一个包含一些文本的 .txt 文件。我想读取这个文件并将其存储到一个字符串中。有可用的功能吗?或者怎么做呢?请帮忙
在我提出任何问题之前,让我告诉您我对 Progress Openedge 没有任何经验,但是我的公司运行在其中制作的应用程序,现在我必须通过它进行一些 SOAP 调用。所以我想,为什么不调用用我认为合适的任何语言制作的外部脚本?
但是当我用谷歌搜索它时,我什至找不到如何通过 OpenEdge 运行外部脚本。任何地方都没有示例,文档很长且令人困惑(至少对我而言)。这让我想到了这个简单的问题:
如何在 Progress OpenEdge 中调用外部脚本?
我有一个名为 tt 的临时表。我想使用我的临时表创建一个具有相同字段名称和类型的数据库表。
我不知道在Progress-4gl 中该怎么做。这可能吗 ?
谢谢。
背景故事
我负责 Android 客户端的后端工作。有很多数据要显示,还需要一些离线功能,所以必须解决同步问题。所述数据由临时表组成。
我们的解决方案
现在,为了让客户端了解可能的更改,而不是强制执行完整的客户端数据库擦除和创建(需要大量时间),我对每个临时表行进行了哈希处理。所述哈希值是通过获取临时表行、为其创建 JSON,然后从该 JSON 生成哈希值来创建的。这是工作。
我对这个解决方案的问题
我认为这不是理想的解决方案。所有这些操作看起来要求很高,从我的测试来看,它表明:
我想要的是
我很感兴趣我们是否做错了什么。对于这个问题有更好的解决方案吗?是否有要求较低的方法来从每个单独的临时表记录中创建哈希?
我们目前使用的是OpenEdge 10.2B。
程序负责hash创建,create_hash 创建widget-pool。
define input parameter inp_hBuffer as handle no-undo.
define output parameter out_cHash as c no-undo.
define var ttDynamic as handle no-undo.
define var hBufferTT as handle no-undo.
define var lResult as l no-undo.
define var cDataTT as longchar no-undo.
define var itime as i. …Run Code Online (Sandbox Code Playgroud) 再会:
简单问题:我可以在 OpenEdge 中执行动态查询吗?
例子:
def temp-table tt-num1
field f1 as int
field f2 as int.
def temp-table tt-num2
field f1 as int
field f2 as int.
def temp-table tt-num3
field f1 as int
field f2 as int.
Run Code Online (Sandbox Code Playgroud)
我需要的是看起来像这样的东西:
procedure repeat-query:
for each 'variable that contains table-name' no-lock.
disp f1 f2.
end.
end procedure.
Run Code Online (Sandbox Code Playgroud)
或者其他可以解决我的问题的方法。
我该如何继续?我尝试在互联网上检查动态查询,但没有成功。提前致谢。
我正在尝试调用另一个文件的过程。到目前为止我得到的结果是一个错误:
测试文件
DEFINE VARIABLE tmp AS CHARACTER.
RUN sumWords.p(INPUT "Hello", INPUT "World", OUTPUT tmp).
DISPLAY tmp.
Run Code Online (Sandbox Code Playgroud)
sumWords.p
PROCEDURE sumWords:
DEFINE INPUT PARAMETER i_firstWord AS CHARACTER.
DEFINE INPUT PARAMETER i_secondWord AS CHARACTER.
DEFINE OUTPUT PARAMETER o_returnWord AS INTEGER.
o_returnWord = i_firstWord + i_secondWord.
END PROCEDURE.
Run Code Online (Sandbox Code Playgroud)
test.p 将参数传递给 sumWords.p,它没有期望任何。(1005)
我正在使用 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)
如何获取列名?
我是 4GL 的新手。我总是愿意编写正确的代码,并愿意了解我们正在使用的每个关键字的两端,但遵循给出相同结果的示例查询。我不知道什么时候使用FIND FIRST、FOR FIRST和CAN-FIND?请帮助我重写完美的答案
FOR EACH Customer NO-LOCK:
FOR FIRST Order OF Customer:
/*somelogic*/
END.
END.
FOR EACH Customer NO-LOCK:
FIND FIRST Order OF Customer NO-LOCK NO-ERROR.
IF AVAILABLE Order THEN
/*somelogic*/
END.
FOR EACH Customer NO-LOCK:
IF CAN-FIND(FIRST Order OF Customer ) THEN
DO:
/*somelogic*/
END.
END.
Run Code Online (Sandbox Code Playgroud) 我正在使用下面的查询,它有句柄,但即使我删除/不删除句柄的对象,我也看不到任何反应。但每个人都说最后总是删除对象。为什么我们需要删除它们?如果我们不删除它们会发生什么?我们怎么看?
finally:
if valid-handle(hQueryTest) then delete object hQueryTest no-error.
if valid-handle(hQuerytestvalue) then delete object hQuerytestvalue no-error.
end finally.
Run Code Online (Sandbox Code Playgroud) 我有一个从 csv 文件中读取的电子邮件地址列表,这些地址有时用逗号分隔,有时当该人拥有超过 1 个电子邮件地址时用分号分隔。
例子:
Pin email_address
11 heidi@gmail.com,hh@yahoo.com
12 tom@osu.edu;TQ@gmail.com
13 lisa@yahoo.com
14 linda@me.com;llewis@gmail.com,lvlv@yahoo.com
Run Code Online (Sandbox Code Playgroud)
假设我正在将这些读入一个变量,并使用另一个变量对每个人进行计数:
DEFINE VARIABLE emailString AS CHARACTER NO-UNDO.
DEFINE VARIABLE iEmailCount AS INTEGER.
Run Code Online (Sandbox Code Playgroud)
我想计算该人的电子邮件数量。我知道我可以使用此语法分别计算分号之间和逗号之间的条目。
iEmailCount = NUM-ENTRIES (emailString, ";").
iEmailCount = NUM-ENTRIES (emailString).
Run Code Online (Sandbox Code Playgroud)
但我该怎么说呢...
iEmailCount = Num_ENTRIES(emailString,";" OR ",").
Run Code Online (Sandbox Code Playgroud)