使用传递查询中的数据更新Microsoft Access 2013表

时间:2016-06-03 16:05:34

标签: sql ms-access-2013 ibm-midrange pass-through

到目前为止,我正在尝试使用来自AS400表(LIBRARY.TABLE)的数据更新Microsoft Access 2013表(称为tbl_Data)中的记录。

正如您在下面的Access 2013传递查询中所看到的,我正在尝试使用前缀和放大器将AS400表加入访问表。数字字段,并从那里,使用名称&更新访问表。来自AS400表的地址信息。

这是我最近的尝试:

 UPDATE 
      tbl_Data
 SET
      tbl_Data.FirstName = a.NINMFR,
      tbl_Data.MiddleName = a.NINMMD,
      tbl_Data.LastName = a.NINAML,
      tbl_Data.BuildingNumber = a.NIBLNR,
      tbl_Data.StreetName = a.NISTNM,
      tbl_Data.AptSuite = a."NIAPT#",
      tbl_Data.Address2 = a.NIADR2,
      tbl_Data.City = a.NICITY,
      tbl_Data.State = a.NISTAT,
      tbl_Data.ZipCode = a.NIZIPC
 INNER JOIN
      LIBRARY.TABLE a
 ON 
      tbl_Data.Prefix = a.NIPRFX,
      tbl_Data.Number = a.NIPLNR;

当我运行此查询时,出现错误消息:

 OBDC--call failed.
 [IBM][System i Access ODBC Driver][DB2 for i5/OS]SQL0199 - Keyword INNER not expected. Valid tokens: USE SKIP WAIT WITH WHERE. (#-199)

我真的很感激任何帮助,因为我没有想法。

谢谢!

1 个答案:

答案 0 :(得分:0)

这是Microsoft特定的更新语法,它不适用于DB2。试试这个:

UPDATE 
    tbl_Data
SET
    (tbl_Data.FirstName,
    tbl_Data.MiddleName,
    tbl_Data.LastName,
    tbl_Data.BuildingNumber,
    tbl_Data.StreetName,
    tbl_Data.AptSuite,
    tbl_Data.Address2,
    tbl_Data.City,
    tbl_Data.State,
    tbl_Data.ZipCode)
    =
    (SELECT 
        a.NINMFR,
        a.NINMMD,
        a.NINAML,
        a.NIBLNR,
        a.NISTNM,
        a."NIAPT#",
        a.NIADR2,
        a.NICITY,
        a.NISTAT,
        a.NIZIPC
    FROM 
        library.table a
    WHERE
        tbl_Data.Prefix = a.NIPRFX,
        tbl_Data.Number = a.NIPLNR)
WHERE
    EXISTS (
        SELECT *
        FROM 
            library.table a
        WHERE
            tbl_Data.Prefix = a.NIPRFX,
            tbl_Data.Number = a.NIPLNR);