Access 에 있는 데이터를 DBGrid에 뿌려줄려고 합니다.
데이터중에 금액 필드가 있는데여 이게 숫자가 아니고 문자형으로 되어
있거든요
이거 DBGrid 에 뿌릴때 천단위 구분해서 뿌려야 되는데
10000 ===> 10,000 ( 이런식으로요..)
검색해보니까 숫자형일 경우에는 DisplayFormat 에서 형식을 정의해 주면
된다고들 하시더군여
근데 숫자필드가 아니라서 그런지 DisplayFormat 이라는 속성은
나타나지도 않아여.... -_-;;
그리고 쿼리를 문자열로 만들어서 했거든요
QueryStr = 'Select Name, AMT.... 어쩌구 저쩌구'
Query1.Active := False;
Query1.SQL.Clear;
Query1.SQL.Add(QueryString);
Query1.Active := True;
이런식으로여..
저러고나니까 마스크에디트할라고 해도 속성이 나타나질 않아여..
어떻게 하면 텍스트로된 숫자를 천단위 구분할수 있을까여..
조언 부탁드리겠습니다
감사합니다.
Calc 필드를 한번이용해보세요...
OnCalcFields이벤트에서....
Calc필드를 추가... 가상의 필드를 하나 만드시는 거지요...
그 뒤에... 함수를 이용해서.... 그 필드에.... 3자리마다 ,를 찍는 함수를
만들어서.... 하게 되면... 문자형필드라도 ,를 찍을 수 가 있습니다...
with DataSet do
begin
FieldByName('Calc').AsString := '₩'(이건옵션) +
dispalyformat(StrTofloat (FieldByName('원래필드'));
end;
함수예....(이것은 숫자형에 대한 예입니다...)
이함수를 수정하시던지 하십시요...
function TForm1.dispalyformat(const pLength: Double): String;
var i, cntLen,totLen,chkLen : integer;
tmpStr,rntStr : String;
begin
tmpStr := floattoStr((pLength));
totLen := Length(tmpStr);
IF totLen > 3 Then
chkLen := totLen mod 3
Else
chkLen := 0;
IF totLen > 3 Then
begin
IF chkLen = 0 then
cntLen := Floor(totLen / 3) - 1
Else
cntLen := Floor(totLen / 3);
end
else
cntLen := 0;
rntStr :='';
for i := 1 to cntLen do
begin
rntStr := ',' + copy(tmpStr,totLen-2,3) + rntStr;
totLen := totLen - 3;
end;
rntStr := copy(tmpStr,1,totLen) + rntStr;
Result := rntStr;
end;