追加记录从直通查询到本地表(Append Records From Passthrough Quer

2019-07-29 01:37发布

我有一个Access数据库,我使用通经查询从AS400表中返回的记录。 连接字符串,并通过查询做工精细,但现在我想填充PT查询的结果到数据库中本地表和我的代码已超时。 这是我在ADO第一次尝试,所以我发表免责声明我的代码以“我不是100%肯定,我在做什么!”。 你可以看看这个,看看是否有什么明显的是我做错了吗? 任何方向,将不胜感激。 先感谢您。

    Sub mod_ADODBConnect()
      Const NewTableName = "MyNewTable"
      Dim cn As ADODB.Connection
      Dim rs As ADODB.Recordset
      Dim db As DAO.Database
      Dim sSQL1 As String
      Dim sSQL2 As String

      sSQL1 = "SELECT ITMNUM, ITMDS, ITPKDS, MJCMCD, SBCMCD, STATUS, PRITIN, OGEXDT         from PDBLLIB007.BLPMST07"
      sSQL2 = "INSERT INTO ' & NewTableName & ' SELECT [" & sSQL1 & "].* from [" & sSQL1 & "]"

      Set cn = New ADODB.Connection
      cn.Open "Driver={Client Access ODBC Driver (32-bit)};" & _
        "System=DC007; Uid=XXXXX; Pwd=XXXXXX; MgDSN=0; ConnType=2;" & _
        "BlockSize=512; MaxFieldLen=2048; LazyClose=1; Prefetch=1; QueryTimeOut=0;     Translate=1"

     Set rs = New ADODB.Recordset
     rs.Open sSQL1, cn, adOpenDynamic, adLockOptimistic

     Do While Not rs.EOF
        rs.MoveNext
     Loop

   Set db = CurrentDb
   db.Execute ("sSQL2")

   rs.Close
   cn.Close

   Set rs = Nothing
   Set cn = Nothing
   Set db = Nothing
   End Sub

Answer 1:

你必须工作正常,并返回你想要的行的传递查询。 现在,你想那些行存储在一个新的地方(喷气/ ACE)表。 在我看来,一个简单的方法是使用直通作为一个新的“ 生成表 ”查询的数据源。

SELECT * INTO MyNewTable FROM YourPassThruQuery;

哎呀,看起来像你的意思是这些行追加到现有的表。

INSERT INTO MyNewTable
SELECT * FROM YourPassThruQuery;

如果表的结构不匹配,你可以使用字段列出两个表。

INSERT INTO MyNewTable (fld1, fld2)
SELECT first_field, second_field FROM YourPassThruQuery;


文章来源: Append Records From Passthrough Query to Local Table