오토잇 테이블생성 자동화
DB CAFE
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
<source lang=c>
- ~ ==================================
- ~ 1.ERWIN 파일 실행 되어 있어야 함
- ~ 2.TOAD 를사용함
- ~ 3.erwin script를 호출해야함(위치
- 바탕화면)
- ~ ==================================
- WinTitleMatchMode = Alters the method that is used to match window titles during search operations.
opt("WinTitleMatchMode",2);1=start,2=subStr,3,exact,4=advanced,=1 to =4 = Nocase opt("GUIOnEventMode",1);
- include <Array.au3>
Global Const $VK_CAPITAL = 0x14
hotkeyset("{ESC}","_exit")
If _Key_Is_On($VK_CAPITAL) Then MsgBox( 0, "", "캡스락 키가 켜져 있읍니다. 꺼주세요.",5) ;CAPS LOCK 끄기 Send("{CapsLock off}") Exit EndIf
global $cb;
- ~ 0. ini 설정
- ~ ===============================================================================================
- ~ 1.ERWIN에 Pre & Post 스크립트를 세팅 합니다.
- ~ ===============================================================================================
Erwin_Script_Setup()
- ~ ===============================================================================================
- ~ 2.엑셀에서 작업 대상 로딩
- ~ ===============================================================================================
$str = Get_Excel_Data("통합") ; 인자는 윈도우 타이틀
$Array_Target = FileReadToArray(@ScriptDir&"\temp_file.lst")
- ~ 3.자동화 반복 처리
$proc_count = Do_Loop_Work($Array_Target)
MsgBox(0,"",$proc_count-1 &"건 자동화 처리 완료 ",3)
- ~ 2. 자동화 반복 작업 ===========================================================================
- 클립보드에 값이 없을때까지 반복
- ~ $i = 2
Func Do_Loop_Work($Array_Target)
For $i = 1 To $Array_Target[1] Step +1
- ~ if StringLen(StringStripWS($Array_Target[$i+1],4)) <= 3 Then
- ~ MsgBox(0,"",$i+1 &"건 종료 = "&$Array_Target[$i+1])
- ~ $i = $i+1
- ~ _exit()
- ~ EndIf
- ~ MsgBox(0,$i,$Array_Target[$i])
WinActivate("AllFusion","") Send("{CTRLDOWN}{DOWN}{CTRLUP}") Send("{CTRLDOWN}g{CTRLUP}")
;테이블 찾기 WinWaitActive ( "Go To Table","",3)
- ~ Send("{CTRLDOWN}v{CTRLUP}{HOME}{END}")
Send($Array_Target[$i+1],1)
Send("{ALTDOWN}o{ALTUP}")
;ERWIN POSTSCRIPT 처리 Send("{ALTDOWN}b{ALTUP}") Sleep(100) Send("{p}") Sleep(100) Send("{t}")
WinWaitActive("Oracle Script Template")
Sleep(100) Send("{TAB}") Sleep(100) Send("{TAB}") Sleep(100) Send("{TAB}") Sleep(100) Send("{TAB}") Sleep(100) Send("{LEFT 5}") Sleep(100) Send("{RIGHT 1}")
Sleep(100) Send("{TAB}") Sleep(100) Send("{TAB}") Sleep(100) Send("{CTRLDOWN}a{CTRLUP}") Send("{CTRLDOWN}c{CTRLUP}") Sleep(200) Send("{ALTDOWN}{F4}{ALTUP}")
WinActivate("Toad","") MouseClick("left",534,592,0) if($i = 1 ) Then WinWait("[CLASS:TfrmMain]") ControlFocus ( "[CLASS:TfrmMain]", "", "TtdDScintilla1" ) Send("{CTRLDOWN}a{CTRLUP}") Send("{DEL}") EndIf
Send("{ENTER}") Send("{CTRLDOWN}{END}{CTRLUP}") Send("{ENTER}")
Send("{CTRLDOWN}v{CTRLUP}")
Next return $i
EndFunc
Func _exit()
exit
endfunc
- ~ Global Const $VK_CAPITAL = 0x14
- ~ If _Key_Is_On($VK_CAPITAL) Then Send("{CAPSLOCK Toggle}")
- ~ If _Key_Is_On($VK_CAPITAL) Then
- ~ MsgBox( 0, "", "")
- ~ EndIf
- 캡스락키 확인
Func _Key_Is_On($nVK_KEY, $vDLL = 'User32.dll')
Local $a_Ret = DllCall($vDLL, "short", "GetKeyState", "int", $nVK_KEY) Return Not @error And BitAND($a_Ret[0], 0xFF) = 1
EndFunc
Func FileReadBuffer($file_name) Local $output_txt =
Local $file = FileOpen($file_name, 0)
; Check if file opened for reading OK If $file = -1 Then MsgBox(0, "Error", "Unable to open file.") Exit EndIf
; Read in lines of text until the EOF is reached While 1 Local $line = FileReadLine($file) $line = $line & @CRLF $output_txt = $output_txt & $line; If @error = -1 Then ExitLoop
- ~ MsgBox(0, "Line read
- ", $line)
WEnd
FileClose($file)
- ~ 클립보드에 복사한다.
ClipPut($output_txt) EndFunc
Func FileReadToArray($file_name) Local $arry_return[1]=[""]
Local $file = FileOpen($file_name, 0)
; Check if file opened for reading OK If $file = -1 Then MsgBox(0, "Error", "Unable to open file.") Exit EndIf
; Read in lines of text until the EOF is reached $i = 0; While 1 Local $line = FileReadLine($file)
If @error = -1 OR $line ="" Then ExitLoop
- ~ MsgBox(0, "Line read
- ", $line)
- ~ _ArrayInsert($arry_return,$i, $line)
_ArrayAdd($arry_return,$line)
$i = $i+1
- ~ _ArrayAdd($arry_return,$line)
WEnd _ArrayInsert($arry_return,1, $i) FileClose($file) Return $arry_return EndFunc
Func Erwin_Script_Setup()
- ERWIN 스크립트 불러오기
- ~ $erwin_script = FileReadBuffer(@ScriptDir&"\erwin_post_script_for_web.sql");
$erwin_script = FileReadBuffer(@ScriptDir&"\erwin_post_script.sql"); MsgBox(0,"ERWIN - POST 스크립트 적용 ", 'ERWIN에 POST SCRIPT 적용을 시작 합니다. ',2)
WinActivate("AllFusion","")
Send("{CTRLDOWN}{DOWN}{CTRLUP}")
Send("{ALTDOWN}b{ALTUP}") Sleep(100)
Send("{p}")
Sleep(100) Send("{t}")
WinWaitActive("Oracle Script Template")
Sleep(100) Send("{TAB}") Sleep(100) Send("{TAB}") Sleep(100) Send("{TAB}") Sleep(100) Send("{TAB}") Sleep(100) Send("{LEFT 5}") Sleep(100) Send("{TAB}") Sleep(100)
Send("{CTRLDOWN}a{CTRLUP}") Send("{CTRLDOWN}v{CTRLUP}") Sleep(100) Send("{TAB}") Sleep(100) Send("{TAB}") Send("{ENTER}")
- ~ ClipPut(); 클립보드 비우기
EndFunc
- 엑셀에서 처리대상 테이블을 가져온다.
Func Get_Excel_Data($title) Local $arry_return[1] = [""] Local $file = FileOpen(@ScriptDir&"\temp_file.lst", 2) WinActivate($title,"") If WinWaitActive($title,"",3) Then ;~ 클립보드 초기화 ClipPut() Send("{CTRLDOWN}g{CTRLUP}") WinWaitActive("이동","",1) Send("a1{ENTER}") Sleep(100) Send("{CTRLDOWN}{SHIFTDOWN}{DOWN}{SHIFTUP}{CTRLUP}") Sleep(200) Send("{CTRLDOWN}c{CTRLUP}") Sleep(200) $cb = ClipGet() Sleep(100)
; Check if file opened for writing OK If $file = -1 Then MsgBox(0, "Error", "Unable to open file.") Exit EndIf
- ~ FileWrite($file, StringStripWS($cb,8))
FileWrite($file, StringReplace($cb," ",""))
FileClose($file)
If StringLen($cb) <= 2 Then MsgBox(0,"","대상 복사 실패",3) exit endif Else
MsgBox(0,"Error",$title & "-엑셀 인식 실패 ",3) exit
EndIf Return True EndFunc
</lang>