BLOG main image
분류 전체보기 (65)
JSP (6)
Android (1)
ASP.NET (0)
MSSQL (4)
PHP (18)
ASP (11)
오픈 API (1)
HTML (2)
JavaScript (0)
Windows Programming (8)
컴퓨터교양 (14)
객체 지향 (0)
리뷰 및 생각 (0)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
2013. 8. 30. 00:01

미국의 통화는 달러.센트로 표현하기 때문에 소수점부를 사용한다.

그래서 moeny 타입은 소수점부에 값을 입력할 수 있다.

반면 한국의 통화는 소수점부를 사용하지 않는다.

따라서 money 타입에 값을 설정할 때에는 CEILLING() 함수나 FOOLR() 함수를 통해

정수값만 추출하여 설정하는 것이 안전하다.

 

간혹 money 타입의 소수점부에 값이 설정되어, 1원 이하의 차이로 인한 버그가 생길 때가 있다.

이럴 때는 소수점부에 값이 설정되어 있는지 조회해 봐야 한다.

declare @point money=12345.12345
select @point - floor(@point)

위와 같이 FLOOR() 함수를 통해 소수점부를 절사한 다음, 원래 값에서 빼주면, 소수점부 이하의 값만 남게 된다.

 

실제 레코드를 조회하는 방법은 아래와 같은 방식으로 한다.

select *
from points
where point - floor(point) > 0

위와 같이 조회하면 소수점부 이하에 값이 설정된 레코드만 추출될 것이다.

2010. 9. 13. 22:00
검색기를 만들 때 엔터 처리를 하려면, 사용자가 입력한 키와 Virtual Key를 비교 해야 한다.

아래는 이에 해당하는 코드이다.

procedure TfrmMain.edtSearchKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_RETURN then
    btnSearch.Click;
end;

아래는 Virtual Key Codes를 정리해 놓은 표이다.

출처 : http://delphi.about.com/od/objectpascalide/l/blvkc.htm

Symbolic
constant name
Value
(hexadecimal)
Keyboard (or mouse) equivalent
VK_LBUTTON 01 Left mouse button
VK_RBUTTON 02 Right mouse button
VK_CANCEL 03 Control-break processing
VK_MBUTTON 04 Middle mouse button (three-button mouse)
VK_BACK 08 BACKSPACE key
VK_TAB 09 TAB key
VK_CLEAR 0C CLEAR key
VK_RETURN 0D ENTER key
VK_SHIFT 10 SHIFT key
VK_CONTROL 11 CTRL key
VK_MENU 12 ALT key
VK_PAUSE 13 PAUSE key
VK_CAPITAL 14 CAPS LOCK key
VK_ESCAPE 1B ESC key
VK_SPACE 20 SPACEBAR
VK_PRIOR 21 PAGE UP key
VK_NEXT 22 PAGE DOWN key
VK_END 23 END key
VK_HOME 24 HOME key
VK_LEFT 25 LEFT ARROW key
VK_UP 26 UP ARROW key
VK_RIGHT 27 RIGHT ARROW key
VK_DOWN 28 DOWN ARROW key
VK_SELECT 29 SELECT key
VK_PRINT 2A PRINT key
VK_EXECUTE 2B EXECUTE key
VK_SNAPSHOT 2C PRINT SCREEN key
VK_INSERT 2D INS key
VK_DELETE 2E DEL key
VK_HELP 2F HELP key
30 0 key
31 1 key
32 2 key
33 3 key
34 4 key
35 5 key
36 6 key
37 7 key
38 8 key
39 9 key
41 A key
42 B key
43 C key
44 D key
45 E key
46 F key
47 G key
48 H key
49 I key
4A J key
4B K key
4C L key
4D M key
4E N key
4F O key
50 P key
51 Q key
52 R key
53 S key
54 T key
55 U key
56 V key
57 W key
58 X key
59 Y key
5A Z key
VK_NUMPAD0 60 Numeric keypad 0 key
VK_NUMPAD1 61 Numeric keypad 1 key
VK_NUMPAD2 62 Numeric keypad 2 key
VK_NUMPAD3 63 Numeric keypad 3 key
VK_NUMPAD4 64 Numeric keypad 4 key
VK_NUMPAD5 65 Numeric keypad 5 key
VK_NUMPAD6 66 Numeric keypad 6 key
VK_NUMPAD7 67 Numeric keypad 7 key
VK_NUMPAD8 68 Numeric keypad 8 key
VK_NUMPAD9 69 Numeric keypad 9 key
VK_SEPARATOR 6C Separator key
VK_SUBTRACT 6D Subtract key
VK_DECIMAL 6E Decimal key
VK_DIVIDE 6F Divide key
VK_F1 70 F1 key
VK_F2 71 F2 key
VK_F3 72 F3 key
VK_F4 73 F4 key
VK_F5 74 F5 key
VK_F6 75 F6 key
VK_F7 76 F7 key
VK_F8 77 F8 key
VK_F9 78 F9 key
VK_F10 79 F10 key
VK_F11 7A F11 key
VK_F12 7B F12 key
VK_F13 7C F13 key
VK_F14 7D F14 key
VK_F15 7E F15 key
VK_F16 7F F16 key
VK_F17 80H F17 key
VK_F18 81H F18 key
VK_F19 82H F19 key
VK_F20 83H F20 key
VK_F21 84H F21 key
VK_F22 85H F22 key
VK_F23 86H F23 key
VK_F24 87H F24 key
VK_NUMLOCK 90 NUM LOCK key
VK_SCROLL 91 SCROLL LOCK key
VK_LSHIFT A0 Left SHIFT key
VK_RSHIFT A1 Right SHIFT key
VK_LCONTROL A2 Left CONTROL key
VK_RCONTROL A3 Right CONTROL key
VK_LMENU A4 Left MENU key
VK_RMENU A5 Right MENU key
VK_PLAY FA Play key
VK_ZOOM FB Zoom key
2010. 9. 13. 03:03
디렉토리 다이알로그 띄우기 : http://bloodguy.tistory.com/entry/Delphi-%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC-%EC%84%A0%ED%83%9D-Dialog-%EB%9D%84%EC%9A%B0%EA%B8%B0

위 글을 찾은 이유는 한 폴더속에 있는 파일들을, 사용자가 지정한 폴더에 복사해야 할 일이 생겼기 때문이다.
아래는 이 작업에 대한 코드 조각이다.

var
  srcDir, descDir : String;
  sr : TSearchRec;
  srcFullPath, descFullPath : String;
begin
  // 사용자가 폴더를 지정했으면
  if SelectDirectory('','',descDir) then
  begin
    // 파일을 끄집어 내기 위한 준비를 한다. TSearchRec의 인스턴스를 초기화 한다.
    if FindFirst(srcDir, faArchive, sr) = 0 then
      // sr에서 파일을 하나씩 끄집어 내서 복사 한다.
      while FindNext(sr) = 0 do begin
        srcFullPath := PChar(ExtractFilePath(srcDir) + sr.Name);
        descFullPath := PChar(descDir + '\' + sr.Name);
        CopyFile(PChar(srcFullPath), PChar(descFullPath), False);
      end;
    FindClose(sr);
  end;
end;