0

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

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

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

我发现 Rocket 的当前 UniData 文档中有一个命令 LIST.METADATA 但似乎我们使用的 UniData 版本太旧以至于它没有这个命令,或者它已从 VOC 中删除文件不知什么原因。

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

提前致谢!

4

2 回答 2

2

在 TCL:

LIST DICT contact.master

请注意,数据库文件名(EX: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 库版本。

于 2015-08-11T17:06:42.847 回答
1

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

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

于 2015-08-12T19:42:53.453 回答