关于stringgrid有点问题呢:
比如有这样一个表:name sex age height study
a man 18 20 good
b women 20 18 bad
c man 18 19 cool
a man 21 22 very我这样写一个sql语句:
select name,sex,sum(age) as age,sum(height) as height from message where name='a'但需要作出这样一个判断,当sum(age) >sum(height) ,将sum(age) -sum(height) ,得到得差额插入到name='a'的那一行,age的那一列,而置height=0。如果sum(age) <sum(height) ,则将差额插入到name='a'的那一行,height的那一列,而置age=0.即是:
——————————————————————————————————————
name sex age height
-------------------------------------------
a man 0 3
-----------------------------------------------------------------------求求各位了,这个stringgrid对我来说太难了,:)
比如有这样一个表:name sex age height study
a man 18 20 good
b women 20 18 bad
c man 18 19 cool
a man 21 22 very我这样写一个sql语句:
select name,sex,sum(age) as age,sum(height) as height from message where name='a'但需要作出这样一个判断,当sum(age) >sum(height) ,将sum(age) -sum(height) ,得到得差额插入到name='a'的那一行,age的那一列,而置height=0。如果sum(age) <sum(height) ,则将差额插入到name='a'的那一行,height的那一列,而置age=0.即是:
——————————————————————————————————————
name sex age height
-------------------------------------------
a man 0 3
-----------------------------------------------------------------------求求各位了,这个stringgrid对我来说太难了,:)
select [name],sex
,Case WHEN sum(age)<sum(height) then 0 else (CASE when sum(age)>sum(height) then sum(age) -sum(height) end) end as age
,Case when sum(age)>sum(height) then 0 Else (CASE when sum(age)<sum(height) then sum(height)-sum(age) end) end as height
from message where name='a'
group by [name],sex
begin
close;
sql.Clear;
sql.Add('上面的SQL');
open;
end;
begin
close;
CommandText:= ‘上面的sql语句';
active := True;
stringgrid1.CleanupInstance;
First;
i := 1; stringgrid1.ColWidths[0] :=100;
stringgrid1.ColWidths[1] :=100;
stringgrid1.ColWidths[2] :=100;
stringgrid1.ColWidths[3] :=100;
while not Eof do
begin
for j :=0 to FieldCount - 2 do
begin
// stringgrid1.Cols[i].Add(Fields.Fields[j].AsString);
stringgrid1.Rows[i].Add(Fields.Fields[j].AsString);
end;
i := i + 1;
Next;
end;
begin
for j :=0 to FieldCount - 2 do
begin
// stringgrid1.Cols[i].Add(Fields.Fields[j].AsString);
stringgrid1.Rows[i].Add(Fields.Fields[j].AsString);
end;
i := i + 1;
Next;
end;
//显示标题
for i := 0 to FieldCount - 1 do
begin
stringgrid1.Rows[0].Add(Fields.Fields[i].FieldName);
end;end;
with ADODataSet1 do
begin
close;
CommandText:= ‘上面的sql语句';
active := True;
stringgrid1.CleanupInstance;
First;
i := 1; stringgrid1.ColWidths[0] :=100;
stringgrid1.ColWidths[1] :=100;
stringgrid1.ColWidths[2] :=100;
stringgrid1.ColWidths[3] :=100;
while not Eof do
begin
for j :=0 to FieldCount - 2 do
begin
// stringgrid1.Cols[i].Add(Fields.Fields[j].AsString);
stringgrid1.Rows[i].Add(Fields.Fields[j].AsString);
end;
i := i + 1;
Next;
end;
//显示标题
for i := 0 to FieldCount - 1 do
begin
stringgrid1.Rows[0].Add(Fields.Fields[i].FieldName);
end;end;
你怎么弄都行吧