使用C#更改Access 2007中链接表的源表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用C#更改Access 2007中链接表的源表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2066字,纯文字阅读大概需要3分钟。
内容图文
首先,我要问我是否正确,如下图所示:
‘TABLE = CLOASEUCDBA.T_BASIC_POLICY’不是连接字符串的一部分吗?其实它是源表的名字吗?
我想将其更改为同一数据库上的另一个链接表.连接字符串应该相同,并且在ACCESS中显示的名称应该相同.唯一的区别应该是实际上是在引用另一个表,实际上,如果您打开该表,它将包含不同的字段和数据.
我到目前为止的代码是:
var dbe = new DBEngine();
Database db = dbe.OpenDatabase(@"C:\Users\xxxx\Documents\Test.accdb");
foreach (TableDef tbd in db.TableDefs)
{
if (tbd.Name.Contains("CLOASEUCDBA_T_BASIC_POLICY"))
{
tbd.SourceTableName = "CLOASEUCDBA_T_BILLING_INFORMATION";
}
}
db.Close();
但是,我遇到了一个很大的麻烦COMException“对象一旦成为集合的一部分,就无法设置此属性.”我不确定为什么,我在网上可以找到的所有示例都是用VB / VBA编写的,而我对此的了解非常有限.任何帮助表示赞赏.
编辑:
我尝试使用以下代码走另一条路,但没有成功:
if (tbd.Name.Contains("CLOASEUCDBA_T_BASIC_POLICY"))
{
var newtable = db.CreateTableDef("this is a new table");
newtable.Name = "new table";
newtable.Connect = tbd.Connect;
newtable.SourceTableName = "CLOASEUCDBA_T_BILLING_INFORMATION";
db.TableDefs.Append(newtable);
//tbd.SourceTableName = "CLOASEUCDBA_T_BILLING_INFORMATION";
}
在这种情况下,我得到错误“ ODBC–调用失败”.
解决方法:
由于我们不允许更改TableDefs集合中已存在的TableDef对象的SourceTableName,因此需要创建一个新的TableDef对象,先删除旧对象,然后再追加新对象:
// This code requires the following COM reference in your project:
//
// Microsoft Office 14.0 Access Database Engine Object Library
//
// and the declaration
//
// using Microsoft.Office.Interop.Access.Dao;
//
// at the top of the class file
string tableDefName = "CLOASEUCDBA_T_BASIC_POLICY";
var dbe = new DBEngine();
Database db = dbe.OpenDatabase(@"C:\Users\xxxx\Documents\Test.accdb");
var tbdOld = db.TableDefs[tableDefName];
var tbdNew = db.CreateTableDef(tableDefName);
tbdNew.Connect = tbdOld.Connect;
tbdNew.SourceTableName = "CLOASEUCDBA_T_BILLING_INFORMATION";
db.TableDefs.Delete(tableDefName); // remove the old TableDef ...
db.TableDefs.Append(tbdNew); // ... and append the new one
db.Close();
内容总结
以上是互联网集市为您收集整理的使用C#更改Access 2007中链接表的源表全部内容,希望文章能够帮你解决使用C#更改Access 2007中链接表的源表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。