CRUD 처리
Sheet 명을 ; 구분으로 여러 시트 처리 묶음 처리 할 경우 하나의 transaction 으로 처리됩니다.
(오류 발생 할 경우 경우 전체 rollback 처리됨)
Syntax
Public Function MultiCRUD (
wbobj As Workbook,
sheetList As String
) As Long
|
Parameters
Type: Excel.Workbook
CRUD 할 Workbook 개체
Type: String
worksheet 명 리스트, ;문자로 구분
Return Value
Type: Long
정상일 경우 : 처리건수
오류 일경우 : 오류코드(음수)
Example
1 2 3 4 5 6 7 8 9 10 11 12 | Sub MultiCRUDTest()
Set mxmodule = Application.COMAddIns.Item( "iMATRIX.ExcelModule" ). Object
mxmodule.xapi.MultiCRUD ThisWorkbook, "U1;U2"
If mxmodule.xapi.LastErrorCode <> 0 Then
mxmodule.xapi.MessageBox mxmodule.xapi.LastErrorMessage, vbInformation, "i-MATRIX"
Else
mxmodule.xapi.MessageBox "Complete." & vbCrLf & "Info" & mxmodule.xapi.ResponseData, vbInformation, "i-MATRIX"
End If
End Sub
|
...
테이블에 입출력
''--------------------------------------------------------------------------------'
' 'Conn.crud Target Sheet, Execute Type, [Data Range] '
' 'Sheet : CRUD Sheet (표준양식 반드시 준수) '
' 'Execute Type : "T" - TRUNCATE / INSERT '
' ' "D" - DELETE / INSERT '
' ' "M" - MERGE INTO '
' ' "N" - INSERT '
' ' "R" - 행 단위로 구분자 지정(U:Update D:Delete C:Insert) '
' '[Data Range]: Execute Range / 미지정 시 전체 데이터 실행 '
' 'Me = 해당 시트 (모듈에서 사용할 경우 시트를 명확히 재지정) '
''--------------------------------------------------------------------------------'
Syntax
public long CRUD(Excel.Worksheet shobj, string flag, string separator = "|" )
|
Parameters
Name | 동작명 | 비고 |
---|
shobj | ActiveWorkSheet |
|
flag | Execute Type : "T" - TRUNCATE / INSERT "D" - DELETE / INSERT "M" - MERGE INTO "N" - INSERT "R" - 행 단위로 구분자 지정(U:Update D:Delete C:Insert) |
|
separator | 구분자 Default = "|" |
|
Return Value
Type: long
ErrorCode : Exception 발생시 -1
성공시 0
VBA 코드
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | Sub MTX_CRUD()
Dim lngEnd As Long
Dim rPoint As Range
Dim rData As Range
Dim strExecute As String
Dim addin As COMAddIn
Dim mxmodule As Object
On Error GoTo hErr
Set addin = Application.COMAddIns.Item( "iMATRIX6.ExcelModule" )
Set mxmodule = addin. Object
Const strTitle As String = "i-MATRIX"
Set rPoint = Me .Range( "C_BasePoint" )
lngEnd = Me .Range( "D" & Rows.count). End (xlUp).Row
strExecute = Range( "c_Execute" ).Value
If lngEnd = rPoint.Row - 1 Then
MsgBox "입력된 데이터가 없습니다.." , vbInformation, strTitle
Else
If strExecute = "R" And Application.WorksheetFunction.CountA(Range( "C" & rPoint.Row & ":C" & lngEnd)) = 0 Then
MsgBox "C열에 구분자를 입력(U:Update, D:Delete, C:Insert) 하십시요." , vbInformation, strTitle
Else
mxmodule.xapi.crud Me , strExecute
If mxmodule.xapi.LasterrorCode <> 0 Then
If mxmodule.xapi.LastErrorMessage = "Unknown error" Then
MsgBox "DB접속 정보가 없습니다." , vbCritical, strTitle
Else
MsgBox mxmodule.xapi.LastErrorMessage, vbCritical, strTitle
End If
Else
MsgBox "처리 되었습니다." & vbCrLf & "Info" & mxmodule.xapi.ResponseData, vbInformation, strTitle
Set rData = rPoint.CurrentRegion.Offset(rPoint.Row - 2)
End If
End If
End If
hErr:
If Err <> 0 Then
MsgBox Err.Description
End If
Set addin = Nothing
Set mxmodule = Nothing
End Sub
|