问题标签 [objectscript]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
64 浏览

intersystems - 如何设置 %Dictionary.StorageSQLMapDataDefinition.RetrievalCode?

我怎样才能做到这一点:

以编程方式?

我有:

但它不起作用。如何让生成上面提供的代码?

0 投票
1 回答
113 浏览

intersystems-cache - Caché ObjectScript 类中的属性数量

我尝试使用字典在 Caché 中创建 ObjectScript 类(在运行时创建类并编译它)。一切正常,但是当我尝试向类中添加超过 857 个属性时,它不起作用。没有发生错误,但我的课程没有被 clsDef.%Save() 保存。

这里对类定义有一些限制吗?属性数量或班级规模有问题吗?生成的类应该有大约 9000 行。有人知道导致问题的原因吗?

感谢您的想法


(原因:它是 1000 列的表的 sql 映射类,所以我需要有 1000 个属性和每个属性的 sql 存储定义)

0 投票
1 回答
900 浏览

syntax - 系统间缓存对象脚本通过引用传递属性作为参数

鉴于:

  • 具有 %Integer 属性“intA”的类“A”
  • 具有 classMethod foo(ByRef num As %integer) 的类“B”,它获取参数 byRef 并进行一些计算。

并且知道在缓存对象脚本中:

  • 如果你想通过 ref 传递参数,你需要放一个点 '.' 在 ref 传递的变量名之前。
  • 在一个类中,如果你想引用你自己的属性,你需要在属性名称前加上 2 个点 '..'

如果我想通过引用传递属性“intA”,我应该如何调用 classMethod foo?因为在属性名称前面加上 3 个点似乎不是正确的方法。

代码片段 B 类:

代码片段 A 类:

提前致谢。

0 投票
2 回答
114 浏览

intersystems-cache - 自定义过程未能收集类参数的属性;为什么?

好的,首先,我是 Caché 的菜鸟,所以代码可能会很差,但是......

我需要能够在 Java 中查询 Caché 数据库,以便从 Studio 中重建源文件。

我可以毫无问题地转储方法等,但是有一件事让我无法理解……出于某种原因,我无法EXTENTQUERYSPEC从类Samples.Person(命名空间:)中转储参数的属性SAMPLES

该课程在 Studio 中如下所示:

这是程序的代码:

和Java代码:

现在,对于前面提到的类/参数对,标记的条件// HERE总是被触发,因此抛出异常......如果我评论整行,那么我看到所有三个OUT参数都是空的,甚至defaultValue

我本来希望后者具有 Studio 中提到的价值......

那么,为什么会发生这种情况?我的程序是否有些损坏?

0 投票
3 回答
1285 浏览

string - 比较 Intersystems Cache Objectscript 中的字符串

鉴于:

2 串 strA, strB

我想:

在 Intersystems Cache ObjectScript 中执行它们之间的比较并返回 <0、=0 或 >0。

至今:

我在文档中找到了一个满足我需求的函数StrComp。不幸的是,这个函数不是 Cache ObjectScript 的一部分,而是来自 Caché Basic。

我已将该函数包装为实用程序类的 classMethod:

推荐这种方法吗?有没有可用的功能?

提前致谢。

0 投票
1 回答
341 浏览

validation - Intersystems Cache ObjectScript 在 %Save() 期间更改属性值

鉴于:

  • 一个名为 B 的类。
  • 2 条 B 类持久记录,id = {"B1", "B2"}。
  • 一个名为 A 的类:

    /li>
  • 一个名为 objA 的类 A 的实例,其中 objA.rB = "B3"(这是一个无效值,因为 B 没有 "B3" 持久记录)

我要那个:

当要保存 objA 时(objA.%Save()),将 rB 无效值替换为空字符串并保存。

至今:

我尝试使用回调方法(%OnBeforeSave)进行替换,但似乎之前调用了 %ValidateObject。

有没有办法在 %ValidateObject 使用回调方法之前进行值更改?

提前致谢。

0 投票
1 回答
110 浏览

sql - 跨系统缓存 SQL。尾随空格与前导空格的不同行为

鉴于:

  • 具有“ID”和“描述”列的表 tA
  • “描述”是一个字符串列。
  • 表格内容如下:

    身份证|| 说明
    1 || "字符串1"
    2 || "字符串2"
    3 || “字符串 3”

如果我执行以下 SQL 查询:
“SELECT ID FROM tA WHERE Description = 'String2'”它返回 2(如预期的那样)

但:

如果我执行以下 SQL 查询:
“SELECT ID FROM tA WHERE Description = 'String2'”(尾随空格)它也返回 2!(因为它是一个精确的比较,它应该返回 NONE)

如果我执行以下 SQL 查询:
“SELECT ID FROM tA WHERE Description = 'String2'”(以空格开头)它返回 NONE(如预期的那样)

你知道这种行为差异的原因是什么吗?

提前致谢。

0 投票
1 回答
1406 浏览

intersystems-cache - 从流创建的 ObjectScript 文件

如何从存储在全局中的二进制流创建文件(例如 PDF 文件)?我已将流存储在全局缓存中,我需要使用 ObjectScript 创建并保存由流创建的文件。

谢谢 :)

0 投票
1 回答
236 浏览

intersystems-cache - 从终端控制台手动发送邮件?

我们有一个构建和发送邮件消息的类。我想进行一些更改,但在此之前我想测试一些东西(例如 URL 的显示方式)。我正在尝试从控制台手动发送消息,但出现了一些错误。这是SendMessage该类的方法:

从终端,我可以实例化 MailMessage 类并设置正文数据,但是当我尝试发送时出现错误:

正如你所看到的,当我尝试SendMail它告诉我NO CURRENT OBJECT

更新 我注意到班级顶部的这些行:

所以我尝试USER>set tSC1=EnsLib.EMail.OutboundAdapter.SendMail(tMailMessage)了,但结果是<UNDEFINED> *EnsLib

0 投票
1 回答
220 浏览

intersystems-cache - 从控制台调用方法:“没有当前对象”

我有一个需要测试的方法。我想从控制台这样做。这是方法,以及类中的一些元数据:

但是当我执行这个命令时:

我收到此错误:

在调用该方法之前,我尝试实例化适配器,就像属性定义一样,但这不起作用。 如何从控制台会话中调用此方法?