【问题标题】:How to generate and understand a list of field names in a UniData table如何生成和理解 UniData 表中的字段名称列表
【发布时间】:2015-08-14 02:06:54
【问题描述】:

我是 UniData 和 Uniobjects 的新手,所以如果我问一些显而易见的问题,我深表歉意。

我正在尝试编写一个工具,让我可以从在 UniData (v. 6.1) 上运行的 ERP (Manage2000) 中导出联系人,然后将其导入 AD/Exchange。

我遇到的主要问题是我不知道表(文件?)中的哪些字段(列?)用于什么。我知道有一本包含这些信息的字典,但我不知道如何从中得到我想要的。

我在 Rocket 的当前 UniData 文档中发现有一个命令 LIST.METADATA 但似乎我们使用的 UniData 版本太旧以至于它没有这个命令或者它被删除了出于某种未知原因从 VOC 文件中提取。

有没有人知道如何或有任何提示来提取表的结构,以便我可以知道哪些字段用于哪些数据?

提前致谢!

【问题讨论】:

  • 您要为其检索架构信息的表/文件的名称是什么?
  • 我正在尝试查找contact.master

标签: c# unidata uniobjects


【解决方案1】:

在 TCL:

LIST DICT contact.master

请注意,数据库文件名(例如:contact.master)区分大小写。我目前没有 UniData 实例来提供示例输出。但是,它应该类似于 Universe 的输出:

Field......... Type & Field........ Conversion.. Column......... Output Depth &
Name.......... Field. Definition... Code........ Heading........ Format Assoc..
               Number

AMOUNT.WEBB    A    1               MR22         Amt WEBB        10R    M
PANDAS.COST    A    3               MD2Z         Pandass Cost    10R    M
CREDIT.EXP.DT  A    6               D4/          Cred Exp Date   10R    M

对于上面的例子,你一般可以通过查看转换代码来判断字段的“数据类型”。 “D4/”是日期的转换代码。 “MD2Z”是一个数字转换代码,我们可以猜测是货币金额。我在掩饰转换代码的威力,所以请务必参考 Rocket 的这些代码文档,以真正了解这些字段会输出什么。如果手头没有文档,也可以参考这个网站:

http://www.koretech.com/kr_help/KU2/30/en/KMK_Prog_Conversions.htm

如果您想使用 UniObjects 和 C# 来检索文件中的字段名称,您可以使用以下代码:

UniCommand fieldSelectCommand = activeSession.CreateUniCommand();
fieldSelectCommand.Command = "SELECT DICT contact.master";
fieldSelectCommand.Execute();
UniSelectList resultList = activeSession.CreateUniSelectList(0);
String[] allFieldNames = resultList.ReadListAsStringArray();

在回答了您的问题后,如果您主要从数据库中选择数据而不是读取和操作单个记录,我还想建议您查看 Rocket 的 U2 Toolkit for .NET:

http://www.rocketsoftware.com/products/rocket-u2-toolkit-net

它不仅提供了访问数据库的 ADO.NET 方式,还在 U2.Data.Client.UO 命名空间下提供了性能更好的 UniObjects 库版本。

【讨论】:

  • 嘿网络感谢您的回复。所以我发现“LIST DICT CONTACT.MASTER”和“LISTDICT CONTACT.MASTER”做不同的事情(至少在 Manage 2000/UniData 6.1 中)。那是相当...愚蠢的。所以 LISTDICT 以更易于理解的方式为我提供信息(类似于您的示例)。现在我的下一个问题是如何使用 C# 中的 UniObjects 访问相同的信息来填写包含所有字段名称的列表框?嗯嗯..
  • 嘿布拉德,为了鼓励我的替代答案,您可能需要更新您的问题以包含您在评论中提到的问题。
  • 不幸的是,UniSelectList.ReadListAsStringArray() 在我有权访问的 UniObject 版本中不是有效方法。我试图弄清楚我是否可以访问最新版本的 .NET 工具包,但根据 Rockets 网站的说法,它只支持 UniData 7.1 及更高版本。感谢您的帮助。如果您有任何其他想法,我仍在努力。
【解决方案2】:

在我看来,字典是对模式应该如何表现的建议。但是,在某些情况下,它不是 100% 准确的。您可以运行“LIST CONTACT.MASTER TOXML TO MYFILE.XML”,这将创建一个您可以解析的 xml 文件。

更多信息请参见https://u2devzone.rocketsoftware.com/accelerate/articles/u2-xml/u2-xml#section-0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    • 2022-12-22
    相关资源
    最近更新 更多