2012-04-18 7 views
2

Access 데이터베이스가 있으며 AS400 테이블의 레코드를 반환하는 통과 쿼리를 사용하고 있습니다. 연결 문자열 및 통과 쿼리가 잘 작동하지만 지금은 DB 내 로컬 테이블에 p-t 쿼리의 결과를 채우려고하고 내 코드가 시간 초과되었습니다. 이것은 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 
+1

링크 된 테이블 (http://itknowledgeexchange.techtarget.com/itanswers/as400-data-to-ms-access-database/)을 고려 했습니까? – Fionnuala

답변

4

당신은 제대로 작동하고 원하는 행을 반환하는 통과 쿼리가 있습니다. 이제 이러한 행을 새 로컬 (Jet/ACE) 테이블에 저장하려고합니다. 새 응답 파일 ""쿼리에서 패스 스루를 데이터 소스로 사용하는 것이 더 간단한 방법이라고 생각됩니다.

SELECT * INTO MyNewTable FROM YourPassThruQuery; 

기존 테이블에 해당 행을 추가하려는 것 같습니다.

INSERT INTO MyNewTable 
SELECT * FROM YourPassThruQuery; 

테이블 구조가 일치하지 않으면 두 테이블 모두에 필드 목록을 사용할 수 있습니다.

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

그게 내가 끝내는 방법 일거야,하지만 내가 시도한 방법이 가능한거야? – CSharp821

+0

나는 그렇게 생각하지 않는다. 그것은'CurrentDb'을 사용하여'sSQL2'를 실행합니다. Access db engine은 "PDBLLIB007.BLPMST07"에 대해 불평 할 것입니다. 그리고 다른 문제가있을 수 있습니다. 나는 레코드 셋을 여는 시점을 이해하지 못했다. – HansUp

+0

원격 데이터 원본을 가리키는 Access에서 링크를 만드는 Remou의 제안도 작동해야합니다. 그리고 아마도 테이블이 링크되어 있다면, 네이티브 Access 테이블에 데이터를 중복해서 저장할 필요가 없을 것입니다. – HansUp

관련 문제