2013. 8. 30. 00:01
[MSSQL]
미국의 통화는 달러.센트로 표현하기 때문에 소수점부를 사용한다.
그래서 moeny 타입은 소수점부에 값을 입력할 수 있다.
반면 한국의 통화는 소수점부를 사용하지 않는다.
따라서 money 타입에 값을 설정할 때에는 CEILLING() 함수나 FOOLR() 함수를 통해
정수값만 추출하여 설정하는 것이 안전하다.
간혹 money 타입의 소수점부에 값이 설정되어, 1원 이하의 차이로 인한 버그가 생길 때가 있다.
이럴 때는 소수점부에 값이 설정되어 있는지 조회해 봐야 한다.
declare @point money=12345.12345
select @point - floor(@point)
위와 같이 FLOOR() 함수를 통해 소수점부를 절사한 다음, 원래 값에서 빼주면, 소수점부 이하의 값만 남게 된다.
실제 레코드를 조회하는 방법은 아래와 같은 방식으로 한다.
select *
from points
where point - floor(point) > 0
위와 같이 조회하면 소수점부 이하에 값이 설정된 레코드만 추출될 것이다.
'MSSQL' 카테고리의 다른 글
MSSQL 곱셈-집계 함수 곱셈, SUM() 곱셈함수, row 곱셈, 특정필드 값 곱셈 (2) | 2014.06.12 |
---|---|
MSSQL SELECT 쿼리 LEFT JOIN 속도 개선 - left merge join (0) | 2013.11.14 |
MSSQL 차집합 구하기 (0) | 2013.11.14 |
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
아래는 이에 해당하는 코드이다.
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 |
'Windows Programming > Delphi 6/7' 카테고리의 다른 글
Delphi6/7 디렉토리(폴더) 다이알로그, 폴더속에 있는 파일들 복사하기 (0) | 2010.09.13 |
---|---|
Delphi6/7 ShellAPI unit의 ShellExecute (0) | 2010.09.13 |
Delphi6/7 TADOQuery - Binary 조회 (0) | 2010.09.13 |
Delphi6/7 TADOQuery - 기본적인 조회 코드 조각 (0) | 2010.09.13 |
Delphi6/7 TDBGrid - Column autoFit Implementation (0) | 2010.09.13 |
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의 인스턴스를 초기화 한다.
위 글을 찾은 이유는 한 폴더속에 있는 파일들을, 사용자가 지정한 폴더에 복사해야 할 일이 생겼기 때문이다.
아래는 이 작업에 대한 코드 조각이다.
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;
// 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;
'Windows Programming > Delphi 6/7' 카테고리의 다른 글
Delphi6/7 Virtual Key Codes (0) | 2010.09.13 |
---|---|
Delphi6/7 ShellAPI unit의 ShellExecute (0) | 2010.09.13 |
Delphi6/7 TADOQuery - Binary 조회 (0) | 2010.09.13 |
Delphi6/7 TADOQuery - 기본적인 조회 코드 조각 (0) | 2010.09.13 |
Delphi6/7 TDBGrid - Column autoFit Implementation (0) | 2010.09.13 |