GUI sin

//전달(BeforeMonth)
cTempMonth = Left(cPayMonth, 4) + '/' + Right(cPayMonth, 2) + '/01'
cBeforeMonth = String(RelativeDate(Date(cTempMonth), -1), 'yyyymm')

Comment +0


IF MessageBox('확인', '계속하시겠습니까?', question!, yesno!, 2) <> 1 THEN
 RETURN -1
END IF

나는야 돌대가리. ㅠ_ㅜ

Comment +0

Question

사진 파일을 DataBase(blob)에 저장을 해두었습니다. 근데 사진을 올릴때 확장자가 다른 사진들이 함께 들어가있습니다. (JPG, BMP, GIF 등등) 모든 사진을 특정 디렉토리에 내려받았는데(모든 확장자를 JPG로), 어떤 것은 보이고 어떤 것은 보이지 않고 해서 알고보니 확장자의 문제더군요. 일일이 수정하기 힘들어서 이렇게 질문을 합니다.

Answer

일반적으로는 이미지를 DataBase에 저장할 때 확장자나 파일의 이름을 다른 컬럼으로 저장을 합니다. 그런 방식으로 안되어 있으시다면 다음과 같은 방법을 적용해 보는건 어떠실런지요. 이건 정석이 아니라 말씀드리기 좀 그렇지만 이런 편법적인 방법이라도 도움이 되실까해서 답변 드립니다.
*.BMP, *.GIF, *.JPEG 파일들을 일반 Editor(UltraEditor, EditPlus)에서 열어 보시면, 가장 첫 문자로 공통적으로 찍히는 부분이 있을 것입니다. BMP일 경우 BM, GIF일 경우 GIF, JPEG 파일은 깨진 이상한 문자가 보이네요. SELECTBLOB 으로 읽어낸 데이터의 첫 2자리를 잘라서 BM인지, GI인지 이 둘다 아닌경우는 JPEG가 됩니다. 이런식으로 처리를 해보시는건 어떠실런지요. SELECTBLOB 으로 읽어서 INTO한 변수를 BlobMid() 함수로 두자리를 잘라서 비교를 해보는 것이지요. 적용시켜 보십시오.



Example

Int loops, k, li_complete
Long bytes_read, lgth, ncnt
Blob b, imagedata, imagedata2
String ls_version, cDate, cTime, ls_path, file_path

cDate = String(Curday(), 'yyyymmdd')
cTime = String(Curday(), 'hhmmss')

// 사진파일을 resource폴더에 write
ls_path = cgResourceDir + '\TEMP\'
file_path = ls_path + arg_filename

// 파일읽을 횟수
IF arg_filelength > 32765 THEN
 IF Mod(arg_filelength, 32765) = 0 THEN
  loops = arg_filelength / 32765
 ELSE
  loops = (arg_filelength / 32765) + 1
 END IF
ELSE
 loops = 1
END IF

// 파일읽기
FOR k = 1 TO loops
 bytes_read = FileRead(arg_fnum, b)
 imagedata = imagedata + b
NEXT

// Blob 변수에 제대로 들어갔는지 크기로 확인
lgth = Len(imagedata)

// 사진 확장자 오류 확인
IF ( String(BlobMid(imagedata, 1, 2)) = 'BM' OR String(BlobMid(imagedata, 1, 2)) = 'GI' ) AND Upper(arg_compmode) = 'JPG' THEN
 MessageBox('오류','잘못된 사진 파일 입니다. 확인하시고 다시 시도해주세요.')
 RETURN 0
END IF


// 이하 생략...

아주 간단하게 System에 적용시켜보았다. 이걸 몰라서 하루 종일 책을 찾아봤더니 조금 억울하네. (ㅠ_ㅜ)흑~

Comment +0

확장팩(베타) 스크린샷

마법의 융단을 타고...(초반 퀘스트 중에 하나)


기대도 하지 않았던 이벤트에 당첨되어 아기다리고기다리던 월드 오브 워크래프트 두번째 확장팩을 아주 조금 일찍 접해볼 수 있었다.

아직은 초반이라 새로생긴 죽음의 기사도 만들어 보는 등 새로운 것들에 적응하느라 정신없지만 11월 18일 정식 서비스를 앞두고 있어서 그런지, '어짜피 한달 뒤면 사라질 캐릭'이라 생각하니 손에 잡히질 않는다. 초반 퀘스트나 조금 해보고 확장팩이 나오면 빠르게 적응해야겠다. ㅎㅎ

Comment +0


연 나이/만 나이 란?

'연나이'란 현재연도에서 출생연도를 뺀 나이, 즉 생년월일이 83년 12월 1일인 사람의 경우 2002년이 되기만하면 연나이로 19세가 된다. 하지만 만 나이로는 2002년 12월1일 이 지나야 19세가 되는 것이다. '만나이'개념으로 하면 같은 83년생이라도 생일이 지났냐 안지났냐에 따라 성년/미성년이 가려졌으나, '연나이'로 하면 같은 해에 태어난 사람은 똑같이 미성년이 되거나 성년이 된다.



생일이 지났을 경우 만 나이 = 현재 연도 - 태어난 연도
생일이 지나지 않았을 경우 만 나이 = 현재 연도 - 태어난 연도 - 1



< 스트립트 >
IF ( long(string(curday(),'mmdd')) >  long(mid(birth_date , 5, 4)),
string(long(string(curday(),'yyyy')) - long(mid(birth_date , 1, 4))) + '세',
string(long(string(curday(),'yyyy')) - long(mid(birth_date , 1, 4)) - 1) + '세' )

Comment +0

IF sqlca.sqlcode <> 0 THEN
   ROLLBACK;
   MessageBox('Error', 'SQL Error')
   RETURN FALSE
ELSE
   Commit;
   MessageBox('OK', 'OK')
END IF

스크립트 안에서 가장 간단하게 오류를 확인하고 Roll Back 한다.
이녀석도 자주 사용하는데 자주 잊는 문장중에 하나.-_-;

Comment +0

INSERT INTO [테이블] (컬럼1, 컬럼2, 컬럼3...컬럼X)
VALUES (값1, 값2, 값3...값X)

UPDATE [테이블명]
SET 컬럼1 = 값1, 컬럼2 = 값2, 컬럼3 = 값3...컬럼X = 값X)

-_-; 갑자기 생각이 안나서 적어둬야겠다. 아 쪽팔려. ㅠ_ㅜ

Comment +1

//clicked() script

STRING cConKind, cRegion, cRoomType, ls_newsql
DataWindowChild dwc  

CHOOSE CASE dwo.name

//콘도이용지역
 CASE 'region'

         THIS.AcceptText() 
   cConKind = THIS.GetItemString(THIS.getrow(), 'con_kind')
   
   THIS.getchild('region', dwc)  // dcode
   dwc.SetTransObject(sqlca)
   
   ls_newsql = " SELECT datachkd.dcode,         " + &
       "        datachkd.dname,         " + &
       "   datachkd.hcode,         " + &
       "   datachkd.dname1,        " + &
       "   datachkd.dvalue,        " + &
       "   datachkd.hdcode,        " + &
       "   datachkd.relate_code1,  " + &   
       "   datachkd.relate_code2,  " + &
       "   datachkd.fix_code1,     " + &
       "   datachkd.fix_code2      " + &
       "  FROM datachkd                " + &
       "  WHERE datachkd.hcode = 'H753' " + &
       "   and datachkd.relate_code1 like '"+ cConKind +"'"  
       
   dwc.setsqlselect(ls_newsql)    
   dwc.Retrieve()
   
end choose

Comment +0