2012-01-19 1 views
1

여러 워크 시트가있는 Excel 통합 문서가 있습니다. 첫 번째 워크 시트에는 사용자의 로그인 정보가 있으며 AS400의 다른 테이블에 해당하는 모든 워크 시트를 업로드하는 버튼이 있습니다. 워크 시트 이름은 AS400 테이블 이름과 동일한 이름입니다. Excel 워크 시트를 AS400으로 업로드

나는 다음과 같이 업로드 버튼이 코드를 가지고 :

코드 :

Dim objConn As New ADODB.Connection, objRs As New ADODB.Recordset 
Dim WS_Count As Integer 
Dim I As Integer 
Dim WS_Name As String 

objConn.ConnectionString = "DSN=MYAS400;DRIVER=Client Access ODBC Driver (32-bit); " & _ 
         "SYSTEM = <ip>; UID = <uname>;PWD = <pwd>" 
objConn.Open 
    WS_Count = ActiveWorkbook.Worksheets.Count 
For I = 2 To WS_Count 
     WS_Name = ActiveWorkbook.Worksheets(I).Name 
     objConn.Execute "DELETE FROM MYAS400LIB. " & WS_Name & "" 
     objConn.Execute "INSERT INTO MYAS400LIB. " & WS_Name & " SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=" & ThisWorkbook.FullName & ";HDR=YES;IMEX=1', 'SELECT * FROM [" & WS_Name & "$]')" 


Next I 
objConn.Close 
Set objConn = Nothing 
End Sub 

가 어떻게 AS400로 (열 헤더) 각 워크 시트를 삽입 할 수 있습니다?

답변

1

실제 코드를 작성하는 세부 사항에 익숙하지 않으면 코드 샘플의 문제점은 스프레드 시트의 일부 SQL을 AS/400으로 보낼 수 없다는 것입니다. AS/400은 스프레드 시트를 볼 수 없기 때문에 단일 SQL에서 데이터를로드 할 수 없습니다. 대신 스프레드 시트의 모든 행을 읽고 한 번에 하나씩 AS/400 테이블에 삽입해야합니다. 매개 변수화 된 SQL이 바람직합니다. 그것은 작동하지 않습니다

objConn.Execute "INSERT INTO MYAS400LIB. " & WS_Name & " SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=" & ThisWorkbook.FullName & ";HDR=YES;IMEX=1', 'SELECT * FROM [" & WS_Name & "$]')" 

:

이 갈 필요 코드의 섹션입니다. 통합 문서의 줄을 읽는 루프로 바꿉니다. Excel OLEDB 세트를 사용하거나 행별로 스프레드 시트를 읽을 수 있습니다. 루프 내에서 읽은 각 스프레드 시트 행에 대해 ODBC를 통해 AS/400으로 실행되도록 INSERT INTO 문을 작성해야합니다.

0

iSeries Access에서 .NET Data Provider를 사용하려고합니다. 레코드 세트 열기. 시트의 각 행에 대한 AddNew. 레코드 세트를 업데이트하십시오. 닫기.

시트의 모든 레코드를 한번에 한 번에 하나씩 삽입해야합니다.