将Excel中的两列导入现有的Access2010表,使用transferspreadsheet会出错

时间:2016-04-26 06:59:43

标签: ms-access-2010 import-from-excel

我有一个excel电子表格,有12列,我只需要根据最后两列导入数据(其余部分需要填写最后一列。)

Excel table

Acces table

如图所示,我在Access中有一个名为“ProjektDelledning”的表,其中两列DelledningID和SaneringsmetKode已经存在。如果DelledningID已经存在,则需要更新SaneringsmetKode,如果表中没有,则需要添加该值。因此Delledning 258在导入后的Acces中应该有一个SaneringsmetKode = 1,等等。

到目前为止,我已尝试使用此功能:

$file = "test.pdf";

if (!is_file($file)) {
    print "File doesn't exist.";
} else {
    $fh = @fopen($file, "r+");
    if ($fh) {
        print "File is not opened and seems able to be deleted.";
        fclose($fh);
    } else {
        print "File seems to be opened somewhere and can't be deleted.";
    }
}

我收到一条错误消息,说Access无法将所有数据附加到表中。 0 reocrd中字段的内容被删除,0条记录由于密钥违规而丢失......

值得注意的是,在Access表中,ProjektID和DelledningID都是密钥。

有关如何使用transferpreadsheet或其他方法进行正确导入的任何帮助都有效。我想使用宏进行导入工作。

1 个答案:

答案 0 :(得分:0)

方法可以导入临时表(或只是链接范围)。

然后,使用它,运行组合的更新/追加查询。

来自 Smart Access 的旧提示是我的最爱之一:

  

使用一个查询更新和附加记录

     

作者:Alan Biggs

     

您是否知道可以在Access中使用更新查询   同时更新和添加记录?如果你有这个,这很有用   表的两个版本,tblOld和tblNew,并且您想要集成   从tblNew到tblOld的变化。

     

请按照以下步骤操作:

     
      
  1. 创建更新查询并添加两个表。通过将tblNew的关键字段拖到tblOld的匹配字段来加入这两个表。

  2.   
  3. 双击关系并选择包含来自tblNew的所有记录的连接选项以及仅包含来自tblNew的记录的连接选项   tblOld。

  4.   
  5. 从tblOld中选择所有字段并将它们拖到QBE网格上。

  6.   
  7. 对于每个字段,在tblNew.FieldName中的“更新到”单元格类型中,其中FieldName与tblOld的字段名称匹配。

  8.   
  9. 从“视图”菜单中选择“查询属性”,并将“唯一记录”更改为“假”。 (这会关闭SQL中的DISTINCTROW选项   视图。如果你留下这个,你将只获得一个空白记录   结果,但您希望添加每个新记录的一个空白记录   to tblOld。)

  10.   
  11. 运行查询,您会看到对tblNew的更改现在位于tblOld中。

         

    这只会添加已添加到tblNew的tblOld记录。   tblOw中不存在于tblNew中的记录仍将保留   tblOld。

  12.