Between을 사용하여 한달동안의 합계금액을 구하려고 합니다.
SQL부분은 아래와 같습니다.
Close;
SQL.Clear;
SQL.Add('SELECT SUM(Account) as PartTotal');
SQL.Add('FROM Money');
SQL.Add('WHERE Kind = :v1 AND');
방법1: SQL.Add('Day BETWEEN ''00-09-01'' AND ''00-09-30''');
방법2: SQL.Add('Day BETWEEN :v2 AND :v3');
SQL.Add('Group BY Account');
ParamByName('v1').AsString := stringgrid1.Cells[i,0];
방법2: DecodeDate(Date, ny, nm, nd);
ParamByName('v2').AsDateTime := EncodeDate(ny, mm, 1);
ParamByName('v3').AsDateTime := EncodeDate(ny, mm, 31);
Open;
날짜를 직접 입력한 방법1에서는 Invaild modify request라고 00-09-30부분에서 Error가나고,
방법2에서는 EConvertError로 Invaild argument to date encode라고 Error가 발생합니다.
어떻게 해야할지...
> Between을 사용하여 한달동안의 합계금액을 구하려고 합니다.
> SQL부분은 아래와 같습니다.
>
> Close;
> SQL.Clear;
> SQL.Add('SELECT SUM(Account) as PartTotal');
> SQL.Add('FROM Money');
> SQL.Add('WHERE Kind = :v1 AND');
> 방법1: SQL.Add('Day BETWEEN ''00-09-01'' AND ''00-09-30''');
> 방법2: SQL.Add('Day BETWEEN :v2 AND :v3');
> SQL.Add('Group BY Account');
> ParamByName('v1').AsString := stringgrid1.Cells[i,0];
> 방법2: DecodeDate(Date, ny, nm, nd);
> ParamByName('v2').AsDateTime := EncodeDate(ny, mm, 1);
> ParamByName('v3').AsDateTime := EncodeDate(ny, mm, 31);
> Open;
>
> 날짜를 직접 입력한 방법1에서는 Invaild modify request라고 00-09-30부분에서 Error가나고,
> 방법2에서는 EConvertError로 Invaild argument to date encode라고 Error가 발생합니다.
> 어떻게 해야할지...
EConvertError는 서로 다른 데이터 타입을 비교 또는 대입할때 발생하는 에러입니다
먼저 Day의 필드 타입이 먼지 확인해 보세요..
제생각에는 타입을 date로 해두신거 같은데...
그러면
방법1: SQL.Add('Day BETWEEN '''+StrToDateTime('00-09-01')+''' AND '''+StrToDateTime('00-09-30')+'''');
이렇게 바꾸시길...^^
답이 되시길 빌겠습니다..