想建立一个表,并插入数据。表的列名我想用数组变量gain[i]来生成8列,并且插入除了等于max_gain的7列数据。下面写的代码是乱写的,仅仅是想描述一下思路,请大侠指教,应该如何写这个代码。
......
for i:=1 to 8 do
begin
with adoquery1 do
begin
close;
sql.clear;
sql.add('create table O11 ('+gain[i]+' int)');
execsql;
end;
if max_gain<>gain[i] then
begin
with adoquery1 do
begin
close;
sql.clear;
sql.add('insert into O11 ('+gain[i]+') select '+gain[i]+' from test where '+max_gain+'=1');
execsql;
end;
end;
......
......
for i:=1 to 8 do
begin
with adoquery1 do
begin
close;
sql.clear;
sql.add('create table O11 ('+gain[i]+' int)');
execsql;
end;
if max_gain<>gain[i] then
begin
with adoquery1 do
begin
close;
sql.clear;
sql.add('insert into O11 ('+gain[i]+') select '+gain[i]+' from test where '+max_gain+'=1');
execsql;
end;
end;
......
解决方案 »
- delphi 判断数据库主键是否重复。id.text,user.text中文提示不能为空
- 在不知道字段多少的情况下********************************
- 这个函数是什么意思呀,以前从来没有遇到过
- 我在调用dll时,一开始执行是对的,但是执行多几次以后就报错
- 螃蟹,进来接分,谢谢
- 100分!!!哪位告诉我在哪下载reportbuilder for delphi6.0
- 请问在DELPHI7中怎样使用在DELPHI6中的报表控件!DELPHI7当中可以安装吗?
- sqlServer7.0数据库,一个查询排序后,其它机子特别慢?
- treeview的问题,请各位帮给以解决!
- 有关属性(property)的一个小问题。
- dll中窗体的调用出问题了.菜鸟请叫了.
- 这个SQL条件语句该如何写?
每条记录分别只有一列有值
begin
close;
sql.clear;
sql.add('create table tO11');
for i:=1 to 8 do
begin
sql.add(gain[i]+ ' int');
end;
sql.add(')');
execsql;
end;
我这也是乱写的insert 语句的自己写吧
乱不要紧,但大体意思可别写错了哦还有偶是二楼如果每条记录都有八条记录的话
sql1:='';
sql2:='';
for i:=1 to 8 do
begin
if i=8 then sql1:=sql1+gain[i]
else sql1:=sql1+gain[i]+',';
end; sql2:= ' insert into tO11 ('+sql1+') select '+sql1+' from test where 条件' sql.add(sql2);
const gain:array[1..8]of string=('id1','id2','id3','id4','id5','id6','id7','id8');
var i:integer;
max_gain:string;
begin
max_gain:='id5';
with adoquery1 do
begin
close;
sql.clear;
sql.add('create table tO10');
execsql;
end;
for i:=1 to 8 do
begin
if gain[i]<>max_gain then
begin
with adoquery1 do
begin
close;
sql.clear;
sql.add('alter table tO10 add '+gain[i]+' int');
execsql;
end;
end;
end;
end;
试过你的了 也不行啊
const gain:array[1..8]of string=('id1','id2','id3','id4','id5','id6','id7','id8');
var
i : integer;
sColName,sColValue : string;
begin
sColName := '';
for i := 1 to high(gain) do
begin
sColName := sColName + gain[i] + ' int, ';
sColValue := sColValue + inttostr(i) + ', ';
end;
sColName := copy(sColName,1,length(sColName) - 2);
sColValue := copy(sColValue,1,length(sColValue) - 2);
//adoquery1设置自行处理
with adoquery1 do
begin
close;
sql.clear;
sql.text := 'create table tO10(' + sColName + ');' +
'insert into tO10 select ' + sColValue;
execsql;
end;end;
在这里可以找找http://japee.com.cn/jew/bbs.aspx