要现实一个动态列的Grid.
格式如下:
行/列 2006-1-1 2006-1-2 2006-1-3 2006-1-4 2006-1-5
张三 XX
李四 XX
王五
..
..
格式如下:
行/列 2006-1-1 2006-1-2 2006-1-3 2006-1-4 2006-1-5
张三 XX
李四 XX
王五
..
..
解决方案 »
- 有没有人想赚外快?同时好久没有来了!顺便散点分给各位。
- 我要怎么获取用鼠标左键选定的memo里面的长字符串?
- 请教一个显示提示的问题。
- 我使用TMemoryStream创建了一个文件流,为什么写入数据时为什么会出现,它多出4个0,小弟的代码如下,请高手指教
- 100分求一问题,怎么使多个MPG文件合并成一个文件
- 请教,关于主进程创建子进程
- 怎样修改文本文件的文件名?马上给分!
- 请教各位,一个Form关闭的问题!
- 放分,顺便发点牢骚!
- 求Delphi XE7VCL源码
- 高手解决高手解决有没有办法呀同志们啦!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!救命啦救命啦救命啦救命啦
- 提取图像信息??急
Dcube.ocx 在哪有啊。在google,baidu上找不到啊。
I, BCount: Integer;
ADQB: TADOQuery;
begin
ADQB:=TADOQuery.Create(Self);
try
ADQB.Connection:=DataLand.HomeConn;
ADQB.SQL.Add('SELECT DISTINCT BNAME FROM MULTIHEADREPT ORDER BY BNAME');
ADQB.Open;
BCount:=ADQB.RecordCount;
with TADOQuery.Create(Self) do
try
Connection:=DataLand.HomeConn;
SQL.Add('CREATE TABLE REPTLIST(STREET VARCHAR(50)');
for I:=1 to BCount do
SQL.Add(',S'+IntToStr(I)+'Q1 FLOAT,S'+IntToStr(I)+'Q2 FLOAT,S'+IntToStr(I)+'Q3 FLOAT');
SQL.Add(')');
ExecSQL;
finally
Close;
Free;
end;
with TADOQuery.Create(Self) do
try
Connection:=DataLand.HomeConn;
SQL.Add('INSERT INTO REPTLIST(STREET) SELECT DISTINCT STREET FROM MULTIHEADREPT');
ExecSQL;
finally
Close;
Free;
end;
with TADOQuery.Create(Self) do
try
Connection:=DataLand.HomeConn;
for I:=1 to BCount do
begin
SQL.Clear;
SQL.Add('SELECT STREET,SUM(Q1) AS SQ1,SUM(Q2) AS SQ2,SUM(Q3) AS SQ3 INTO SQ FROM MULTIHEADREPT WHERE BNAME='+QuotedStr(ADQB.FieldByName('BNAME').AsString)+' GROUP BY STREET');
ExecSQL;
SQL.Clear;
SQL.Add('UPDATE REPTLIST,SQ SET S'+IntToStr(I)+'Q1=SQ1,S'+IntToStr(I)+'Q2=SQ2,S'+IntToStr(I)+'Q3=SQ3 WHERE REPTLIST.STREET=SQ.STREET');
ExecSQL;
SQL.Clear;
SQL.Add('DROP TABLE SQ');
ExecSQL;
ADQB.Next;
end;
finally
Close;
Free;
end;
ADQ.Open;
DBGEh.Columns.Clear;
DBGEh.Columns.Add;
DBGEh.Columns.Items[0].FieldName:='STREET';
DBGEh.Columns.Items[0].Width:=96;
ADQB.First;
for I:=0 to BCount-1 do
begin
DBGEh.Columns.Add;
DBGEh.Columns.Items[I*3+1].FieldName:='S'+IntToStr(I+1)+'Q1';
DBGEh.Columns.Items[I*3+1].Title.Caption:=ADQB.FieldByName('BNAME').AsString+'|Q1';
DBGEh.Columns.Items[I*3+1].Width:=72;
DBGEh.Columns.Add;
DBGEh.Columns.Items[I*3+2].FieldName:='S'+IntToStr(I+1)+'Q2';
DBGEh.Columns.Items[I*3+2].Title.Caption:=ADQB.FieldByName('BNAME').AsString+'|Q2';
DBGEh.Columns.Items[I*3+2].Width:=72;
DBGEh.Columns.Add;
DBGEh.Columns.Items[I*3+3].FieldName:='S'+IntToStr(I+1)+'Q3';
DBGEh.Columns.Items[I*3+3].Title.Caption:=ADQB.FieldByName('BNAME').AsString+'|Q3';
DBGEh.Columns.Items[I*3+3].Width:=72;
ADQB.Next;
end;
with TADOQuery.Create(Self) do
try
Connection:=DataLand.HomeConn;
SQL.Add('DROP TABLE REPTLIST');
ExecSQL;
finally
Close;
Free;
end;
finally
ADQB.Close;
ADQB.Free;
end;
2、建立动态临时表,字段数就是你取出的列数+名称列
3、将数据以此导入临时表
4、在Grid中动态添加列,列数就是表的字段数收工
我要显示的不是数据而是进度条。而且 这个进度条可以拖动的。