通过c#将数据插入Lotus Notes

时间:2014-03-03 21:49:00

标签: c# lotus-notes

我的任务是通过c#将记录插入Lotus Notes数据库。在过去,我只需连接数据库(myDatabase,nsf),然后传递

即可。
sql = Insert into MyForm (field1, field2) Values ('value1', value2')

using (var queryUpdate = new OdbcCommand(sql, db))
{
    try
    {
        result = queryUpdate.ExecuteNonQuery();
    }
}

工作正常。现在的问题是,主窗体(MainForm)具有我需要插入子窗体(客户端数据)的实际数据。使用上面的方法访问它在MyForm上没有显示这样的字段。当我尝试插入时:

sql = Insert into 'Client Data' (field1, field2) Values ('value1', value2')

sql = Insert into [Client Data] (field1, field2) Values ('value1', value2')

sql = Insert into Client_Data (field1, field2) Values ('value1', value2')

总是说桌子不存在。

有谁知道如何插入子表单?我尝试了一个视图,但这是不可能的,文档声明我应该在实际文档中使用insert。

非常感谢任何人可以指向我的任何帮助或指示。提前感谢您提供的任何帮助。

...地理位置

3 个答案:

答案 0 :(得分:1)

AFAIK,NotesSQL希望将平面表单映射到SQL表,因此它希望表单包含所有相关字段。它无法处理子表单。

所以你有几个选择......

1)创建一个隐藏的表单ClientDataFlat,其中包含您需要的所有字段,使用NotesSQL将数据插入ClientDataFlat,并在数据库中运行代理以重写所有新文档中的表单字段。

FIELD Form := @If(form="ClientDataFlat";"Client Data";form);

或者...

2)您可以使用C#中的Domino互操作类,而不是使用NotesSQL。代码将非常简单,因为您直接使用文档而不是通过绑定到表单的表的虚构。如果你必须在Win64上运行你的代码有一个小问题,因为IBM不支持64位的Notes COM类(它们位于interop类的底层),但是它们大部分都有用,并且应该可以用于此目的在你超过problems with registration之后。

答案 1 :(得分:0)

检查数据库连接字符串。您可能需要将默认数据库设置为Lotus Notes数据库。

答案 2 :(得分:0)

我假设C#可以访问COM?为什么不简单地使用COM来访问Notes数据库中的文档/数据以及更新/替换Notes中字段中的值?

我们在Visual FoxPro的工作中这样做,就像魅力一样。