大家看下面的代码
为什么老是只是插入前二个数据而后面的数据全都是空
这是怎么回事
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;var m : integer;
var kk :array[0..8] of variant;
var insersql:string;
beginadodataset1.First;
while not adodataset1.eof do
begin
for i:=0 to adodataset1.recordcount-1 do
begin for j:=0 to adodataset1.fieldcount-1 do
begin
kk[j]:=adodataset1.fields[j].AsVariant ;
end;
//插入数据到ACCESS中
adoquery1.close;
adoquery1.sql.clear;
insersql:='insert into try (au_lname,au_fname) values('''+kk[1]+''','''+kk[2]+''')';
adoquery1.SQL.Add(insersql);
adoquery1.ExecSQL ; for m:=0 to adodataset1.fieldcount-1 do
begin
kk[m]:='';
end;
adodataset1.next; end; end;
end;
谢谢海龙大哥刚才告诉我数据集的问题可是这又是怎么一回呢??
为什么老是只是插入前二个数据而后面的数据全都是空
这是怎么回事
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;var m : integer;
var kk :array[0..8] of variant;
var insersql:string;
beginadodataset1.First;
while not adodataset1.eof do
begin
for i:=0 to adodataset1.recordcount-1 do
begin for j:=0 to adodataset1.fieldcount-1 do
begin
kk[j]:=adodataset1.fields[j].AsVariant ;
end;
//插入数据到ACCESS中
adoquery1.close;
adoquery1.sql.clear;
insersql:='insert into try (au_lname,au_fname) values('''+kk[1]+''','''+kk[2]+''')';
adoquery1.SQL.Add(insersql);
adoquery1.ExecSQL ; for m:=0 to adodataset1.fieldcount-1 do
begin
kk[m]:='';
end;
adodataset1.next; end; end;
end;
谢谢海龙大哥刚才告诉我数据集的问题可是这又是怎么一回呢??
begin
kk[j]:=adodataset1.fields[j].AsVariant ;
end;
// 注意你的 var kk :array[0..8] of variant; 只有9的长度 小心越界..你的代码很乱....根本也不用弄的这么复杂
var
i,j:integer;
str1,str2:String;
insersql:string;
begin
if not adodataset1.active then showmessage('closeddataset');
if adodataset1.recordcount =0 then showmessage('nullresultset');
adodataset1.First;
while not adodataset1.eof do
begin
//插入数据到ACCESS中
adoquery1.close;
adoquery1.sql.clear;
insersql:='insert into try (au_lname,au_fname) values(adodataset1.fields[1].value,adodataset1.fields[2].value)';
adoquery1.SQL.Add(insersql);
adoquery1.ExecSQL ; adodataset1.next;
end;
end;这段代码没有测试过,SQL有可能不对,但是大致应该是这个意思。