아래 예제 보고 틀린데 있으면 좀 고쳐주세요
Group by절에서 뭔가 잘못된거 같거든요
부탁드립니다
procedure TForm1.FormCreate(Sender: TObject);
var
m_sUserName: string;
m_sUseCom: string;
m_sUseProg: string;
m_ii: integer;
m_jj: integer;
m_dTemp : TDate;
begin
With Query1 do
begin
Close;
SQL.Clear;
SQL.Add('Select *');
SQL.Add('From DefUser D');
Open;
stringGrid.Colcount := recordCount +1;
First;
m_ii := 1;
While not Eof do
begin
stringGrid.Cells[m_ii,0] := FieldByName('UserName').AsString;
inc(m_ii);
Next;
end;
StringGrid.RowCount := Trunc(EndDate.Date-StartDate.Date +1);
m_dTemp := StartDate.Date;
for m_ii := 1 to StringGrid.RowCount do
begin
stringGrid.Cells[0,m_ii] := DateToStr(m_dTemp);
m_dTemp := m_dTemp + 1;
end;
for m_ii := 1 to stringGrid.ColCount do
Close;
SQL.Clear;
SQL.Add('Select StartDate, Sum(Usetime) TotUseTime');
SQL.Add('From RecUsed R, defUser D');
SQL.Add('where (startDate Between startDate and EndDate) and (UserName=:pUserName)');
SQL.Add('and (R.SerialNo=D.SerialNo)');
SQL.Add('GROUP BY startDate');
ParamByName('pUserName').AsString:= stringGrid.Cells[1,m_ii];
Open;
begin
for m_ii := 1 to StringGrid.RowCount do
if Query1.Locate('StartDate',StrToDate(stringGrid.Cells[1,m_ii]),[]) then
StringGrid.Cells[1,m_ii]:=IntToStr(FieldByName('UseTime').value)
else stringGrid.cells[1,m_ii] :='0';
end;
//m_ii := 1;
end;
end;
end.