大概的想法是:利用一元数组arro表示access中的test表的8个列(id1..id8),二元数组arrt表示test表中8个列的一一组合(id1+id2,id1+id3...id7+id8)
然后利用i,j作循环,insert数据到新表中,其中数据包括test表中8个列的一一组合的名字,用arrt[i,j]来循环引用表示;另外还有组合的两列同为1时的求和值,用arro[j]或arro[i]来表示。
请高手指教,下面的代码错在哪里了,小弟新手,不胜感激!
procedure TForm1.Button3Click(Sender: TObject);
const arro :Array [1..8] of string = ('id1','id2','id3','id4','id5','id6','id7','id8');
var tempInt:string;
i:integer;
j:integer;
arrt :Array [1..8,1..8] of string;
begin
for i:=1 to 8 do
begin
for j:=1 to 8 do
begin
arrt[i,j]:=('+arro[i]+'+'+arro[j]+');
tempint:=arro[j];
with adoquery1 do
begin
close;
sql.Clear;
sql.add('insert into '+edit1.text+'(item ,num) select "arrt[i,j]", sum(tempint) from test where '+arro[i]+'=1 and '+arro[j]+'=1');
open;
end;
end;
end;
end;
然后利用i,j作循环,insert数据到新表中,其中数据包括test表中8个列的一一组合的名字,用arrt[i,j]来循环引用表示;另外还有组合的两列同为1时的求和值,用arro[j]或arro[i]来表示。
请高手指教,下面的代码错在哪里了,小弟新手,不胜感激!
procedure TForm1.Button3Click(Sender: TObject);
const arro :Array [1..8] of string = ('id1','id2','id3','id4','id5','id6','id7','id8');
var tempInt:string;
i:integer;
j:integer;
arrt :Array [1..8,1..8] of string;
begin
for i:=1 to 8 do
begin
for j:=1 to 8 do
begin
arrt[i,j]:=('+arro[i]+'+'+arro[j]+');
tempint:=arro[j];
with adoquery1 do
begin
close;
sql.Clear;
sql.add('insert into '+edit1.text+'(item ,num) select "arrt[i,j]", sum(tempint) from test where '+arro[i]+'=1 and '+arro[j]+'=1');
open;
end;
end;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
const arro :Array [1..8] of string = ('id1','id2','id3','id4','id5','id6','id7','id8');
var tempInt:string;
i:integer;
j:integer;
arrt :Array [1..8,1..8] of string;
str: string;
begin
for i:=1 to 8 do
begin
for j:=1 to 8 do
begin
arrt[i,j]:=(arro[i]+ '+'+arro[j]);//
tempint:=arro[j];
str := 'insert into result (item ,num) select '+arrt[i,j]+', sum('+tempint+') from test where '+arro[i]+'=1 and '+arro[j]+'=1 group by '+arrt[i,j]+'';//
with adoquery1 do
begin
close;
sql.Clear;
sql.add(str);
ExecSQL;//
end;
end;
end;
end;
http://topic.csdn.net/u/20080518/10/f031480e-b6a9-48db-b93e-3291aa202cb2.htmlsql.Clear;
sql.add('insert into '+edit1.text+'(item ,num) select "arrt[i,j]", sum(tempint) from test where '+arro[i]+'=1 and '+arro[j]+'=1');
open;改成:
sql.Clear;
sql.add('insert into '+edit1.text+'(item ,num) select '+arrt[i,j]+', sum('+tempint+') from test where '+arro[i]+'=1 and '+arro[j]+'=1 group by '+arrt[i,j]+'');
ExecSql;