이 화면은 xFrameDBInterface 컴포넌트(xFrameDBInterface.ocx)에 대한 예시화면이다.
// DB 연결/해제 버튼 이벤트
function btnConnect_on_mouseup(objInst)
{
// 연결이 되지 않은 경우, 연결 시도
if (ctrlDB.innerctrl.IsConnected() == false) {
fnOpenDatabae();
}
// 이미 DB가 연결되어 있는 경우, 연결 해제 처리
else {
// DB 연결 해제
ctrlDB.innerctrl.Disconnect();
}
ShowOpenDatabaeStatus();
}
// DB 연결 결과 정보 설정
function ShowAutoCommitStatus()
{
if (ctrlDB.innerctrl.IsConnected()) {
if (ctrlDB.innerctrl.GetAutoCommit() == 1) {
chkAutoCommit.setcheck(true);
btnCommit.setenable(false);
btnRollback.setenable(false);
}
else {
chkAutoCommit.setcheck(false);
btnCommit.setenable(true);
btnRollback.setenable(true);
}
}
}
// DB 연결 결과 정보 설정
function ShowOpenDatabaeStatus()
{
if (ctrlDB.innerctrl.IsConnected()) {
// DB 연결 버튼 텍스트 설정 및 DB 연결 정보 패널 활성화
btnConnect.settext("Disconnect");
pnlConnect.setenable(true);
}
else {
// DB 연결 버튼 텍스트 설정 및 DB 연결 정보 패널 비활성화
btnConnect.settext("Connect");
pnlConnect.setenable(true);
}
ShowAutoCommitStatus();
}
/**
* DB 연결 함수
*/
function fnOpenDatabae()
{
var nDBKind = cbDBKind.getselectedcode();
var strDBName = fieldDBname.gettext();
var strServiceName = fieldServiceName.gettext();
var strIPAddress = fieldIPAddress.gettext();
var nPort = Number(fieldPort.gettext());
var strUID = fieldUID.gettext();
var strPWD = fieldPWD.gettext();
if (ctrlDB.innerctrl.IsConnected() == true) {
return true;
}
var bConnect = ctrlDB.innerctrl.Connect(nDBKind, strDBName, strServiceName, strIPAddress, nPort, strUID, strPWD);
return bConnect;
}
// 쿼리 실행 버튼 이벤트
function btnExecQuery_on_mouseup(objInst)
{
var ret, strQuery, nFieldCount, nFieldIndex, nRecordCount, strValue, nRowIndex, nColumnIndex;
// 그리드 내용 및 컬럼 삭제
gridResult.deleteall();
gridResult.deleteallcolumn();
if (ctrlDB.innerctrl.IsConnected() == false && fnOpenDatabae() == false) {
screen.alert("DB가 연결되어 있지 않습니다.");
return;
}
strQuery = mmQuery.gettext();
if (strQuery.length <= 0) {
screen.alert("쿼리를 입력하세요.");
return;
}
// 쿼리 실행
if (ctrlDB.innerctrl.ExecuteSQL(strQuery) == false) {
screen.alert("쿼리 수행에 실패하였습니다.");
return;
}
// 쿼리 결과 레코드 갯수를 구함
nRecordCount = ctrlDB.innerctrl.GetResultRecordCount();
factory.consoleprint("nRecordCount : " + nRecordCount);
if (nRecordCount <= 0) {
screen.alert("쿼리 실행 결과 레코드 갯수 = " + nRecordCount);
return;
}
// 쿼리 결과 필드 갯수를 구함 (Select 쿼리가 아닌 경우에는, 필드 갯수가 0임)
nFieldCount = ctrlDB.innerctrl.GetResultFieldCount();
if (nFieldCount <= 0) {
screen.alert("쿼리 실행 결과 레코드 갯수 = " + nRecordCount);
return;
}
factory.consoleprint("nFieldCount : " + nFieldCount);
// 쿼리 결과 필드 갯수만큼 컬럼 생성
for (nFieldIndex = 0; nFieldIndex < nFieldCount; nFieldIndex++) {
nColumnIndex = gridResult.addcolumn();
if (nColumnIndex < 0) {
screen.alert("그리드 컬럼 추가 실패하였습니다.");
continue;
}
// 필드 이름을 구하여 컬럼 헤더 텍스트 설정
gridResult.setheadertext(0, nColumnIndex, ctrlDB.innerctrl.getResultFieldName(nFieldIndex));
gridResult.setcolumnautowidth(nColumnIndex, false);
gridResult.setcolumnwordellipsis(nColumnIndex, true);
}
// 쿼리 결과 한 레코드를 패치
nResult = ctrlDB.innerctrl.GetResultRecordFetch();
factory.consoleprint("Result record fetch : " + nResult);
// 쿼리 결과 한 레코드를 패치가 성공인 경우일 동안 Loop
while (nResult == 1) {
// 그리드에 행 추가
nRowIndex = gridResult.additem(false, false);
// 레코드에서 컬럼 인덱스에 대한 값을 구하여 그리드 아이템에 설정
for(nColumnIndex = 0; nColumnIndex < nFieldCount; nColumnIndex++) {
strValue = ctrlDB.innerctrl.GetFieldValue(nColumnIndex);
gridResult.setitemtext(nRowIndex, nColumnIndex, strValue);
}
// 쿼리 결과 한 레코드를 패치
nResult = ctrlDB.innerctrl.GetResultRecordFetch();
}
}
// Commit 버튼 이벤트
function btnCommit_on_mouseup(objInst)
{
if (ctrlDB.innerctrl.IsConnected() == false) { return; }
if (ctrlDB.innerctrl.Commit() == false) { screen.alert("Commit error"); }
}
// Rollback 버튼 이벤트
function btnRollback_on_mouseup(objInst)
{
if (ctrlDB.innerctrl.IsConnected() == false) { return; }
if (ctrlDB.innerctrl.Rollback() == false) { screen.alert("Rollback error"); }
}
// AutoCommit 체크 박스 이벤트
function chkAutoCommit_on_click(objInst)
{
if (chkAutoCommit.getcheck() == true) {
if (ctrlDB.innerctrl.GetAutoCommit() == 0) {
ctrlDB.innerctrl.SetAutoCommit(true);
}
}
else {
if (ctrlDB.innerctrl.GetAutoCommit() == 1) {
ctrlDB.innerctrl.SetAutoCommit(false);
}
}
ShowAutoCommitStatus();
}