首页 > 解决方案 > 使用部分名称在全局中搜索名称

问题描述

我创建了一个全局名称,我试图通过仅使用名称开头的相同字符来打印出匹配的名称。示例:输入 Sm 并返回值 Smith, John A。

我创建了这个:

N prompt,val
S prompt="Enter a name (LAST,FIRST MI): "
F  W !,prompt R val Q:val=""  D
.   I val'?1.A1",".1" "1.A.1(1" "1A) W !,"Invalid name"
.   E  S ^ZNAME(val)=""
F  S val=$O(^ZNAME(val)) Q:val=""  D
.   W !,"You entered: ",val
Q

我输入了两个名字,得到了想要的结果。^ZNAME("MITCHELL, DAVID J")^ZNAME ("SMITH, JOHN A")。

我希望能够读取部分名称并搜索 ^ZNAME 并返回它匹配的值。在这种情况下,读取“Sm”并返回“Smith, John A”。

N partial,val
S partial="Enter a name or partial name: "
F  W !,partial R val Q:val=""  D
.   W !,$O(^ZNAME("val"))
Q

当我从读取命令中输入“Sm”时,它会循环返回输入名称或部分名称,而不是给我想要的 Smith,John A 的结果。我错过了一些我知道的东西,但有点筋疲力尽。任何帮助都会非常感谢您!

标签: intersystems-cachemumps

解决方案


你在 val 周围有双引号:

.   W !,$O(^ZNAME("val"))
Q

所以它试图在没有值的 ^ZNAME("val") 处写入值。删除双引号,它应该可以工作。


推荐阅读