【问题标题】:How to add rows to a ODBC linked table in MS-access 2010如何在 MS-access 2010 中向 ODBC 链接表添加行
【发布时间】:2015-10-26 00:06:09
【问题描述】:

我有一个 MS-Access 2010 数据库,它通过名为 FNA 的 ODBC 将 Sybase 表链接到它。

我可以很好地从链接表中读取数据,但事实证明向它们写入要困难得多。我正在尝试使用以下插入 sql 将数据从名为 _ModelVersion 的访问表添加到名为 DBA__ModelVersion 的链接表中。有时它会工作一段时间,但主要是我收到一条错误消息“ODBC--在链接表'DBA__Collectors'上插入失败。身份验证违规”

strQuery63 = "INSERT INTO [DBA__ModelVersion] ( ID, EDXVersion, template, DatVersion, DbVersion, AccessVersion ) " & _
            "SELECT [_ModelVersion].ID, [_ModelVersion].EDXVersion,[_ModelVersion].ProjectTemplate, [_ModelVersion].DatVersion, [_ModelVersion].DbVersion, [_ModelVersion].AccessVersion " & _
            "FROM _ModelVersion "


DoCmd.SetWarnings False
DoCmd.RunSQL strQuery63
DoCmd.SetWarnings True

是否应该使用其他方法?不确定这是否重要,但我有使用链接表作为源的组合框,并且在运行此查询之前,在相关链接表上也使用了 dmax 函数。我读到在 sybase 数据库端创建一个存储过程并从访问中调用它是可行的方法,但我不知道该怎么做,更不用说让存储过程在 Access 端使用 FNA 提取数据了。

编辑:到目前为止我已经尝试过:
1) 确保 sybase 的数据类型在访问中正确显示(sybase 中的数据类型是数字和 varchar,在访问中它们显示为十进制和文本,这似乎很好)
2) sybase表中添加自增主键,并在链接到access时注明
3) 使用 currentdb.execute 和 dbseechanges
4)使用接受的答案here
中显示的方法刷新表格 5)尝试添加一个字段时间戳,其值设置为当前时间戳。没有改善。

功能保持不变:更新查询偶尔会起作用,然后继续给出“运行时错误'3155':ODBC--在链接表上插入失败”,无论我使用VBA还是查询设计来运行查询。

【问题讨论】:

    标签: ms-access vba sql-update odbc sybase


    【解决方案1】:

    我过去在 ODBC 链接表上使用 RunSQL 时遇到过一些问题。在处理带有主键的链接表时,需要使用 dbSeeChanges 选项。

    您上面提到的错误表示没有设置主键的表。右键单击表并进入设计视图(在 MSAccess 中)。突出显示您希望创建主键(唯一标识符)的行。单击带有金钥匙图标的按钮。

    尝试使用以下命令更新/插入...

    CurrentDb.Execute "INSERT INTO tblYourTableName VALUES ('YourTextValue',123)", dbSeeChanges
    

    替换您的表/列/值。

    【讨论】:

    • 能否请您 edit 解释为什么这段代码回答了这个问题?纯代码答案是discouraged,因为它们不教授解决方案。 (在这种情况下,我真的看不出这如何避免身份验证错误,也没有保留 SELECT 的插入。)
    • @NathanTuggy 你去吧。
    • CurrentDb.Execute 不起作用,但在 sybase 中的表中添加了一个数字自动增量字段并使它们成为主键确实有效,谢谢。
    • 对不起,必须撤销。它第一次起作用,然后又开始给我同样的问题。仍然困在同一条船上。
    • 您确定链接表在 Access 和 Sybase 中都将该字段标记为主键吗?确保在修改 Sybase 表后使用表重新链接器。另一种可能性是您需要一个 TimeStamp 列。这个页面在这里有一个很好的简短介绍。 stackoverflow.com/questions/3500703/… 我建议添加一个 timstamp 列,看看是否有帮助。我知道在某些情况下,当 ODBC 链接 MS SQL 表时会这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多