我的任务是通过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。
非常感谢任何人可以指向我的任何帮助或指示。提前感谢您提供的任何帮助。
...地理位置
答案 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的工作中这样做,就像魅力一样。